Autor
|
Thema: Leere Bodies und Geosets löschen (2050 mal gelesen)
|
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 09. Jan. 2018 19:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich bin leider nicht so bewandert in Macroprogramierung. Ich hab da immer weider das Problem das ich allcatparts erstellen muß und dann lösch ich in der #Egel noch einige elemente wieder raus und den rest speichere ich ab. Leider hab ich dann ständig eine Menge leere Bodies und Geosets im Part. Und dann lösch ich sie händisch immer raus. Das ganze wollt ich gern automatiesert machen. Hab zwar schon versucht mit dem Macrorecorder das mal aufzunehmen aber das funktioniert auch irgendwie nicht. Hab auch schon verschiedene Codes aus dem Netzt ausprobiert doch leider funktionieren die auch nicht und laufen immer auf Fehler. Ich hoffe mir kann jemand weiterhelfen oder ein paar hilfreiche Tips geben. Danke schon mal im vorraus. Gruß CX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Jan. 2018 19:28 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
|
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 09. Jan. 2018 19:39 <-- editieren / zitieren --> Unities abgeben:
|
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 10. Jan. 2018 07:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, also bei der R19 funktioniert das Macro super. Bei der V5-6 2016 bekomme ich ein Fehler. der Fehler ist in der Zeile wo oSel gedimt wird. "Dim oSel As Selection" Fehlermeldung lautet: Compile error: Can´t find project or library. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 10. Jan. 2018 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
|
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 10. Jan. 2018 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, ja das mit Object funktioniert. Aber dann kommt gleich der nächste Fehler be "Dim oDoc As PartDocument" und bekomme die Fhelermeldung das das Projekt oder die library nicht gefunden wird. Mu´ß ich noch irgendwelche libarys zusätzlich anwählen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 10. Jan. 2018 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Zitat: Original erstellt von Creator-X: Hallo Thomas,ja das mit Object funktioniert. Aber dann kommt gleich der nächste Fehler be "Dim oDoc As PartDocument" und bekomme die Fhelermeldung das das Projekt oder die library nicht gefunden wird. Mu´ß ich noch irgendwelche libarys zusätzlich anwählen?
Hallo Versuch mal an deine Referenzen bei Tools/References... gucken. Untick alles, wo "MISSING" steht. Sorry für schlecht Deutsch
[Diese Nachricht wurde von Sylas am 10. Jan. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 15. Jan. 2018 15:32 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Jan. 2018 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Servus Werden überhaupt Bibliotheken von CATIA in den Referenzen angezeigt? Sind die wichtigen Bibliotheken aktiviert (in der Liste)? Hat VBA bei dir schon mal funktioniert? Schon mal VBA deinstalliert und wieder installiert? Gruß Bernd PS: ggf hilft auch ein "regserver" (Forensuche) ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 15. Jan. 2018 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, also die Catia Biblioteken werden in den Ref angezeigt und sind alle aktiviert.Daheim funktioniert es ja auch. In der Arbeit da bekomm ich dann Feghler wenn der Code ausgeführt werden soll obwohl es die gleiche Version ist. Vielleicht liegt es ja am Windof10. Daheim hab ich W7 drauf. Ist schon komisch. Andere Macros laufen ja auch bei mir in der Arbeit. Bin ein bissel ratlos. Gruß Marco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 15. Jan. 2018 19:15 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Zitat: Original erstellt von Creator-X: Hallo Bernd,also die Catia Biblioteken werden in den Ref angezeigt und sind alle aktiviert.Daheim funktioniert es ja auch. In der Arbeit da bekomm ich dann Feghler wenn der Code ausgeführt werden soll obwohl es die gleiche Version ist. Vielleicht liegt es ja am Windof10. Daheim hab ich W7 drauf. Ist schon komisch. Andere Macros laufen ja auch bei mir in der Arbeit. Bin ein bissel ratlos. Gruß Marco
Hallo Hast du deine Makro an andere PC versucht? Startet es?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Jan. 2018 19:53 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Servus Marco In der Firma habt ihr V5-6 2016? Das müsste ja schon VBA 7 sein. Wie sieht denn unter VBA 7 so ein Code aus (zB löschen eines Bodies per Makrorekorder aufnehmen)? Nicht dass sich da was bei den Deklarationen verändert hat Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Creator-X Mitglied Konstrukteur
Beiträge: 13 Registriert: 27.06.2013 Catia V5 R19 AMD FX6300 16GB 2x FX1700
|
erstellt am: 15. Jan. 2018 20:58 <-- editieren / zitieren --> Unities abgeben:
|
cimnese Mitglied --
Beiträge: 45 Registriert: 13.10.2009 Catia V5 SP7 R20
|
erstellt am: 24. Nov. 2022 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Hallo Gemeinde, hab hier dieses Makro schon länger in gebrauch, nur funktioniert es nicht mehr wenn ich Hybrid Bodies bei dem Part drinhabe bekomme immer ne Fehlermeldung bei diesem Satz For n = oParent.hybridBodies.Count To 1 Step -1 kann mir nicht erklären voran dies liegen kann. Ohne Hybridbodies funzt es ohne Probleme Bin leider nicht so fit im ganzen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Nov. 2022 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Servus Vielleicht fehlt da eine Abfrage ob überhaupt eine Hybridbody existiert. Tausch mal die Funktion DelEmptyGeoSets aus (ungetestet): Code: Function DelEmptyGeoSets(oParent As Object) As Integer Dim oHB As HybridBody Dim n As Integer Dim i As Integer oSel.Clear 'part-hybrid-bodies If oParent.hybridBodies.Count <> 0 then For n = oParent.hybridBodies.Count To 1 Step -1 Set oHB = oParent.hybridBodies.Item(n) If oHB.hybridBodies.Count > 0 Then DelEmptyGeoSets oHB 'if set in set re-call If (oHB.GeometricElements.Count + oHB.HybridSketches.Count + _ oHB.HybridShapes.Count + oHB.hybridBodies.Count) = 0 Then oSel.Add oHB 'if set is empty i = i + 1 'inc. counter 'Debug.Print oHB.Name oSel.Delete 'delete oSel.Clear End If Next End If DelEmptyGeoSets = i 'return number of deleted hybridbodies End Function
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cimnese Mitglied --
Beiträge: 45 Registriert: 13.10.2009 Catia V5 SP7 R20
|
erstellt am: 25. Nov. 2022 08:56 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Hi Brittmann, erstmal Dankeschön für Deine Hilfe. Hab die Funktion ausgetauscht, bekomme jetzt leider die Fehlermeldung. Häng hier mal das Makro rein. '--------------------------------------------------------------------------------------- ' Module : modDelEmpty ' Author : jherzog ' Date : 23.07.2015 ' Purpose : Delete Empty Bodies and HybridBodies from a CatPart ' Reqs. : An opened CatPart '--------------------------------------------------------------------------------------- ' Const strVersion As String = "V1.0" Const strMacroName As String = "DelEmptyBodies" Dim oSel As Selection
Sub CATMain() Dim oDoc As PartDocument Dim oPart As Part Dim oBody As Body Dim oHB As HybridBody Dim n As Integer Dim i As Integer 'counter for hybridbodies Dim j As Integer 'counter for bodies Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part Set oSel = oDoc.Selection CATIA.RefreshDisplay = False '--------------------------------------------------------------------------------------- i = DelEmptyGeoSets(oPart) 'delete empty 'root' geosets from part oSel.Clear 'Schleife über alle Bodies For n = oPart.Bodies.Count To 1 Step -1 'step backwards because of delete Set oBody = oPart.Bodies.Item(n) i = i + DelEmptyGeoSets(oBody) 'delete empty geosets in body If (oBody.Shapes.Count + oBody.hybridBodies.Count + oBody.Sketches.Count = 0) _ And Not (oBody Is oPart.MainBody) Then 'skip 'PartBody' oSel.Add oBody j = j + 1 'inc. counter ' Debug.Print oBody.Name oSel.Delete 'delete oSel.Clear End If Next '--------------------------------------------------------------------------------------- CATIA.RefreshDisplay = True oPart.Update ' DoEvents CATIA.StatusBar = "Macro finished." MsgBox i & " empty hybridbodies and " & j & " empty bodies found and deleted.", _ vbOKOnly Or vbInformation, strMacroName & " " & strVersion End Sub '--------------------------------------------------------------------------------------- ' Procedure : DelEmptyGeoSets ' Author : jherzog ' Date : 23.07.2015 ' Time : 15:47 ' Languages : VBA 6.5 ' V5-Release: V5R19/21 ' Purpose : Delete empty geometric sets from parent ' Parms : oParent: Part or Body ' Ret. Value: Number of deleted bodies ' ' Syntax : DelEmptyGeoSets oBody ' ' Prereqs : an opened catpart ' Remarks : checks for sketches, geosets, shapes and geometric elements '--------------------------------------------------------------------------------------- 'Function DelEmptyGeoSets(oParent As Object) As Integer Dim oHB As HybridBody Dim n As Integer Dim i As Integer oSel.Clear 'part-hybrid-bodies If oParent.hybridBodies.Count <> 0 then For n = oParent.hybridBodies.Count To 1 Step -1 Set oHB = oParent.hybridBodies.Item(n) If oHB.hybridBodies.Count > 0 Then DelEmptyGeoSets oHB 'if set in set re-call If (oHB.GeometricElements.Count + oHB.HybridSketches.Count + _ oHB.HybridShapes.Count + oHB.hybridBodies.Count) = 0 Then oSel.Add oHB 'if set is empty i = i + 1 'inc. counter 'Debug.Print oHB.Name oSel.Delete 'delete oSel.Clear End If Next End If DelEmptyGeoSets = i 'return number of deleted hybridbodies End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Nov. 2022 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
|
cimnese Mitglied --
Beiträge: 45 Registriert: 13.10.2009 Catia V5 SP7 R20
|
erstellt am: 25. Nov. 2022 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Nov. 2022 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Servus Wie sieht denn dein Strukturbaum aus? Bei welchem Objekt (das an DelEmptyGeoSets übergeben wird) steigt das Makro aus? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cimnese Mitglied --
Beiträge: 45 Registriert: 13.10.2009 Catia V5 SP7 R20
|
erstellt am: 30. Nov. 2022 11:30 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Sorry für die späte Antwort, mir ist leider was dazwischen gekommen. Hab Dir mal schematisch zwei Bilder eingestellt vor ausführung des Makros und bis dahin wo dann die Fehlermeldung kommt. Die Sets kann er mir löschen, bei den Hybriden bleibt er mir stehen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cimnese Mitglied --
Beiträge: 45 Registriert: 13.10.2009 Catia V5 SP7 R20
|
erstellt am: 30. Nov. 2022 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Nov. 2022 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für Creator-X
Servus Mit HybridBody ist bei Makros eine geometrisches Set gemeint. Hybrid-Design und Non-Hybrid-Design zu mischen ist eine sehr schlechte Idee. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |