Prośba o prosty skrypt |
Autor |
Wiadomość |
zyzio
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 6 Czerwiec 2011, 17:09 Prośba o prosty skrypt
|
|
|
Witam serdecznie wszystkich Użytkowników. Jestem pewny, że dla osób które się orientuja w WB nie będzie to wielkie wyzwanie a mianowicie chciałbym prosić o pomoc w napisaniu skryptu, który będzie odnajdywał obiekty "wymiar" i zmieniał zarówno kolor linii jak i tekstu który go tworzy na 100% magenta. W tej chwili pracuję na X5. Miałem nadzieję, że uda mi się to ogarnac recorderem ale jednak trzeba będzie napisać ręczne jak sadzę.
Z góry wielkie dzięki[/code] |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 7 Czerwiec 2011, 05:49
|
|
|
Keyzetman, tak opisałeś zadanie, że nie wiadomo o co chodzi?
Czy WB to to samo co VBA? Jeśli się dobrze orientuję, to nie ma obiektów wymiar, prędzej wymiar jest jedną z właściwości obiektu. Później piszesz o tekście, czy ten wymiar, to wielkość fontu w napisie? Czy trzeba zmienić kolor napisów, o określonej wielkości, bo jeśli tak, to nie potrzebne do tego żadne makro. |
|
|
|
|
zyzio
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 7 Czerwiec 2011, 08:56
|
|
|
VBA to to samo pewnie źle się wyraziłem. Chodzi dokładnie o obiekt wymiarowania lecz w menadżerze obiektów widnieje jako "Wymiar". oraz tekst opisujący wartość tegoż wymiaru jak na screenie w załączeniu.
wymiar.gif
|
Pobierz Plik ściągnięto 792 raz(y) 63.27 KB |
|
|
|
|
|
wawel
Ekspert wawel
Pomógł: 261 razy Dołączył: 30 Mar 2008 Posty: 2143 Skąd: podgorze
|
Wysłany: 7 Czerwiec 2011, 11:18
|
|
|
W Corelu dobrze dziala funkcja znajdz tam wskazujesz wymiar i program znajduje wszystkie wymiary, a potem klikasz na palecie z kolorami i wszystkie te obiekty wypelniasz hurtem takim kolorem jak chcesz. Wypelnienie dziala dla tekstu, a wypelnienie konturu dla lini wymiaru.
pozdr. |
|
|
|
|
zyzio
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 7 Czerwiec 2011, 11:26
|
|
|
Właśnie tak to robiłem jak pracowaliśmy w firmie na X3. Niestety w X5 można tym szybkim sposobem podmienić tylko kolor linii natomiast tekst trzeba zaznaczać oddzielnie :( |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 7 Czerwiec 2011, 21:50
|
|
|
Przed chwilą napisałem, ze Corel w nowych wersjach "ulepszył" obsługę gifów, a teraz jeśli to prawda co pisze Keyzetman, "ulepszył" kolejną dobrze działającą rzecz. Odnoszę wrażenia, że każda kolejna wersja jest coraz gorsza. |
|
|
|
|
maroQ
Doradca
Pomógł: 16 razy Wiek: 40 Dołączył: 08 Lut 2011 Posty: 117 Skąd: Kalisz
|
Wysłany: 1 Lipiec 2011, 19:57 Re: Prośba o prosty skrypt
|
|
|
keyzetman napisał/a: | będzie odnajdywał obiekty "wymiar" i zmieniał zarówno kolor linii jak i tekstu który go tworzy na 100% magenta |
Nie da się tak łatwo wykryć który obiekt tekst (cdrTextShape) ma wymiar (cdrLinearDimensionShape). Należało by ułatwić programowi znalezienie tego "wymiaru" wśród "niewymiarów". Do tego celu służy makro NazwijWymiar(). Klikasz na wymiar i włączasz makro lub ręcznie nadaje nazwę "wymiar". Jak już masz nazwane wszystkie "wymiary" to teraz uruchamiasz makro KolorujWymiar() i dostajesz to czego chciałeś.
Kod: | Sub KolorujWymiar()
Dim s As Shape
For Each s In ActivePage.Shapes
If s.Type = cdrTextShape And s.Name = "wymiar" Then
s.Fill.ApplyUniformFill CreateCMYKColor(0, 100, 0, 0)
End If
If s.Type = cdrLinearDimensionShape Then
s.Outline.SetProperties Color:=CreateCMYKColor(0, 100, 0, 0)
End If
Next s
End Sub
Sub NazwijWymiar()
If ActiveShape Is Nothing Then Exit Sub
If ActiveShape.Type <> cdrTextShape Then Exit Sub
ActiveShape.Name = "wymiar"
End Sub
|
P.S. VBA to nie skrypt. Corel posiada coś takiego jak skrypty Corela które oprogramowuje się inaczej niż makra VBA więc nazwanie makra skryptem w tym przypadku jest niewłaściwe. Zresztą makro jest po części składowane jako coś w rodzaju binarki lub raczej jak .class w javie, więc nie jest to skrypt który z definicji jest otwartym kodem. Teoretycznie skryptem można nazwać kod PHP, ale tam też jest to nadużycie gdyż są 2 główne techniki pisania programików w php tj. skryptowa (jak w SSI) oraz "normalna" tj. pisanie programów tak jak w C, C++ czy VB tj. nie mieszamy kodu html z kodem php. No ale to tylko tak na marginesie. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 1 Lipiec 2011, 21:42
|
|
|
Nie jestem taki pewny czy kompilowany jest w jakiś sposób plik do którego zapisywane jest makro czy też kod tego makra. Obawiam się, że makro jest tłumaczone w momencie wykonywania, choć głowy nie dam.
MaroQ, muszę niestety stwierdzić, że mnie strasznie osłabiłeś tym pomysłem z nazywaniem pewnych elementów żeby im później zmienić kolor. Równie dobrze zanim uruchamiać makro można za każdym razem klikać kolorowy kwadracik |
|
|
|
|
Wojtek Kowalews
Znawca ketjow
Pomógł: 13 razy Wiek: 67 Dołączył: 05 Cze 2006 Posty: 151 Skąd: Kalisz
|
Wysłany: 2 Lipiec 2011, 21:24
|
|
|
Obawiam się, że obaj Panowie maroQ i chezare mają rację. Obiektowi należy nadać nazwę aby zastosować do niego makro, ale jest to mocno uciążliwe i nie opłacalne w przypadku zmiany koloru wymiarowania. Proponuję utworzenie warstwy o nazwie "wymiar" na której znajdować się będą tylko wymiary, zaś obiekty znajdować się będą na innej warstwie o nazwie np. "obiekty". Zaznaczamy warstwę "wymiar" i wszystkie znajdujące się na niej obiekty wciskamy ctrl+K, a następnie prawym i lewym klawiszem myszy wskazujemy wybrany kolor linii i wypełnienia uzyskując efekt jak w X3. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 2 Lipiec 2011, 22:26
|
|
|
Wymyśliłem jeszcze jeden sposób, który szybko pozwala zmienić kolor tekstu i linii wymiaru. Nie wiem czy zadziała to w X5, nie mam jak sprawdzić.
Najpierw musimy utworzyć dwa obiekty, napis i linię i nadać im odpowiednie właściwości (kolor - magenta) można wykorzystać też wcześniej utworzony i zmodyfikowany wymiar. Otworzyć zakładkę stylów (Ctrl+F5) i przeciągnąć kolejno do niej linię i napis. Dla wygody zmieniamy im nazwy żeby łatwo je było znaleźć wśród innych.
Znajdujemy tradycyjną metodą (znajdź obiekty) wszystkie wymiary i korzystamy z wcześniej przygotowanych dwóch nowych stylów. Wadą takiego rozwiązania jest to, że napis po tej operacji zostaje wyposażony w kontur.
W ogóle to rozumiem, że problem dotyczy już istniejących wymiarów, bo jeśli dopiero zamierzamy je wstawiać, to bez trudu można im właściwe kolory, grubość linii font i jego wielkość zdefiniować. |
|
|
|
|
maroQ
Doradca
Pomógł: 16 razy Wiek: 40 Dołączył: 08 Lut 2011 Posty: 117 Skąd: Kalisz
|
Wysłany: 5 Lipiec 2011, 21:42
|
|
|
Wojtek Kowalews napisał/a: | Proponuję utworzenie warstwy o nazwie "wymiar" na której znajdować się będą tylko wymiary, zaś obiekty znajdować się będą na innej warstwie o nazwie np. "obiekty". |
Kod: | Sub KolorujWymiar()
Dim s As Shape
For Each s In ActivePage.Shapes
If s.Type = cdrTextShape And s.Layer.Name = "wymiar" Then
s.Fill.ApplyUniformFill CreateCMYKColor(0, 100, 0, 0)
End If
If s.Type = cdrLinearDimensionShape And s.Layer.Name = "wymiar" Then
s.Outline.SetProperties Color:=CreateCMYKColor(0, 100, 0, 0)
End If
Next s
End Sub |
Przynajmniej jedna osoba tutaj myśli, a nie tylko naśmiewa się z innych...
Powyżej poprawione makro. Wystarczy przenieść wszystkie wymiary na warstwę wymiar lub lepiej: tam je tworzyć. Rozwiązanie bardzo przypomina AutoCADa. Nie ma jak prostota. Dzięki za pomysł.
P.S. Do osoby z którą nie koresponduję: Cytat: | Dla wygody zmieniamy im nazwy żeby łatwo je było znaleźć wśród innych. | i kto tu kogo osłabia... Ilość ruchów do wykonania operacji zmiany nazwy: Klikamy na obiekt (jak się uda to tylko raz) i wpisujemy nazwę: 1-2 kliknięcia + napis (n znaków) >> pojedyncze kliknięcie na ikonkę NazwijWymiar lub wywołanie klawisza skrótu. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 5 Lipiec 2011, 22:17
|
|
|
Osoba, która ze mną nie koresponduje, obraziła się?
Najlepiej by było jak na temat tych pomysłów wypowiedziałby się autor postu. Obawiam się, że wszystkie te pomysły są na nic, bo człowiekowi chodzi o zmianę już istniejących wymiarów.
Pomysł osoby, która ze mną nie koresponduje żeby pięć razy coś klikać żeby później jednym ruchem zmienić kolor wymiaru wydaje mi się niezwykle interesujący.
W makrze brakuje istotnego elementu. Komunikatu o tym, że operacja zakończyła się sukcesem. |
|
|
|
|
maroQ
Doradca
Pomógł: 16 razy Wiek: 40 Dołączył: 08 Lut 2011 Posty: 117 Skąd: Kalisz
|
Wysłany: 5 Lipiec 2011, 23:36
|
|
|
http://forum.oberonplace.com/showthread.php?t=2243
Tam jest wyjaśnienie dlaczego nie może być inaczej... ręce opadają...
Szaman napisał/a: | Nie da się tak łatwo wykryć który obiekt tekst (cdrTextShape) ma wymiar (cdrLinearDimensionShape) | Obiekt taki jak "dimension" nie istnieje, to jest poprostu "dimension" dodany do "text". Poza tym co za problem pozaznaczać wymiary i kolejno przenieść je na warstwę "wymiar"? No można to zrobić z makra, ale czynnik ludzki musi współpracować w ten lub inny sposób inaczej się nie da. W Corelu tak jest w wielu przypadkach (czasem nawet jak by się dało dla kogoś kto bardzo tupie nogami, zrobić super automatyzację, to itak ograniczenia możliwości użycia VBA w Corelu likwidują zamysł). Czynnik ludzki jest nieodzowny w Corelu. To nie jest AutoCAD i nie kosztuje tyle. Zresztą makra w CADzie to zupełnie inna bajka.
Cytat: | Komunikatu o tym, że operacja zakończyła się sukcesem |
Kod: | msgbox "Operacja zakończona sukcesem", vbInformation, "chezare" | Nadmiar komunikatów to przekleństwo... nie należy maltretować użyszkodnika, chyba że tego sobie życzy... Jak dla mnie temat zakończony chyba że autor się wypowie. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 7 Lipiec 2011, 22:29
|
|
|
MaroQ zaczynasz rozmawiać sam ze sobą. Jeśli chodzi o mnie to bym się nad tym zastanowił |
|
|
|
|
maroQ
Doradca
Pomógł: 16 razy Wiek: 40 Dołączył: 08 Lut 2011 Posty: 117 Skąd: Kalisz
|
Wysłany: 7 Lipiec 2011, 23:05
|
|
|
chezare napisał/a: | Jeśli chodzi o mnie to bym się nad tym zastanowił |
Nie mam czasu a na psychiatrę mnie narazie nie stać. Coś te moje mikstury się średnio sprzedają :P Może mam zbyt drogiego dostawcę specyfików. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 10 Lipiec 2011, 06:24
|
|
|
Jak człowiek mówi sam do siebie, to niekoniecznie od razu potrzebny mu psychiatra
Nie wiem czy z pisania makr do Corela da się wyżyć? Może spróbuj pisać makra, które łatają dziury w Corelu lub robią rzeczy, których Corel sam z siebie zrobić nie potrafi? W sieci można znaleźć sporo takich wynalazków, które autorzy sprzedają po kilkadziesiąt papierów. Tylko tutaj może być problem z logistyką. Jak to sprzedawać i jak zabezpieczyć żeby ludzie nie rozdawali sobie w sieci za free? |
|
|
|
|
|