Corel FORUM
Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych

CorelDRAW - grafika wektorowa - Przeniesienie koloru wypełnienia na kolor konturu

neolech - 10 Listopad 2015, 20:25
Temat postu: Przeniesienie koloru wypełnienia na kolor konturu
Witam,
korzystam z Corela w wersji x3.
Mam taki dość błahy problem, jednak nie mogę sobie z nim za nic poradzić, ani nigdzie znaleźć odpowiedzi.
Chodzi o to, że mam w jednym pliku kilkadziesiąt obiektów i każdy z nich ma inny kolor wypełnienia, jednak żaden nie ma konturu. Czy da się jakoś tak zrobić żeby zaznaczyć wszystkie na raz i ustawić tak, aby każdy miał kolor konturu identyczny jak kolor jego wypełnienia? Nie za bardzo mam czas, żeby w każdy obiekt wchodzić osobno i ręczni wpisywać mu kolor.

Jeśli to bardzo proste pytanie, to proszę o wyrozumiałość dopiero się uczę.
Dzięki z góry za pomoc!

Pozdrawiam!

Cysorz - 10 Listopad 2015, 20:42

Użyj po prostu polecenia "Znajdź i zamień".
neolech - 10 Listopad 2015, 20:43

Dzięki za szybką odpowiedź.
Gdzie mam szukać tej opcji?

neolech - 10 Listopad 2015, 20:51

znalazłem tą opcję w edycji, ale tam można tylko znaleźć odpowiedni kolor i zamienić go na inny pojedynczy kolor. Mi chodzi o to żeby wybrać 30 obiektów naraz (z czego każdy ma inne wypełnienie) i zamienić ich kontur którego teraz nie ma, na kontur w kolorze wypełnienia.
chezare - 10 Listopad 2015, 23:29

Plik z dołączonego archiwum zapisz w podkatalogu …Corel\Corel Graphics…\Draw\GMS, tam gdzie zainstalowałeś Corela, standardowo to jest Program Files.
W pliku jest taka procedura

Kod:
Sub Kontur_jak_wypelnienie()
Dim s As Shape
Dim kw As New Color
Optimization = True
On Error Resume Next
For Each s In ActiveDocument.ActivePage.FindShapes(cdrshape)
s.CreateSelection

kw.CopyAssign s.Fill.UniformColor
ActiveSelection.Outline.SetProperties Color:=kw
Next s
Optimization = False
ActiveWindow.Refresh
End Sub


Ta procedura ustawia na bieżącej stronie kolor konturu obiektu na taki sam jakim jest wypełniony. Nadanie koloru konturowi powoduje jego utworzenie jeśli go nie było z domyślnymi parametrami (włosowy i linia ciągła).
Gdybyś chciał np. regulować grubość konturu, to trzeba by dodać linię
s.CreateSelection
ActiveSelection.Outline.SetProperties 0.001, OutlineStyles(0)
kw.CopyAssign s.Fill.UniformColor

0.001 to grubość (0,025 mm, włosowy ma 0.003), a outlinestyles(0), to linia ciągła.

Z menu Narzędzia wybierz Visual Basic->Uruchom. W wyświetlonym okienku rozwiń listę Makro w… i znajdź GlobalMacros(kol_kont_jak_wyp.gms) i kliknij przycisk Start.
Ta procedura nadaje kontur w takim kolorze jak wypełnienie wszystkim obiektom na stronie, jak byś chciał stosować ją np. tylko do zaznaczonych obiektów, to trzeba by procedurę zmodyfikować.

Cysorz - 10 Listopad 2015, 23:55

Jeżeli mają jakąkolwiek wspólną cechę (np. ilość węzłów, są kwadratem/prostokątem itp.) to bez problemu: kliknij po wyszukiwaniu "zaznacz wszystkie" i możesz zmienić właściwości wszystkich naraz.
neolech - 12 Listopad 2015, 13:51

@chezare dzięki! o to chodziło :)
Artur Miernik - 12 Listopad 2015, 15:01

Moim zdaniem to powinno zostać przeniesione do FAQ.
kadoesdoi - 7 Marzec 2023, 15:25

Dzięki Chezare za te makro. Działa idealnie na x7.

Mam tylko taki problem, że pracuję teraz na 2021 i uruchomienie makra wywala Corela.
Macie jakiś pomysł czemu?

Martin Nez - 23 Marzec 2023, 21:52

Co prawda nie sprawdzałem na 2021, ale tutaj nieco uproszczona wersja, może będzie działać, bo nie widzę w kodzie powodu dla którego by nie miał.
Kod:
Sub neolech()
    On Error Resume Next
    Dim s As Shape
    For Each s In ActiveDocument.ActiveLayer.Shapes.All
        If s.Outline.Width <> 0 Then s.Outline.SetProperties , , s.Fill.UniformColor
    Next
End Sub

Pozdr,
MN


Powered by phpBB modified by Przemo © 2003 phpBB Group