Problem z wypełnieniem kształtu? |
Autor |
Wiadomość |
TheMan258
Początkujący TheMan258
Wersja CorelDRAW: x5
Wiek: 33 Dołączył: 22 Lut 2021 Posty: 14 Skąd: Kraków
|
Wysłany: 27 Styczeń 2024, 19:16 Problem z wypełnieniem kształtu?
|
|
|
Witam,
Dawno się nie odzywałem, ponieważ dotychczas radziłem sobie ze wszystkim samodzielnie. Jednak teraz napotkałem problem, z którym nie potrafię sobie poradzić. Kiedyś otrzymałem od klienta plik z topperem, i moje zdziwienie było ogromne, gdy próbowałem go wypełnić kolorem – wypełniał się całościowo zamiast tylko liter. Z ciekawości próbowałem zamykać ścieżki później zacząłem korzystać z różnych narzędzi, takich jak CurveWorks czy Cadintools, ale niestety, bezskutecznie . Szukałem rozwiązania w Internecie, lecz bez rezultatu (albo może źle szukałem 😉). Pojawia się także problem z plikami DXF. Wszystkie importowane z CADA kształty są praktycznie pootwierane. Z topperem, podobnym do tego załączonego, można poradzić sobie np. trasowaniem, ale gdy pojawi się potrzeba otwarcia pliku z CADA, sytuacja staje się mniej radosna. Czy istnieje jakiś sposób, na przykład przy użyciu makra który pozamyka otwarte ścieżki. Spotkaliście się z czymś takim kiedykolwiek W załączniku przesyłam wspomniany plik.
Podgląd.png
|
Pobierz Plik ściągnięto 308 raz(y) 157.03 KB |
Plik próbny.cdr Dla chętnych przesyłam plik z wspomnianym topperem którego nie mogę wypełnić. |
Pobierz Plik ściągnięto 193 raz(y) 32.22 KB |
|
|
|
|
|
Oganesson
Bywalec
Pomógł: 9 razy Dołączył: 07 Sty 2017 Posty: 24 Skąd: LonKra
|
Wysłany: 28 Styczeń 2024, 12:51
|
|
|
Użyj narzędzia "smart fill tool" (inteligentne wypełnienie) do wypełniena a będziesz miał linie wypełnione tak jak po prawej. |
|
|
|
|
TheMan258
Początkujący TheMan258
Wersja CorelDRAW: x5
Wiek: 33 Dołączył: 22 Lut 2021 Posty: 14 Skąd: Kraków
|
Wysłany: 28 Styczeń 2024, 22:07
|
|
|
Oganesson napisał/a: | Użyj narzędzia "smart fill tool" (inteligentne wypełnienie) do wypełniena a będziesz miał linie wypełnione tak jak po prawej. |
Bardzo dziękuję za odpowiedź Człowiek codziennie się czegoś uczy nowego. W wolnym czasie pomyślę nad stworzeniem makra który wypełnia w ten sposób otwarte obiekty |
|
|
|
|
Martin Nez
Doradca Grafik?
Wersja CorelDRAW: 2019
Pomógł: 14 razy Dołączył: 29 Sty 2011 Posty: 114 Skąd: Czmoń
|
Wysłany: 29 Styczeń 2024, 20:19
|
|
|
To nie problem z rozłączonymi węzłami - rozłączone są małe elementy: nad "n" w "Komunia" oraz w środku "a" w "Święta". To częsty błąd Corela, ja mam takie makro do radzenia sobie z nim:
Kod: | Sub zalej()
' sprawdzenie czy coś zostało zaznaczone
If ActiveSelection.Shapes.Count = 0 Then
MsgBox ("Zaznacz obiekt(y).")
Exit Sub
End If
Dim s As Shape
For Each s In ActiveSelectionRange
If s.Type = cdrGroupShape Then
For Each ss In s.Shapes
If ss.FillMode = cdrFillWinding Then ss.FillMode = cdrFillAlternate
Next
Else
If s.FillMode = cdrFillWinding Then s.FillMode = cdrFillAlternate
End If
Next s
End Sub |
Należy zaznaczyć obiekt z takim błędem i uruchomić skrypt. Działa z obiektami i jednopoziomowymi grupami (tylko z takich korzystam, więc nie kombinowałem z innymi).
Pozdr,
MN |
|
|
|
|
TheMan258
Początkujący TheMan258
Wersja CorelDRAW: x5
Wiek: 33 Dołączył: 22 Lut 2021 Posty: 14 Skąd: Kraków
|
Wysłany: 1 Luty 2024, 22:56
|
|
|
Martin Nez napisał/a: | To nie problem z rozłączonymi węzłami - rozłączone są małe elementy: nad "n" w "Komunia" oraz w środku "a" w "Święta". To częsty błąd Corela, ja mam takie makro do radzenia sobie z nim:
Kod: | Sub zalej()
' sprawdzenie czy coś zostało zaznaczone
If ActiveSelection.Shapes.Count = 0 Then
MsgBox ("Zaznacz obiekt(y).")
Exit Sub
End If
Dim s As Shape
For Each s In ActiveSelectionRange
If s.Type = cdrGroupShape Then
For Each ss In s.Shapes
If ss.FillMode = cdrFillWinding Then ss.FillMode = cdrFillAlternate
Next
Else
If s.FillMode = cdrFillWinding Then s.FillMode = cdrFillAlternate
End If
Next s
End Sub |
Należy zaznaczyć obiekt z takim błędem i uruchomić skrypt. Działa z obiektami i jednopoziomowymi grupami (tylko z takich korzystam, więc nie kombinowałem z innymi).
Pozdr,
MN |
Dopiero teraz znalazłem czas na odpisanie... Super bardzo dziękuję to 100% rozwiązuje problem z wypełniem Jak zacząłem drążyć temat to znalazłem podobne przypadki na zagranicznych forach, ale tam też radzili żeby użyć "smartfill" tak jak kolega wyżej poradził. Na szybko coś takiego napisałem. Kod: | S.GetPosition x, y
Set s1 = S.CustomCommand("Boundary", "SmartFill", x, y, Nothing, 0.003, Nothing) | I problem w tym, że bazuje ono na współrzędnych kursora i po dodaniu pętli raz wypełnia prawidłowo a raz nie. Więc zatem nie pozostaje mi nic innego jak jeszcze raz podziękować za poświecenie czasu i powyższe macro |
|
|
|
|
Sparkman
Początkujący
Wersja CorelDRAW: Corel X6
Dołączył: 17 Kwi 2019 Posty: 5 Skąd: Wrocław
|
Wysłany: 14 Luty 2024, 11:15
|
|
|
W przypadku tego pliku wystarczyło użyć funkcji Reverse Direction do któregoś z węzłów zewnętrznej pętli. Nie wiem czemu ale Coreldraw ma czasem ma problem z poprawnym wypełnieniem takich obiektów.
Oczywiście warto też usunąć kilka małych elementów, o których wspomniano wcześniej.
Ja do takiego czyszczenia używam starego macra WX Tools / selectSmalObjects, ale to w Corel X6. |
|
|
|
|
|