Hallo Leute,
Ich bin gerade dabei ein Makro zu schreiben, aber ich komme irgendwie nicht mehr weiter.
Die Ausgangssituation:
der User hat ein Product geöffnet und startet das makro. Innerhalb des Produktes gibt es eine unterschiedliche Part und Productstruktur auf mehreren Produktebenen.
Das Makro soll nun durch das Produkt des Users laufen und auf der 1. Produktebene von allen Parts den Namen des Hauptkörpers auslesen und mir im 1. Part des Produktes (STRG-Part) ein Geometrisches Set mit dem Namen anlegen lassen.
Dazu hab ich schonmal was ausgearbeitet.
- aber ich bekomme für jedes Objekt immer ein Produkt angezeigt (wenn ich Typename durchführen lasse) ob wohl es ein Part ist.
- wie bekomme ich es hin das das 1. part im Produkt als Part deklariert wird? (damit man später die Struktur abbilden lassen kann?)
vielen dank schonmal für eure Hilfe.
lg beny
Anbei der Code:
Sub Test()
'Deklarieren und Setzen der Objecte
Dim DocS As Documents
Set DocS = CATIA.Documents
Dim UserProductDocument As ProductDocument
Set UserProductDocument = CATIA.ActiveDocument
Dim UserProduct As Products
Set UserProduct = UserProductDocument.Product
Dim STRGPartProduct As Product
Set STRGPartProduct = UserProductDocument.Product.Products.Item(1)
Dim Partanzahl As Long
Partanzahl = UserProduct.Count
MsgBox "TestMessage: In dem geöffneten Product existieren___ " & Partanzahl & " ___Komponenten"
MsgBox "TestMessage: Der Name des 1. Parts (STRG-Part) ist___ " & STRGPartProduct.name
Dim Objct As Object
Set Objct = STRGPartProduct
Dim STRGPart As Part
Dim AktuellesPart As Product
Dim Objectname As String
'Schleife welche alle Objecte des Products durchgeht und von allen Parts den Hauptkörper ausliest und im STRG-Part (1.Part im Product) eine bestimmte struktur anlegt.
Dim I As Long
For I = 1 To Partanzahl
Set AktuellesPart = UserProductDocument.Product.Products.Item(I)
MsgBox "TestMessage: Typename des__ " & I & " .Objects des Products ist ein__ " & TypeName(AktuellesPart)
'es werden immer nur Producte als Typename angezeigt? aber es sind doch parts?
If TypeName(AktuellesPart) <> "Part" Then
'Hier wird normal weitergemacht und jedes Document was kein Part ist übersprungen ohne änderung
Else
Objectname = InStr(1, Objectname, UserProductDocument.Product.PartNumber, vbTextCompare) - 1
MsgBox Objectname
Select Case Objectname
Case "STRG"
Case "DMU"
Case Else
'Anlegen der Einfuegestruktur
'-------[HybridBody] #Name des jeweiligen Parts (Nummer I) unter dem Product
Dim GSHBS_Partname As HybridBodies
Set GSHBS_Partname = STRGPart.HybrirdBodies
Dim GSHB_Partname As HybridBody
Set GSHB_Partname = GSHBS_Partname.Add()
GSHB_Partname.name = GSHBS_Partname
STRGPart.InWorkObject = GSHB_Partname
STRGPart.Update
'GSHBS_Partname = GeometrischesSetHybridBodieS_Partname
'GSHB_Partname = GeometrischesSetHybridBody_Partname
'-------[HybridBody] Hilfselemente
Dim GSHBS_HEPN As HybridBodies
Set GSHBS_HEPN = GSHB_Partname.HybridBodies
Dim GSHB_HEPN As HybridBody
Set GSHB_HEPN = GSHBS_HEPN.Add()
GSHB_HEPN.name = "Hilfselemente"
STRGPart.InWorkObject = GSHB_HEPN
STRGPart.Update
'GSHBS_HEPN = GeometrischesSetS_Hilfselemente Partname
'GSHB_HEPN = GeometrischesSet_Hilfselemente Partname
'-------[HybridBody] Positionsebenen
Dim GSHBS_Poseb As HybridBodies
Set GSHBS_Poseb = GSHB_Partname.HybridBodies
Dim GSHB_Poseb As HybridBody
Set GSHB_Poseb = GSHBS_Poseb.Add()
GSHB_Poseb.name = "Positionsebenen"
STRGPart.InWorkObject = GSHB_Poseb
STRGPart.Update
'GSHBS_Poseb = GeometrischesSet_Positionsebenen
'GSHB_Poseb = GeometrischesSet_Positionsebenen
End Select
End If
Next
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP