Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zeichnungsrahmen 2D-Komponenten zerlegen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Zeichnungsrahmen 2D-Komponenten zerlegen (1366 mal gelesen)
mou551
Mitglied



Sehen Sie sich das Profil von mou551 an!   Senden Sie eine Private Message an mou551  Schreiben Sie einen Gästebucheintrag für mou551

Beiträge: 20
Registriert: 25.09.2015

erstellt am: 16. Apr. 2019 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


2D-Komponentenzerlegen.jpg

 
Moin,

ich habe ein kleines Problem und bekomme es nicht gelöst.

Ich möchte in meiner Zeichnung quasi den Rahmen selektieren und dann Rechtsklick auf den Rahmen und dann Objekte -> 2D Komponente zerlegen (siehe Bild), und das will ich natürlich automatisieren. Über Makro aufzeichnen bekomme ich nicht den Befehl.

https://ww3.cad.de/foren/ubb/Forum137/HTML/002257.shtml
Habe es dann über diesen Thread versucht, klappt aber nicht so ganz:

Sub CATMain()

    Dim oDRWDoc As DrawingDocument
    Dim oSheet As DrawingSheet
    Dim oView As DrawingView
    Dim oDRWComp As DrawingComponent
   
    Set oDRWDoc = CATIA.ActiveDocument
   
    'Schleife für alle Sheets
    For i = 1 To oDRWDoc.Sheets.Count
        Set oSheet = oDRWDoc.Sheets.Item(i)
        'Ist das Sheet kein Detail-Sheet?
        If Not oSheet.IsDetail Then
            'Schleife für alle Views im Sheet
            For j = 1 To oSheet.Views.Count
                Set oView = oSheet.Views.Item(j)
                'Schleife für alle 2D-Komponenten der View
                For k = 1 To oView.Components.Count
                    Set oDRWComp = oView.Components.Item(k)
                    '2D-Komponente zerlegen
                    oDRWComp.Explode
                Next k
            Next j
        End If
    Next i
   
End Sub

Der Befehl: "Explode" sollte denke ich eigentlich die Komponente zerlegen, allerdings zerlegt er sie nicht und mit der Hilfe komme ich auch nicht weiter.
Hat jemand eine Lösung parat oder zumindest, ob ich mit der Idee in die richtige Richtung gehe 

Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Apr. 2019 18:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mou551 10 Unities + Antwort hilfreich

Servus

Der Code sieht doch vielversprechend aus.
In meinem Kurztest hat das Explode geklappt, nur scheinbar wird eine Kopie der Komponente erzeugt. Versuch mal diese nach dem Explode zu entfernen (oView.Components.Item(k).Remove)
ggf dazu die Schleife von hinten nach vorne abarbeiten (oder extra Schleife nach dem Explode).
Für dich sollte reichen wenn du nur in der 2. Ansicht des Blattes (Background) die Komponenten zerlegst bzw entfernst.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Randle
Mitglied
CAD/PLM Consultant


Sehen Sie sich das Profil von Randle an!   Senden Sie eine Private Message an Randle  Schreiben Sie einen Gästebucheintrag für Randle

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 17. Apr. 2019 08:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mou551 10 Unities + Antwort hilfreich

Hallo,

versuche es mal mit

Code:

oDRWDoc.Selection.Clear
oDRWComp.ExplodeAndSelect
oDRWDoc.Selection.Clear
oDRWDoc.Selection.Add oDRWComp
oDRWDoc.Selection.Delete

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mou551
Mitglied



Sehen Sie sich das Profil von mou551 an!   Senden Sie eine Private Message an mou551  Schreiben Sie einen Gästebucheintrag für mou551

Beiträge: 20
Registriert: 25.09.2015

erstellt am: 17. Apr. 2019 09:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


removebefehlnichtvorhanden.jpg

 
Hallo Bernd,

danke für deine Antwort. Allerdings gibt es bei mir den "Remove" Befehl nicht (siehe Bild). Müsste ich dazu eine andere Bibliothek einfügen?

Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 17. Apr. 2019 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mou551 10 Unities + Antwort hilfreich

Servus

Ups:

Code:
oView.Components.Remove(k)

Oder wie von Randle vorgeschlagen über die Selection

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mou551
Mitglied



Sehen Sie sich das Profil von mou551 an!   Senden Sie eine Private Message an mou551  Schreiben Sie einen Gästebucheintrag für mou551

Beiträge: 20
Registriert: 25.09.2015

erstellt am: 17. Apr. 2019 10:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


FehlerRandleCode.PNG


FehlerRandleCode2.PNG

 
Hallo Randle,

danke für deine Antwort, ich habe deinen Code mal eingepflegt. Allerdings generiere ich bei den ersten drei mal diesen Fehler (siehe Bild) und beim vierten Mal läuft es durch 

Sub loeschenReferenz_3()

    Dim oDRWDoc As DrawingDocument
    Dim oSheet As DrawingSheet
    Dim oView As DrawingView
    Dim oDRWComp As drawingComponent
   
    Set oDRWDoc = CATIA.ActiveDocument
   
    'Schleife für alle Sheets
    For i = 1 To oDRWDoc.Sheets.Count
        Set oSheet = oDRWDoc.Sheets.Item(i)
        'Ist das Sheet kein Detail-Sheet?
        If Not oSheet.IsDetail Then
            'Schleife für alle Views im Sheet
            For j = 1 To oSheet.Views.Count
                Set oView = oSheet.Views.Item(j)
                'Schleife für alle 2D-Komponenten der View
                For k = 1 To oView.Components.Count
                    Set oDRWComp = oView.Components.Item(k)
                    '2D-Komponente zerlegen
                    'oDRWComp.Explode
                   
                    'Lösung Randle:
                    oDRWDoc.Selection.Clear
                    oDRWComp.ExplodeAndSelect
                    oDRWDoc.Selection.Clear
                    oDRWDoc.Selection.Add oDRWComp
                    oDRWDoc.Selection.Delete
                Next k
            Next j
        End If
    Next i
   
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 17. Apr. 2019 10:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mou551 10 Unities + Antwort hilfreich

Servus

Tritt der Fehler nur bei einer bestimmten View oder Componente auf?
Überlege dir wann du was löschst. Wenn du das erste Element löschst, wandern alle nachfolgenden eins nach unten.
Deshalb würde ich es zB mal so probieren:

Code:
For k = oView.Components.Count to 1 Step -1
   Set oDRWComp = oView.Components.Item(k)
   oDRWComp.Explode
   oView.Components.Remove(k)
Next
Willst du wirklich alle Views bearbeiten oder nur den Background?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mou551
Mitglied



Sehen Sie sich das Profil von mou551 an!   Senden Sie eine Private Message an mou551  Schreiben Sie einen Gästebucheintrag für mou551

Beiträge: 20
Registriert: 25.09.2015

erstellt am: 17. Apr. 2019 10:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
funzt

ihr seid die Besten!

[Diese Nachricht wurde von mou551 am 17. Apr. 2019 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Randle
Mitglied
CAD/PLM Consultant


Sehen Sie sich das Profil von Randle an!   Senden Sie eine Private Message an Randle  Schreiben Sie einen Gästebucheintrag für Randle

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 17. Apr. 2019 11:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mou551 10 Unities + Antwort hilfreich

Hallo,

ich würde eine Prüfung einbauen, ob die Anzahl der Componenten in einer View > 0 ist.

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz