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ś :)

Powered by phpBB modified by Przemo © 2003 phpBB Group