Hallo Zusammen,
ich möchte gerne eine Methode schreiben, um aus „Bohrungen mit Gewinden“, „Gewinden“ und „gemusterten Gewinden“ Zylinderflächen erzeugt werden. Diese Flächen werden für weitere Messungen benötigt. In diesem Makro sollen folgende Schritte realisiert werden:
1. Erzeugen ein Geometrical Set (Wenn dies vorhanden löschen und neu erzeugen)-> Erledigt.
2. Suchen nach Gewinden (und auch Bohrungen mit Gewinden) -> Erledigt
3. Lesen die Gewinde-Parameter (Länge, Durchmesser, Radius, Richtung) -> Erledigt
4. Erzeugen aus 3 ein Zylinderfläche (im Workbench Generative Shape Design). Dies sollte in dem ober erzeugten Geometrical Set eingefügt werden. -> noch Offen
5. Suchen nach „UserPattern“, “Rectangular Pattern“, „Circular Pattern“, die Gewinde oder Bohrungen mit Gewinden haben, und für jedes Gewinde eine Zylinderfläche (HybridShapeCylinder) erzeugen. -> noch Offen
Vielen Dank und viele Grüße
Estafanos
'Code
Sub CATMain()
CreateGeoSet 'Erzeugen ein Geoset, wenn vorhanden, dann löschen und ein neues erzeugen
Dim oSelection As Selection
Dim oPartDoc As PartDocument
Dim arrHole() As Object
Dim oThread As Thread
Dim i As Integer
Set oPartDoc = CATIA.ActiveDocument
Set oSelection = oPartDoc.Selection
oSelection.Clear
oSelection.Search "CATPrtSearch.Thread,all"
If oSelection.Count > 0 Then
For i = 1 To oSelection.Count
Set oThread = oSelection.Item(i).Value
Dim x As Variant
xDiameter = oThread.Diameter 'Gewinde Durchmesser
X2Diameter = oThread.Diameter / 2 'Gewinde Radius
yDepth = oThread.Depth 'Gewinde Tiefe
Dim o As Double
o = oThread.Pitch 'Steigung
xLateralFaceElement = oThread.LateralFaceElement.Name
Dim Richtung 'As CatThreadSide
Richtung = oThread.Side
Dim ThreadDescription As StrParam
Set ThreadDescription = oThread.ThreadDescription
yy = oThread.LimitFaceElement.Name
Set hybridBody1 = oPartDoc.Part.hybridBodies.Item("G_Gewinde_Flaechen")
Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = oPartDoc.Part.HybridShapeFactory
'Hier soll ein Cylinder mit den angaben aus dem Gewinde erzeugt werden
Dim hybridShapeCylinder1 As HybridShapeCylinder
Set hybridShapeCylinder1 = hybridShapeFactory1.AddNewCylinder(reference2, 12#, 15#, 0#, hybridShapeDirection1)
'Einfuegen in dem GeoSet
hybridBody1.AppendHybridShape hybridShapeCylinder1
Next
Else
Exit Sub
End If
oSelection.Clear
'Hier soll nach UserPattern,Rectangular Pattern, Circular Pattern suchen, die Gewinde haben und für jedes Gewinde eine Fläche (HybridShapeCylinder) erzeugen
Dim oSelectionPattern As Selection
Set oSelectionPattern = CATIA.ActiveDocument.Selection
oSelectionPattern.Search "CATPrtSearch.Pattern,all"
Dim pattern1 As New Collection
For i = 1 To oSelectionPattern.Count
pattern1.Add oSelectionPattern.Item(i).Value
Next
For i = 1 To pattern1.Count
Set pat1 = pattern1.Item(i).ItemToCopy
Eltern = pattern1.Item(i).FeatureToLocatePositions.Name
oSelection.Clear
oSelection.Add pat1
oSelection.Clear
Next
End Sub
Sub CreateGeoSet()
Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As hybridBodies
Set hybridBodies1 = part1.hybridBodies
Dim hybridBody1 As HybridBody
For i = 1 To hybridBodies1.Count
If hybridBodies1.Item(i).Name = "G_Gewinde_Flaechen" Then
Gefunden = True
Else
Gefunden = False
End If
Next
If Gefunden = True Then
'Delete
Dim oSelection As Selection
Set oSelection = partDocument1.Selection
oSelection.Clear
Set hybridBody1 = hybridBodies1.Item("G_Gewinde_Flaechen")
oSelection.Add hybridBody1
oSelection.Delete
'Create
Set hybridBody1 = hybridBodies1.Add()
hybridBody1.Name = "G_Gewinde_Flaechen"
Else
Set hybridBody1 = hybridBodies1.Add()
hybridBody1.Name = "G_Gewinde_Flaechen"
End If
part1.Update
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP