Code:
Sub CATMain()' Ist genau ein GeoSet selektiert?
Dim selektion1 As Selection
Set selektion1 = CATIA.ActiveDocument.Selection
If selektion1.Count = 1 Then
If selektion1.Item(1).Type <> "HybridBody" Then ' kein GeoSet gewählt
MsgBox("Es ist kein GeoSet ausgewählt.")
Exit Sub
End If
Else MsgBox("Es ist genau ein GeoSet mit den Schnittebenen auszuwählen.")
Exit Sub
End If ' alles okay!
' In welchem Part befinden wir uns?
Dim dasPart As Part
Set dasPart = selektion1.Item(1).Value.Parent.Parent.Parent
MsgBox(dasPart.Name)
' Casten der Section in einen HybridBody
Dim schnittOrdner As HybridBody
Set schnittOrdner = selektion1.Item(1).Value
' Das Wurzel-Produkt soll die Schnitte erhalten
Dim wurzel As Product
Set wurzel = CATIA.ActiveDocument.Product.Products.Item(1)
' Anzahl der Elemente
Dim anzahl As Integer
anzahl = schnittOrdner.HybridShapes.Count
' Große Schleife
Dim plane1Name,pfad As String
' Pfad definieren
[...]
selektion1.Clear
Dim selektQuelle, selektZiel As Selection
Set selektQuelle = CATIA.ActiveDocument.Selection
Set selektZiel = CATIA.ActiveDocument.Selection
selektQuelle.Clear
' ---
Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Item(dasPart.Name)
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
' ---
Dim hybridShapeToCopy As HybridShape
set secs = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections")
Dim fa(2), sa(2), op(2), mat(11)
For i=1 to anzahl
Set plane1 = schnittOrdner.HybridShapes.Item(i)
plane1Name = plane1.Name
plane1.GetFirstAxis fa
plane1.GetSecondAxis sa
plane1.GetOrigin op
set sec = secs.Add()
mat(0) = fa(0)
mat(1) = fa(1)
mat(2) = fa(2)
mat(3) = sa(0)
mat(4) = sa(1)
mat(5) = sa(2)
mat(6) = fa(1) * sa(2) - fa(2) * sa(1)
mat(7) = fa(2) * sa(0) - fa(0) * sa(2)
mat(8) = fa(0) * sa(1) - fa(1) * sa(0)
mat(9) = op(0)
mat(10) = op(1)
mat(11) = op(2)
sec.SetPosition mat
' Dateinamen generieren mit Zufallszahl
[...]
' Datei schreiben
[...]
' Geometrie kopieren
Set hybridShapeToCopy = CATIA.Documents.Item(dateiName & ".CATPart").Part.HybridBodies.Item("Geometrical Set.1").HybridShapes.Item(1)
selektQuelle.Add hybridShapeToCopy
hybridShapeToCopy.Name = "Kurve" & i
MsgBox(selektQuelle.Item(1).Value.Name)
selektQuelle.Copy
partDocument1.Activate
part1.InWorkObject = schnittOrdner
' Geometrie einfuegen
Set selektZiel=partDocument1.Selection
selektZiel.Add schnittOrdner
selektZiel.PasteSpecial "CATPrtResultWithOutLink"
part1.Update
' Selections leeren
selektQuelle.Clear
selektZiel.Clear
Next
wurzel.Update
End Sub