Autor
|
Thema: Detail Sheets löschen (1522 mal gelesen)
|
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 12. Dez. 2007 12:45 <-- editieren / zitieren --> Unities abgeben:
Moin liebe Programmierer, ich hätte mal eine Frage. Ich würde gerne mit einem Makro das Löschen von Detail Blättern beliebiger Anzahl realisieren. Leider bricht mein Code immer nach dem ersten Blatt wieder ab und sagt mir das die Methode (Item) Fehlgeschlagen ist. Kann mir da kurz einer Helfen ich bin am verzweifeln. Die Problemstelle ist die fett makrierte im Code Code: Sub CATMain() Dim oDRWDoc As DrawingDocument Dim oSheet As DrawingSheet Dim DrwSheet As Object 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 l=0 For k = 1 To oView.Components.Count Set oDRWComp = oView.Components.Item(k) '2D-Komponente zerlegen oDRWComp.Explode l=l+1 Next Next End If Next 'Bestätigung der Löschung Set SelSheet = oDRWDoc.Selection If l=0 then Abfr = MsgBox("bla" + Chr(10) + "Detail-Sheets löschen?", vbYesNo, "Hinweis") If Abfr = 7 then MsgBox ("Sie haben sich gegen die automatische Loeschung entschieden. Das Makro wird nun beendet!") Exit Sub else For i = 1 To oDRWDoc.Sheets.Count Set oSheet = oDRWDoc.Sheets.Item(i) If oSheet.IsDetail then Set SelSheet = CATIA.ActiveDocument.Selection Set oSheet = CATIA.ActiveDocument.Sheets.Item(2) SelSheet.Add(oSheet) SelSheet.Delete 'Else 'MsgBox("Es sind keine Detail-Sheets vorhanden" + Chr(10) + "ok um das Makro zu beenden") End if Next End if End If End Sub
mfg. Denyo ------------------ Die KATJA ist halt doch nur ne zickige Französin [Diese Nachricht wurde von denyo_1 am 12. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 12. Dez. 2007 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für denyo_1
Hi Denyo, Deine Schleife läuft von 1 bis Sheets.Count In der Schleife löscht du ein Sheet --> Sheets.Count wird um 1 kleiner --> Item(i) läuft irgendwann ins leere Abhilfe: Do-While-Konstrukt oder For-Next rückwärts (also von i=Sheets.Count to 1 step -1) Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tobul Mitglied Physiker
Beiträge: 191 Registriert: 06.05.2003 Catia-V5 R24-R30 Delmia R19-R30 NX 12,1892 Windoof 7,10
|
erstellt am: 12. Dez. 2007 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für denyo_1
|
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 12. Dez. 2007 19:14 <-- editieren / zitieren --> Unities abgeben: Nur für denyo_1
oder einfach: Code: For i = 1 To oDRWDoc.Sheets.Count Set oSheet = oDRWDoc.Sheets.Item(i) If oSheet.IsDetail then Set SelSheet = CATIA.ActiveDocument.Selection Set oSheet = CATIA.ActiveDocument.Sheets.Item(i) SelSheet.Add(oSheet) SelSheet.Delete
Da stand vorhin eine 2...Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 13. Dez. 2007 07:57 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antworten. Bin gestern Nacht noch selber draufgekommen das die Schleife so einen Fehler produzieren muss. Trotzdem vielen Dank ------------------ Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |