Duplikowanie - prośba o optymalizację makra |
Autor |
Wiadomość |
zyzio
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 16 Maj 2017, 20:37 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
Ekspert tegraf
Pomógł: 74 razy Dołączył: 21 Mar 2011 Posty: 1954 Skąd: Zielona Góra
|
Wysłany: 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
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 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
Ekspert tegraf
Pomógł: 74 razy Dołączył: 21 Mar 2011 Posty: 1954 Skąd: Zielona Góra
|
|
|
|
|
zyzio
Praktyk
Dołączył: 06 Cze 2011 Posty: 90 Skąd: Podkarpacie
|
Wysłany: 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ś :) |
|
|
|
|
|