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

Makra - Prośba o makro - Przecinanie się linii

ozi - 25 Styczeń 2013, 12:38
Temat postu: Prośba o makro - Przecinanie się linii
Witam,

Potrzebne jest makro, które pozwoli na określanie sposobów przecinania się linii. Generalnie chodzi o schematy (np. elektryczne), gdzie określone połączenia lub ich brak skutkuje odpowiednim sposobem prezentacji przecięcia. Na przykładzie (według obrazka z załącznika) „a” i „b” pomiędzy liniami istnieje połączenie natomiast w przykładzie „c” i „d” nie istnieje. O ile przykład „c” nie stanowi żadnego problemu, o tyle lepiej czyta się schemat, kiedy brak połączenia jest przedstawiony jak w przykładzie „d”.

Na dzień dzisiejszy, mając kilkadziesiąt pozycji (symboli dokładnie) połączonych liniami, na każde połączenie trzeba rysować lub kopiować kropkę, a brak połączenia realizować przez dodanie dwóch węzłów, przekształcając nowy odcinek do krzywej i umieszczeniu go na przecięciu. To już jest upierdliwe. Co dopiero, kiedy kilka symboli zmienia położenie i „węzły” trzeba poprzenosić .
Tak po prawdzie to jest potrzebna tylko realizacja przykładu „d” (bo „a” oraz „b” występują u mnie tylko w obrębie samego symbolu, który nie jest skomplikowany i jest praktycznie niezmienny – tu można się raz pomęczyć i tyle)
Widzę to tak, że linie o określonej grubości/kolorze/rodzaju (lub łączniki zamiast linii, choć tych nie stosuję) zawsze przecinają się w sposób „d” i zawsze łuk tworzy się np. na linii poziomej (linie dla których zachodzi potrzeba stworzenia makra mogą biec/być łamane tylko w poziomie lub pionie). Po przeniesieniu znów analiza przecięć, usunięcie zbędnych węzłów i wstawienie łuku w miejscu przecięcia. Realizacja z automatu lub wywołanie przyciskiem.

Lub można by też np. zaznaczyć dwie linie przecinające się i kliknąć „połączenie” „brak połączenia.” Najistotniejsza sprawa, to żeby po przenoszeniu linii zmiany na przecięciach szły z automatu (właściwie z wywołania „aktualizuj”), żeby nie trzeba było znów zaznaczać linii i określać sposobów przecięć.

Ufff… mam nadzieję, że wszystko jasne i że takie makro jest możliwe do zrobienia przy kawie do śniadania ;)
Pozdrawiam

Stipa - 28 Styczeń 2013, 10:57

Nie znam się na VBA macros, robię makra w inny sposób i ze swej strony mogę powiedzieć tylko tyle. Gdybym ja miał robić tę robotę, to potrafiłbym to zautomatyzować częściowo czyli: za każdym razem wyszukuję oczami miejsc przecięć, gdzie mają być mostki, tam jadę kursorem i:
1) rysuję tam kółko (ewentualnie kółko już mam narysowane i przeciągam je na przecięcie linii)
2) wciskam klawisz ~ i corel resztę robi sam w 2 sekundy

Zamiast punktu 1) można by ewentualnie poszukać makra, które rysuje kółko o zadanym wymiarze o środku w miejscu kursora. Wtedy tylko jadę myszką na miejsce przecięcia i wciskam ~. I tak dla każdego przecięcia.

Jeśli takie rozwiązanie cię satysfakcjonuje, to odpisz, napiszę więcej.

$tipa

ozi - 28 Styczeń 2013, 15:27

Generalnie każdy sposób na ułatwienie roboty jest cenny :)
Stipa - 29 Styczeń 2013, 12:13

Okazało się, że jest to trochę bardziej upierdliwe, niż myślałem. Obejrzyj filmik. Cała sprawa polega na tym, żeby umieścić kółko na przecięciu lini - trybie przyciągaj do obiektów jest to łatwe. A potem nagrać sekwencję myszy-klawiszy, która doprowadzi do utworzenia mostka, i odpalać ją jednym klawiszem, a ona się wykona w 2 sekundy. Niestety Corel nie realizuje wtedy akcji wykonanych w trybie węzłów. Czemu? Nie wiem. Na filmiku pokazane jest najpierw nagrywanie akcji, potem jej odtworzenie na pełnej szybkości - jest źle, potem odtworzenie na szybkości z jaką była nagrana - jest dobrze. A więc należało by nagrać cztery oddzielne akcje:
1. Od zoomowania do F10
2. Operacje wykonane w trybie węzłów
3. Od rozdzielenia krzywej do połączenia z kreską
4. zespawanie węzłów

Akcje 1 i 3 odpalać na pełnej szybkości, a 2 i 4 w szybkości nagrywania.
Jeśli się im zdefiniuje hotkeya typu Alt1, Alt2, Alt3 i Alt4, to można zdefiniować piątą akcję, którą się wyedytuje w okienku edycji i tam zadeklaruje wciskanie po kolej Alt1 Alt2 Alt3 Alt4. I wtedy w miarę szybko się to wszystko wykona. Nic innego nie umiem wymyślić.
Corel po prostu sobie zaleciał z tym nierealizowaniem operacji na węzłać na full szybkości.

Na początku to wszystko może się wydać skomplikowane, a poprawne nagranie akcji zająć wiele czasu, ale raz nagrana sekwencja służyć może przez wiele lat. To się opłaca.

Stipa - 29 Styczeń 2013, 12:41

No tak, jeszcze link do filmiku
http://www.voila.pl/424/bz89j/
To moja pierwsza taka akcja, wiec, filmik ma aż 70 MB, dlatego jest na voila.pl, Na dole pokazuje się, co właśnie wciskam myszą czy też klawiaturą.

Stipa - 5 Luty 2013, 11:45

Okazuje się, że moją metodą można to jednak robić na pełnej szybkości, jeśli się trochę pomyśli. Tu masz filmi 24 MB
http://www.voila.pl/302/jss8b/
Jako że program pokazujący wciskane klawisze nie pokazuje tyldy, którą uruchamiam nagranego macrosa, to można odnieść wrażenie, że przyspieszenie akcji bierze się nie wiadomo skąd.
Ale najważniejsze, że działa. Tyle tylko, że nadal operacje w trybie węzłów nie do końca działają, więc po połączeniu półokręgu z kreską węzły się "nie spawają". Trzeba by użyć dostępnego na oberonie makra do zespalania krzywych.

ozi - 12 Luty 2013, 13:49

Dzięki za filmiki. Pobawię się rozwiązaniem. Wydaje mi się jednak, że bez dedykowanej aplikacji do tworzenia schematów itp wszystko w Corelu będzie realizowane półśrodkami :/.
chezare - 15 Luty 2013, 15:13

Dobrze Ci się Ozi wydaje, Corel nie jest do rysowania schematów. Oczywiście jakiś pojedynczy obrazek można narysować jeśli jednak ma być ich więcej to musisz się wyposażyć w przeznaczony do tego celu soft.
maroQ - 12 Lipiec 2013, 18:17

ozi napisał/a:
Potrzebne jest makro, które pozwoli na określanie sposobów przecinania się linii. Generalnie chodzi o schematy (np. elektryczne), gdzie określone połączenia lub ich brak skutkuje odpowiednim sposobem prezentacji przecięcia. Na przykładzie (według obrazka z załącznika) „a” i „b” pomiędzy liniami istnieje połączenie natomiast w przykładzie „c” i „d” nie istnieje. O ile przykład „c” nie stanowi żadnego problemu, o tyle lepiej czyta się schemat, kiedy brak połączenia jest przedstawiony jak w przykładzie „d”.

Punkt "d" jest przeokropnym sposobem prezentacji przecięcia na schematach elektronicznych (chyba w PSpice się go używało, a napewno w crococlips). Lepszy jest "c", stosowany miedzy innymi w Eagle, Protel (obecnie Altium). Kiedyś zdarzyło mi się robić schematy elektroniczne w Micrografx Designerze (obecnie Corel Designer) ale to była niepotrzebna zabawa. Lepiej wgrać dedykowany program który przy okazji może zaprojektować płytkę drukowaną bez potrzeby ręcznej zabawy.
Jak chcesz darmowy program to spróbuj KiCAD jest całkiem niezły, chociaż trzeba się trochę na niego przestawić. Zresztą w razie potrzeby zerknij na elektroda.pl tam jest sporo innych programów opisanych.
To co piszę dotyczy bardziej elektroniki którą się zajmuję niż elektryki od której trzymam się z daleka.

ozi napisał/a:
możliwe do zrobienia przy kawie do śniadania

Przy kawie niemożliwe do zrobienia... ja nie pijam kawy do śniadania :P
Natomiast faktycznie trzeba by się trochę narobić by to zrobić z przycisku lub tak przyjemnie jak w programach do schematów elektronicznych. Przecięcia owszem da się wykrywać z makra, ale określenie gdzie ma być lub nie przecięcie nie jest takie proste. Łatwiej by było zrobić symbol przecięcia i takowy wstawiać w dane miejsce np. biała kreska a nad nią półkole i odpowiednio ustawiamy obiekty jeden nad drugim i sprawa załatwiona. Z makra było by trochę pracy.


Powered by phpBB modified by Przemo © 2003 phpBB Group