|
Corel FORUM Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych |
|
Makra - Duplikowanie - prośba o optymalizację makra
zyzio - 16 Maj 2017, 20:37 Temat postu: Duplikowanie - prośba o optymalizację makra Witam. Swego czasu poszukiwałem możliwości przypisania skrótów klawiszowych do poleceń duplikujących zaznaczone obiekty z uwzględnieniem ich szerokości i wysokości - chodzi o narzędzie znajdujące się na dockerze "Transformacja" (poniżej także zrzut ekranu), a ponieważ nie znalazłem takiej możliwości stworzyłem metodą łopatologiczną 4 macra duplikujące zaznaczenie odpowiednio w górę, dół, lewo i prawo no i do nich jak wiadomo można już sobie przypisać skróty klawiszowe.
Generalnie przy prostych nieskomplikowanych kształtach macra się sprawdzają ale problem pojawia się przy bardziej skomplikowanych rysunkach, ponieważ kod nie jest zoptymalizowany i działa o wiele wolniej niż domyślne polecenie "zastosuj do duplikatu" i tutaj moja prośba do Was o wskazówki jak przyspieszyć działanie kodu. Poniżej przykład, którego używam do duplikowania zaznaczenia w prawo.
Na chwilę obecną używam jeszcze X3.
Z góry dzięki za sugestie.
Kod: |
Sub Duplikowanie_prawo()
If Not CheckSelection() Then Exit Sub
ActiveDocument.BeginCommandGroup "MySteps"
Dim OrigSelection As ShapeRange
Set OrigSelection = ActiveSelectionRange
Dim dup1 As ShapeRange
Set dup1 = OrigSelection.Duplicate()
ActiveDocument.ReferencePoint = cdrMiddleRight
dup1.Stretch -1#, 1#
dup1.OrderToFront
dup1.CreateSelection
ActiveSelection.ObjectData("Name").Value = "Copy"
dup1.Flip cdrFlipHorizontal
ActiveDocument.EndCommandGroup
End Sub |
tegraf - 16 Maj 2017, 20:45
Specjalnie się na Corelu nie znam, ale wydaje mi się, że Twoje makro nie robi tego, co załączony zrzut z Corela.
Zrzut z ekranu sugeruje wykonanie duplikatu z przesunięciem, natomiast makro (o ile dobrze odczytuję) robi duplikat obiektu i odbicie lustrzane, gdzie osią obrotu jest prawa krawędź. To to samo, ale nie zawsze.
Dla pewności: jeżeli swoim makrem potraktujesz kwadrat dwukolorowy (np. z lewej zielony, z prawej czerwony), to po potraktowaniu go tym makrem dalej masz z lewej zielony/z prawej czerwony - czy odwrotnie?
zyzio - 16 Maj 2017, 20:53
Właśnie dlatego jest to łopatologiczny kod, ponieważ wykonuje kilka czynności imitując rezultat działania domyślnego polecenia "Zastosuj do duplikatu".
Nic lepszego nie wymyśliłem dlatego właśnie proszę o sugestie :)
tegraf - 16 Maj 2017, 21:03
http://community.coreldra.../p/52528/250969
zyzio - 16 Maj 2017, 21:16
Dzięki tegraf, wykorzystałem ten oznaczony zieloną ramką, jest nieco lepiej ale w porównaniu z domyślnym poleceniem kod wciąż działa zauważalnie wolniej no ale to już coś :)
|
|