Autor
|
Thema: Leere Bodys löschen (2084 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: 10. Feb. 2008 11:43 <-- editieren / zitieren --> Unities abgeben:
Moin Moin, ich habe ein kleines Automatisierungsproblem ;-) Wir müssen in unserer Firma öfter mal Leiterplattenassemblys in Parts umwandeln und anschließend die Unterseite der PCB von der Oberseite der PCB trennen und diese in zwei seperate Parts speichern (Ober- bzw. Unterseite der Leiterplatte) Dazu dreh ich mir die Leiterplatte entsprechend in den Raum und markiere die komplette Unterseite und lösche diese. Das Problem ist dann das ich beim markieren natürlich nicht die Bodys anpacke (jedes Bauteil hat ein eigenen Body) sondern nur die Solids in den Bodys. Sprich es bleiben viele leere Bodys übrig die ich nun mit einem Makro löschen will. Das klappt auch ganz gut bis auf die Tatsache, das CATIA natürlich den PartBody nicht löschen kann. Ist dieser nun leer kommt es zu einer Fehlermeldung (Can´t drag and drop or cut and delete.....) Um dies zu umgehen sollte der User durch das Makro aufgefordert werden einen Body zu bestimmen (in dem noch ein Solid ist) der zum PartBody gemacht werden soll und anschließend soll das Makro erst die übrigen leeren Body löschen. Leider bekomm ich das nicht hin (die Auswahl des Bodys war auch kein Problem nur er macht mir den ausgewählten Body nicht zum PartBody) *arrrghhh* Ich weiß nur leider nicht warum.... :-( Hier mal der Code: Code: Sub CATMain()Set oPartDoc = CATIA.ActiveDocument Dim oPart as Part Set oPart = oPartDoc.Part Set oBodies = oPart.Bodies Set PartBody = oBodies.Item(1) Dim oPartBody as Body Dim selection1 As selection Set selection1 = oPartDoc.selection oPart.InWorkObject = PartBody Set nBody = oPart.Bodies.Item("PartBody") If nBody.Shapes.Count = 0 And nBody.Sketches.Count = 0 Then Dim InputObjectType(0) selection1.Clear InputObjectType(0) = "Body" oPartBody = selection1.SelectElement3(InputObjectType, "Bitte neuen PartBody auswaehlen (fuer Abbruch: Esc druecken)", True, CATMultiSelTriggWhenSelPerf, False) Set oPartBody = oBodies.Item("PartBody") oPart.MainBody = oPartBody End If Set oPartDoc = CATIA.ActiveDocument Set oSel = oPartDoc.selection l = 0 For i = oPart.Bodies.Count To 1 Step -1 On Error Resume Next Set oBody = oPart.Bodies.Item(i) If oBody.Shapes.Count = 0 And oBody.Sketches.Count = 0 Then oSel.Clear Set delBody = oBodies.Item(i) oSel.Add delBody oSel.Delete l = l + 1 End If Next Box = MsgBox("Es wurden " & l & " leere Bodys geloescht", , "Hinweis") End Sub
------------------ Die KATJA ist halt doch nur ne zickige Französin [Diese Nachricht wurde von denyo_1 am 10. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catrin Moderator Ingenieurin Maschinenbau/Informatik
Beiträge: 1928 Registriert: 12.12.2000
|
erstellt am: 11. Feb. 2008 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für denyo_1
Hallo DENYO, das ist jetzt sicher ne bloede Frage vom mir. Aber wenn der Part Body fuer Euch soweiso keine Rolle spielt, warum laesst Du ihn nicht einfach leer und im Part drin. Da tut er nicht weh, kann nix falsches bei Berechnungen etc. hervorrufen und es ist nicht irgendein Koeprer der PartBody. Das kann ja auch der falsche sein... Gruss Catrin ------------------ -------------------------------------------------- cad_de@catrin-eger.de -------------------------------------------------- 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: 11. Feb. 2008 09:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Catrin, das würde ich ja sogar machen aber das Makro versucht ja jeden leeren Body zu löschen...Ist der PartBody leer kommt ne Fehlermedlung und die will ich nicht haben (unsere User haben nämlich sonst Probleme ;-)) ------------------ Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catrin Moderator Ingenieurin Maschinenbau/Informatik
Beiträge: 1928 Registriert: 12.12.2000
|
erstellt am: 11. Feb. 2008 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für denyo_1
Dann mach doch ne Abfrage rein: fuer alle Body, die nicht PartBody sind und leer sind ..... Gruss Catrin ------------------ -------------------------------------------------- cad_de@catrin-eger.de -------------------------------------------------- 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: 11. Feb. 2008 10:23 <-- editieren / zitieren --> Unities abgeben:
oh stimmt da bin ich noch gar nicht draufgekommen. Naja manchmal sieht man den Wald vor Bäumen nicht ;-) Danke dir vielmals für die Idee ------------------ Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|