Code:
Private Sub CreateSketchLine(ByRef PointCount As Integer, ByRef LengthLine As String, ByRef oDirection As String)
' Variablen deklarieren
Set oDoc = CATIA.ActiveDocument
Set oPart = oDoc.Part
Set HybBodies = oPart.HybridBodies On Error Resume Next
Set HybBody = HybBodies.Item("Bohrpunkte")
If Err.Number <> 0 Then
Set HybBody = HybBodies.Add()
HybBody.Name = "Bohrpunkte"
End If
Set oSketches = HybBody.HybridSketches
' Anzahl Punkte definieren
Dim PointToCreate As Integer
PointToCreate = PointCount - 2
' Koordinaten definieren
If oDirection = "HDirection" Then
X1 = "0"
Y1 = "0"
X2 = LengthLine
Y2 = "0"
End If
If oDirection = "VDirection" Then
X1 = "0"
Y1 = "0"
X2 = "0"
Y2 = LengthLine
End If
' Referenzfläche selektieren
Set oSel = oDoc.Selection
oSel.Clear
ReDim sFilter(1)
sFilter(0) = "Plane"
sFilter(1) = "Face"
Box = oSel.SelectElement2(sFilter, "", True)
If (Box = "Cancel") Then
Exit Sub
End If
' Sketch auf der Referenz erzeugen
If Box = "Normal" Then
Set oRef = oSel.Item(1).Value
Set oSketch = oSketches.Add(oRef)
End If
Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0#
arrayOfVariantOfDouble1(1) = 0#
arrayOfVariantOfDouble1(2) = 0#
arrayOfVariantOfDouble1(3) = 0#
arrayOfVariantOfDouble1(4) = 0#
arrayOfVariantOfDouble1(5) = 0#
arrayOfVariantOfDouble1(6) = 0#
arrayOfVariantOfDouble1(7) = 0#
arrayOfVariantOfDouble1(8) = 0#
' Sketch und Editor öffnen
oSketch.SetAbsoluteAxisData arrayOfVariantOfDouble1
oPart.InWorkObject = oSketch
Set factory2D1 = oSketch.OpenEdition()
oPart.InWorkObject = oSketch
' Geometrien erzeugen
Set geometricElements1 = oSketch.GeometricElements
Set axis2D1 = geometricElements1.Item("AbsoluteAxis")
' Linie (Konstr.Elemente) mit zwei Eckpunkten erstellen
Set point2D1 = factory2D1.CreatePoint(X1, Y1)
point2D1.Construction = False
Set point2D2 = factory2D1.CreatePoint(X2, Y2)
point2D2.Construction = False
Set line2D1 = factory2D1.CreateLine(X1, Y1, X2, Y2)
line2D1.StartPoint = point2D1
line2D1.EndPoint = point2D2
line2D1.Construction = True
' Länger der Linie definieren
Set constraints1 = oSketch.Constraints
Set reference1 = oPart.CreateReferenceFromObject(line2D1)
Set constraint1 = constraints1.AddMonoEltCst(catCstTypeLength, reference1)
constraint1.Mode = catCstModeDrivingDimension
Set length1 = constraint1.Dimension
length1.Value = LengthLine
' Linie horizontal, vertikal oder nicht ausrichten
Set geometricElements1 = oSketch.GeometricElements
Set axis2D1 = geometricElements1.Item("AbsoluteAxis")
Set line2D2 = axis2D1.GetItem(oDirection)
Set reference1 = oPart.CreateReferenceFromObject(line2D1)
Set reference2 = oPart.CreateReferenceFromObject(line2D2)
If oDirection = "HDirection" Then
Set constraint1 = constraints1.AddBiEltCst(catCstTypeHorizontality, reference1, reference2)
End If
If oDirection = "VDirection" Then
Set constraint1 = constraints1.AddBiEltCst(catCstTypeVerticality, reference1, reference2)
End If
' Symmetrische Zwischenpunkte erstellen falls nötig
' XXX
' XXX
' XXX
' XXX
' XXX
' XXX
' Sketch und Editor schließen
oSketch.CloseEdition
oPart.InWorkObject = oSketch
oPart.Update
On Error GoTo 0
End Sub