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

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
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 793 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?
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.18 sekundy. Zapytań do SQL: 15