Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Allgemein
  Leere Bodies suchen, selektieren und löschen

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:  Leere Bodies suchen, selektieren und löschen (6786 mal gelesen)
kalanja
Mitglied
Entwicklungsing.


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

Beiträge: 1239
Registriert: 29.10.2001

Dell Precision M3800 Mobile Workstation
i7 2,2GHz - 16GB RAM
Nvidia Quadro K1100
Treiber: 353.62
Windows 10 Pro (x64)
V5 R21 x64 SP6

erstellt am: 16. Apr. 2010 11:21    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

hallo!

ich bin gerade am ausmisten innerhalb von modellen. ich hab V4 modelle (baugruppen) konvertiert, wo ich eigentlich keine normteile drin haben will, damit die files kleiner und das gesamte assy performanter wird. wir sprechen hier von mehreren tausend teilen mit hunderten von normteilen.

gibt es eine einfache möglichkeit nach leeren bodies zu suchen? ich hab bis jetzt nix gefunden (auch mit der forensuche).

irgendwelche ideen wie ich da vorgehen könnte?

die normteile lassen sich über farbe auswählen, wenn ich dann lösche, werden nur die solids innerhalb des bodies geschlöcht, die leeren bodies bleiben aber im modell.

gruß
mario

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

music
Mitglied
CATIA Anwendungsberater


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

Beiträge: 158
Registriert: 22.08.2002

erstellt am: 16. Apr. 2010 13: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 kalanja 10 Unities + Antwort hilfreich

Hallo kalanja,

sofern Du den Q-Checker zur Verfügung hast:
Kriterium "leere Körper"
Findet und löscht leere Körper wie der Name schon vermuten lässt.

mfg
music

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

kalanja
Mitglied
Entwicklungsing.


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

Beiträge: 1239
Registriert: 29.10.2001

Dell Precision M3800 Mobile Workstation
i7 2,2GHz - 16GB RAM
Nvidia Quadro K1100
Treiber: 353.62
Windows 10 Pro (x64)
V5 R21 x64 SP6

erstellt am: 16. Apr. 2010 16:03    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

danke für den tipp, mal schauen ob ich den irgendwo her bekomme.

gruß und schönes WE
mario

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: 11849
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Apr. 2010 17:05    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 kalanja 10 Unities + Antwort hilfreich

Servus
Oder kurz ein Makro dafür schreiben
Der kern des Makros könnte so aussehen:
Code:
Language="VBSCRIPT"

Sub CATMain()
Set oDoc = CATIA.ActiveDocument
Set oPart = oDoc.Part
Set oSel = oDoc.Selection

oSel.clear
'Schleife über alle Bodies
for x = oPart.bodies.count to 1 step -1
  Set oBody = oPart.bodies.item(x)
  if oBody.shapes.count =0 then
        oSel.add oBody
        oSel.delete
        oSel.clear
  end if
next
End Sub


Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 16. Apr. 2010 editiert.]

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

kalanja
Mitglied
Entwicklungsing.


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

Beiträge: 1239
Registriert: 29.10.2001

Dell Precision M3800 Mobile Workstation
i7 2,2GHz - 16GB RAM
Nvidia Quadro K1100
Treiber: 353.62
Windows 10 Pro (x64)
V5 R21 x64 SP6

erstellt am: 19. Apr. 2010 08:23    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

cad.de da werden sie geholfen ;-)

hat perfekt funktioniert, danke!!

gruß
mario

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

eckhaard
Mitglied
Dipl.Ing.


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

Beiträge: 137
Registriert: 02.11.2003

erstellt am: 21. Jul. 2015 11:07    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 kalanja 10 Unities + Antwort hilfreich

Hallo,

das Makro ist sehr hilfreich. Danke!

Gruß, David

------------------
CatiaV5R19SP9HF20, XP Prof x64 SP2, Intel Xeon W3520 2,67GHz, 12GB RAM, NVIDIA Quadro FX 580

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

cimnese
Mitglied
--


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

Beiträge: 45
Registriert: 13.10.2009

Catia V5 SP7 R20

erstellt am: 23. Jul. 2015 07:13    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 kalanja 10 Unities + Antwort hilfreich

Hey das Ding such ich schon ewig ist super,
gibt es dies vielleicht auch mit leeren Geometrischen Sets?

Kenne mich mit Makros leider zu wenig aus.

Gruß Cimnese

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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 255
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 23. Jul. 2015 07:59    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 kalanja 10 Unities + Antwort hilfreich

Versuch das mal, is allerdings VS2010
Code:

Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
        Dim CATIA
        CATIA = GetObject(, "CATIA.application")

        Dim oDoc
        Dim oPart
        Dim oSel
        Dim oGeoSet

        oDoc = CATIA.ActiveDocument
        oPart = oDoc.Part
        oSel = oDoc.Selection

        oSel.clear()
        'Schleife über alle GeoSets
        For x = oPart.HybridBodies.count To 1 Step -1
            oGeoSet = oPart.HybridBodies.item(x)
            If oGeoSet.HybridShapes.Count = 0 And oGeoSet.HybridSketches.Count = 0 Then
                oSel.add(oGeoSet)
                oSel.delete()
                oSel.clear()
            End If
        Next

        MsgBox("Makro is' fertig!")

    End Sub


Gruß
Peter

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: 11849
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Jul. 2015 08:18    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 kalanja 10 Unities + Antwort hilfreich

Servus Peter
Kleine Ergänzung dazu:
ich würde noch prüfen ob in dem GeoSet keine weiteren GeoSets sind:
Code:
If oGeoSet.HybridShapes.Count = 0 And oGeoSet.HybridSketches.Count = 0 And oGeoSet.HybridBodies.count = 0 Then
Gruß
Bernd

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

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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 255
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 23. Jul. 2015 08:41    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 kalanja 10 Unities + Antwort hilfreich


GeoSet_Loeschen.jpg

 
Moin Bernd,
Du hast recht, und es ist noch mehr verbesserungswürdig, s.Anhang
Gruß
Peter

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 23. Jul. 2015 08:51    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 kalanja 10 Unities + Antwort hilfreich

Hallo zusammen,

schau mal hier, da sollte so ziemlich alles drin sein, was dieses Thema abdeckt...

Code:

    Public Function Check_Part_IsEmpty(ByVal CheckPart As MECMOD.Part, Optional ByRef EmptyElements() As String = Nothing, Optional ByRef isSurfaceModel As Boolean = False) As Boolean

        '-------------------------------------------------------------------------------
        ' checks if the Part is not empty
        '-------------------------------------------------------------------------------
        ' True = Part is empty
        ' False = Part is not empty
        ' Optional EmptyElements: Returns a List of Empty Features and Bodies
        ' Optional isSurfaceModel: Returns if Body(solid) or HybridBody(only surfaces) is used
        '-------------------------------------------------------------------------------

        Dim oBodies As MECMOD.Bodies
        Dim oBody As MECMOD.Body
        Dim oHybBody As MECMOD.HybridBody
        Dim oHybBodies As MECMOD.HybridBodies
        Dim oSketches As MECMOD.Sketches
        Dim oSketch As MECMOD.Sketch
        Dim i As Integer = 0
        Dim FoundGeometry As Boolean = False
        Dim FoundSurfaces As Boolean = False
        Dim IsEmpty As Boolean = True

        Try

            oBodies = CheckPart.Bodies
            For Each oBody In oBodies
                If oBody.Shapes.Count = 0 And oBody.Sketches.Count = 0 And oBody.HybridBodies.Count = 0 Then
                    If IsNothing(EmptyElements) = False Then
                        EmptyElements(EmptyElements.Count - 1) = "Körper" & "Ÿ" & oBody.Name & "Ÿ" & CheckPart.Name & "\" & oBody.Name
                        ReDim Preserve EmptyElements(EmptyElements.Count)
                    End If
                Else
                    If oBody.Sketches.Count <> 0 Then
                        oSketches = oBody.Sketches
                        For i = 1 To oSketches.Count
                            oSketch = oSketches.Item(i)
                            If oSketch.GeometricElements.Count = 0 Then
                                If IsNothing(EmptyElements) = False Then
                                    EmptyElements(EmptyElements.Count - 1) = "Skizze" & "Ÿ" & oSketch.Name & "Ÿ" & CheckPart.partnumber & "\" & oBody.Name & "\" & oSketch.Name
                                    ReDim Preserve EmptyElements(EmptyElements.Count)
                                End If
                            End If
                            Application.DoEvents()
                        Next
                    End If
                    FoundGeometry = True
                    IsEmpty = False
                End If
                Application.DoEvents()
            Next

            oHybBodies = CheckPart.HybridBodies
            For Each oHybBody In oHybBodies
                If oHybBody.HybridShapes.Count = 0 And oHybBody.HybridSketches.Count = 0 And oHybBody.HybridBodies.Count = 0 Then
                    If IsNothing(EmptyElements) = False Then
                        EmptyElements(EmptyElements.Count - 1) = "Körper" & "Ÿ" & oHybBody.Name & "Ÿ" & CheckPart.Name & "\" & oHybBody.Name
                        ReDim Preserve EmptyElements(EmptyElements.Count)
                    End If
                Else
                    If oHybBody.HybridShapes.Count <> 0 Then
                        FoundSurfaces = True
                    End If
                    IsEmpty = False
                End If
                Application.DoEvents()
            Next

            If FoundGeometry = False And FoundSurfaces = True Then
                isSurfaceModel = True
            End If

            Return IsEmpty

        Catch ex As Exception

            EmptyElements(EmptyElements.Count - 1) = "Fehler" & "Ÿ" & "Fehler" & "Ÿ" & "Fehler"
            ReDim Preserve EmptyElements(EmptyElements.Count)
            Return IsEmpty
            MsgBox(ex.ToString, MsgBoxStyle.Critical, "Fehler in Functions: Check_Part_IsEmpty")

        End Try

    End Function


Das ganze ist wohl im .Net und gehört zu einer Eigenentwicklung ala QChecker; sollte aber alles auch für VBA ableitbar sein...

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 23. Jul. 2015 11:43    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 kalanja 10 Unities + Antwort hilfreich

Hallo Leut,

ich hab mal versucht die Quersumme aus den bisherigen Lösch-Beiträgen zusammen zu fassen.
Ergebnis nachfolgend:

Code:

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
 
  Set oDoc = CATIA.ActiveDocument
  Set oPart = oDoc.Part
  Set oSel = oDoc.Selection
 
  CATIA.RefreshDisplay = False
  DelEmptyGeoSets oPart

  oSel.Clear
  'Schleife über alle Bodies
  For n = oPart.Bodies.Count To 1 Step -1
      Set oBody = oPart.Bodies.Item(n)
      DelEmptyGeoSets oBody
      If (oBody.Shapes.Count + oBody.hybridBodies.Count + oBody.Sketches.Count = 0) _
        And Not (oBody Is oPart.MainBody) Then
        oSel.Add oBody
        'Debug.Print oBody.Name
        oSel.Delete
        oSel.Clear
      End If
  Next
  CATIA.RefreshDisplay = True
  oPart.Update
  DoEvents
End Sub

Function DelEmptyGeoSets(oParent As Object) As Integer
  Dim oHB As HybridBody
  Dim n  As Integer
  Dim i  As Integer
 
  oSel.Clear
  'part-hybrid-bodies
  For n = oParent.hybridBodies.Count To 1 Step -1
      Set oHB = oParent.hybridBodies.Item(n)
      If oHB.hybridBodies.Count > 0 Then DelEmptyGeoSets oHB
      If (oHB.GeometricElements.Count + oHB.HybridSketches.Count + oHB.HybridShapes.Count) = 0 Then
        oSel.Add oHB
        i = i + 1
        'Debug.Print oHB.Name
        oSel.Delete
        oSel.Clear
      End If
  Next
  DelEmptyGeoSets = i
End Function



Das Skript löscht zuerst alle leeren Geosets im Part, danach alle leeren Parts.
Falls ein Geoset im Geoset im Part liegt etc., wird das auch rekursiv untersucht.

Berichtet!

Enjoy,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 255
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 23. Jul. 2015 12:02    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 kalanja 10 Unities + Antwort hilfreich

Hallo Joe,

der 1. Fall (Anhang oberes Bild) gelöst
der 2. Fall (unteres Bild) nicht gelöst

dennoch schönen Dank

Gruß
Peter

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 23. Jul. 2015 13:46    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 kalanja 10 Unities + Antwort hilfreich

Hallo Peter,

zu Fall 2: Heisst das, dass der Set gelöscht wird?

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

[Diese Nachricht wurde von joehz am 23. Jul. 2015 editiert.]

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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 255
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 23. Jul. 2015 13:48    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 kalanja 10 Unities + Antwort hilfreich

Hallo Joe,

ja, das komplette Geo-Set inkl. Linie

Gruß
Peter

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

cimnese
Mitglied
--


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

Beiträge: 45
Registriert: 13.10.2009

Catia V5 SP7 R20

erstellt am: 23. Jul. 2015 14:45    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 kalanja 10 Unities + Antwort hilfreich

Hallo Joe,
muß ich diesen Code als VB script in mein Makro kopieren ?

Wie gesagt bin kein Makro Spezialist

Gruß

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 23. Jul. 2015 15:11    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 kalanja 10 Unities + Antwort hilfreich

OK. Zweiter Versuch. Fall2:
Code:

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
 
  Set oDoc = CATIA.ActiveDocument
  Set oPart = oDoc.Part
  Set oSel = oDoc.Selection
 
  CATIA.RefreshDisplay = False
  DelEmptyGeoSets oPart

  oSel.Clear
  'Schleife über alle Bodies
  For n = oPart.Bodies.Count To 1 Step -1
      Set oBody = oPart.Bodies.Item(n)
      DelEmptyGeoSets oBody
      If (oBody.Shapes.Count + oBody.hybridBodies.Count + oBody.Sketches.Count = 0) _
        And Not (oBody Is oPart.MainBody) Then
        oSel.Add oBody
'        Debug.Print oBody.Name
        oSel.Delete
        oSel.Clear
      End If
  Next
  CATIA.RefreshDisplay = True
  oPart.Update
'  DoEvents
End Sub

Function DelEmptyGeoSets(oParent As Object) As Integer
  Dim oHB As HybridBody
  Dim n  As Integer
  Dim i  As Integer
 
  oSel.Clear
  'part-hybrid-bodies
  For n = oParent.hybridBodies.Count To 1 Step -1
      Set oHB = oParent.hybridBodies.Item(n)
      If oHB.hybridBodies.Count > 0 Then DelEmptyGeoSets oHB
      If (oHB.GeometricElements.Count + oHB.HybridSketches.Count + _
        oHB.HybridShapes.Count + oHB.hybridBodies.Count) = 0 Then
        oSel.Add oHB
        i = i + 1
'        Debug.Print oHB.Name
        oSel.Delete
        oSel.Clear
      End If
  Next
  DelEmptyGeoSets = i
End Function



Ich hab die Abfrage um HybridBodies erweitert.
Ausserdem Hab ich die 'Debug.Print' und 'DoEvents' - Anweisungen auskommentiert.
Die Skript-Engine mag die scheinbar nicht.

@cimnese:
Entweder den Code komplett in eine Textdatei(Notepad) kopieren und
als 'DelEmptyBodies.CATScript' abspeichern oder
den Code im VBA-Editor in ein leeres Modul kopieren, Modul umbenennen, abspeichern.
Letztere Lösung kommt für Dich im Moment wohl weniger in Frage.

Have fun.

Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

cimnese
Mitglied
--


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

Beiträge: 45
Registriert: 13.10.2009

Catia V5 SP7 R20

erstellt am: 23. Jul. 2015 15:45    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 kalanja 10 Unities + Antwort hilfreich

Hey Joe danke für die super Erklärung,
jetzt hab es sogar ich hinbekommen, leere Sets nimmt er weg das mit einer Linie muss ich noch probieren.

Vielen Dank für die Mühe

Gruß

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 23. Jul. 2015 16:13    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 kalanja 10 Unities + Antwort hilfreich


bmw_grundmodell.PNG

 
Hallo Leut',

Ich hab das Makro testhalber auf ein BMW-Grundmodell angewandt.
Falls die Modell-Struktur so aussieht, wie auf dem Bild:

Nachher sieht die Struktur anders aus :-)

Ob das OK ist, mus jeder selber wissen.

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 255
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 24. Jul. 2015 06:39    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 kalanja 10 Unities + Antwort hilfreich

Moin Joe,

Makro getestet und für sehr gut befunden,
vielen Dank

Und die Strukturen der Automobilisten sind mir schnuppe,
wir haben mit Autos nichts zu tun

Gruß
Peter

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 24. Jul. 2015 11: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 kalanja 10 Unities + Antwort hilfreich

Hallo,

ich hab das Makro noch als catvba abgelegt:

http://catia2.cad.de/index.php/de/downloads/skripts-applikationen/246-delpartbodies-makro-loescht-alle-leeren-bodies-in-einem-part

Enjoy,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Nutzvieh
Mitglied
Entwicklungskonstrukteur

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

Beiträge: 4
Registriert: 23.05.2016

Windows 7 Professional SP1 64 Bit
Intel Xeon 3,7GHz
64GB RAM
Catia V5 R26

erstellt am: 09. Feb. 2018 06: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 Nur für kalanja 10 Unities + Antwort hilfreich

Hallo zusammen.

Ich muss jetzt mal den alten Beitrag rauskramen und ich hoffe das mir noch jemand weiterhelfen kann.

Bei der suche nach einem Makro, das mir leere Geo-Sets löscht bin ich über das von Joe gestolpert.
Funktioniert soweit ganz gut. Danke dafür.

Was mir aber aufgefallen ist, leider löscht das Makro auch Geo-Sets in denen sich nur ein Axis System befindet.
Über den Sinn nur ein Axis System in einem Geo-Set zu haben lässt sich bestimmt streiten. Kommt aber durchaus mal vor.

Jetzt bin ich nach wie vor leider nicht so bewandert mit der Makro-Programmierung um das selbst auszubessern.

Ich haben versucht es da einzufügen wo es mir logisch erschien. Das hat dann aber dazu geführt das es nicht mehr funktionierte.   

Eingefügt hab ich folgendes:

Zitat:
Function DelEmptyGeoSets(oParent As Object) As Integer
  Dim oHB As HybridBody
  Dim n  As Integer
  Dim i  As Integer

  oSel.Clear
  'part-hybrid-bodies
  For n = oParent.hybridBodies.Count To 1 Step -1
      Set oHB = oParent.hybridBodies.Item(n)
      If oHB.hybridBodies.Count > 0 Then DelEmptyGeoSets oHB
      If (oHB.GeometricElements.Count + oHB.HybridSketches.Count + _
        oHB.HybridShapes.Count + oHB.hybridBodies.Count + o.HB.AxisSystems.Count) = 0 Then
        oSel.Add oHB
        i = i + 1
'        Debug.Print oHB.Name
        oSel.Delete
        oSel.Clear
      End If
  Next
  DelEmptyGeoSets = i
End Function

War aber nicht so wirklich zielführend.
Ist vielleicht jemand hier der mir sagen kann was nicht passt und wie ich es fixe?

Wäre sehr nett.

Schon mal Danke.

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: 11849
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Feb. 2018 12:38    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 kalanja 10 Unities + Antwort hilfreich

Servus

AFAIR kann man Achsensystem in GeoSet nicht direkt ansprechen.
Das geht vermutlich über den komplexeren Umweg: GeoSet selektieren und per Suche nach den Achsensystem in der Selektion suchen.

Gruß
Bernd

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

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