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
Makro do grupowania obiektów wewnątrz warstw
Autor Wiadomość
TheMan258 
Początkujący
TheMan258


Wersja CorelDRAW: x5
Wiek: 33
Dołączył: 22 Lut 2021
Posty: 14
Skąd: Kraków
  Wysłany: 22 Luty 2021, 16:47   Makro do grupowania obiektów wewnątrz warstw

Witam wszystkich,
Potrzebuję porady, pracuje w Corelu x5 i mam napisane różne makra, z których korzystam, na co dzień. Mam makro, które rozdziela obiekty na osobne warstwy następnie je sobie rozgrupowuję i np. zmieniam coś w tej rozgrupowanej grupie. I tu mam problem, ponieważ potrzebowałbym takie makro, które zgrupuje wszystkie te obiekty, ale w taki sposób, aby te kształty zostały w swoich warstwach tak jak w załączniku. (Makro które grupuje obiekty wewnątrz warstw)
Mam takie makro, ale działa tylko wtedy gdy warstwa nazywa się ,,Warstwa 1,,.
Nie wiem, czy dobrze myślę, ale próbowałem coś takiego dopisać
Kod:
( "Warstwa_" &)
jednak to nie działa.

Kod:
Sub Grupowanie()
    Dim sr As ShapeRange, s As Shape
    Set sr = ActivePage.Layers("Warstwa 1").Shapes.All
    If sr.count = 0 Then MsgBox "Żaden kształt nie jest zaznaczony": Exit Sub
    Set s = sr.Group
End Sub


Czasem mam 100 warstw z kształtami i zajmuje mi to trochę czasu zgrupować te wszystkie obiekty. Byłbym bardzo wdzięczny o wskazanie sposobu, w jaki sposób taką operację przeprowadzić.

Warstwy.jpg
Pobierz Plik ściągnięto 348 raz(y) 638.98 KB

 
 
maroQ 
Doradca


Pomógł: 16 razy
Wiek: 40
Dołączył: 08 Lut 2011
Posty: 117
Skąd: Kalisz
  Wysłany: 27 Czerwiec 2021, 23:12   

Rozumiem, że używasz pętli dla warstw. W takim przypadku należy jeszcze aktywować warstwę na której się operuje w przeciwnym wypadku zawsze pracujemy na aktywnej. Alternatywnie po zgrupowaniu można obiekty przenieść na inną warstwę.

Kod:
Sub GroupAllOnPage()
    Dim sr As ShapeRange, s As Shape
    Dim l As Layer
    Dim info As String
   
    For Each l In ActivePage.Layers
        If l.IsDesktopLayer Or l.IsSpecialLayer Or l.IsGridLayer Or l.IsGuidesLayer Or l.Editable = False Then
            GoTo skip
        End If
        l.Activate
       
        Set sr = l.Shapes.All
        If sr.Count = 0 Then
            info = info & "Na warstwie " & l.Name & " nie znaleziono obiektow!" & vbNewLine
        ElseIf sr.Count = 1 Then
            If sr.Item(1).Type = cdrGroupShape Then
                info = info & "Obiekty na warstwie " & l.Name & " zostaly uprzednio zgrupowane" & vbNewLine
            Else
                info = info & "Na warstwie " & l.Name & " byl tylko jeden obiekt wiec nie zostal zgrupowany" & vbNewLine
            End If
        Else
            Set s = sr.Group
            info = info & "Zgrupowano " & sr.Count & " krzywych na warstwie " & s.Layer.Name & vbNewLine
            's.MoveToLayer l
        End If
skip:
    Next l

W edytorze VBA odpal CTRL+G lub Immediate Windows z menu View by zobaczyć konsolę.

Makro pomija warstwy specjalne oraz nieedytowalne.

Linijka: Set s = sr.Group jest zbędna gdyż sr.Group nie wymaga przypisania do zmiennej. Jednak zostawiłem ją dla celów diagnostycznych by podglądać na jakiej warstwie leży nasz kształt s.
 
 
TheMan258 
Początkujący
TheMan258


Wersja CorelDRAW: x5
Wiek: 33
Dołączył: 22 Lut 2021
Posty: 14
Skąd: Kraków
Wysłany: 18 Wrzesień 2021, 13:45   

Dziękuję bardzo, makro wspaniale działa :dances
 
 
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.
 

ABC CorelDRAW X7 PL

ABC CorelDRAW X7 PL
Roland Zimek

Cena: 39.90 z�

dodaj do koszyka
zobacz opis

 

CorelDRAW X7 PL. �wiczenia praktyczne

CorelDRAW X7 PL. �wiczenia praktyczne
Roland Zimek

Cena: 27.00 z�

dodaj do koszyka
zobacz opis

 

Corel PaintShop Pro X4. Obr�bka zdj�� cyfrowych. �wiczenia praktyczne

Corel PaintShop Pro X4. Obr�bka zdj�� cyfrowych. �wiczenia praktyczne
Roland Zimek

Cena: 34.90 z�

dodaj do koszyka
zobacz opis

 

Machine Learning with scikit-learn Quick Start Guide. Classification, regression, and clustering techniques in Python eBook

Cena: 80.91 z�
Dodaj do koszyka

 

Roblox Lua w 24 godziny. Tworzenie gier dla początkujących

Roblox Lua w 24 godziny. Tworzenie gier dla początkujących
Roblox Corporation

Cena: 34.50 zł
zobacz opis

Strona wygenerowana w 0.08 sekundy. Zapytań do SQL: 14