Was sind die Schlüsselwörter für die Erstellung eines Splines mit Tangentialantrieb?

Hallo ihr alle

Ich bin ein Anfänger in SW und interessiere mich für die Erstellung von Makros für die Trajektorienkonstruktion.

Ich versuche, den Werdegang eines industriellen Strickgarns so originalgetreu wie möglich nachzubilden.  Die Trajektorie verläuft durch 4 Punkte und für ihre Konstruktion werden Linien und Splines verwendet.

Dank der Makroaufzeichnung war ich in der Lage, das Skript abzurufen, das zum Erstellen von Punkten, zum Erstellen von Linien sowie zum Erstellen von Splines erforderlich war.

Ich muss jedoch die Kontrolle über die Tangenten des Start- und Endpunkts (die berechnet werden) haben. Leider sehe ich, wenn ich die Makroaufzeichnung verwende und den Spline mit Tangentenantrieb aufbaue, keine neue "Funktion".

Ist es möglich, diese Funktion wiederherzustellen?

 

Hier ist das Speicherskript, das ich nach der manuellen Erstellung erhalten habe (es sind wahrscheinlich noch einige unnötige Zeilen übrig):

Partielle Klasse SolidWorksMacro

Öffentlicher Sub main()
Dim swDoc As ModelDoc2 = Nichts
Dim swPart As PartDoc = Nichts
Dim swDrawing As DrawingDoc = Nichts
Dim swAssembly As AssemblyDoc = Nichts
Dim boolstatus Als boolescher Wert = falsch
Dim longstatus als Ganzzahl = 0
Longwarnings als Ganzzahl = 0 dimmen
swDoc = CType(swApp.ActiveDoc,ModelDoc2)
swDoc.SketchManager.Insert3DSketch(wahr)
'
Dim skSegment As SketchSegment = Nichts
skSegment = CType(swDoc.SketchManager.CreateLine(0,000000, 0,000000, 0,000000, -0,002000, 0,004000, -0,000500),SketchSegment)
swDoc.SetPickMode()
swDoc.ClearSelection2(wahr)
'
Dim pointArray As Array = Nichts
Dim-Punkte(8) Ass Doppel
Punkte(0) = -0,002
Punkte(1) = 0,004
Punkte(2) = -0,0005
Punkte(3) = 0,004
Punkte(4) = 0,008
Punkte(5) = -0,0015
Punkte(6) = 0,016
Punkte(7) = 0,009
Punkte(8) = -0,002
pointArray = Punkte
skSegment = CType(swDoc.SketchManager.CreateSpline(pointArray),SketchSegment)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0, 0.0, 0, Falsch, 0, Nichts, 0)
swDoc.ShowNamedView2("*Links", 3)
swDoc.ClearSelection2(wahr)
swDoc.EditUndo2(1)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.007000000000000000062, 0.0060299676105561159, -0.0010150801486359592, false, 0, Nichts, 0)
swDoc.ShowNamedView2("*Gesicht", 1)
swDoc.ShowNamedView2("*Links", 3)
swDoc.ClearSelection2(wahr)
swDoc.EditUndo2(1)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.00699999999999999999994, 0.0049025748626198599, -0.00080798849755920818, false, 0, Nichts, 0)
swDoc.ShowNamedView2("*Gesicht", 1)
swDoc.ClearSelection2(wahr)
swDoc.SketchManager.Insert3DSketch(wahr)
Ende Sub

''' <Zusammenfassung>
''' Die Variable SldWorks swApp ist Ihnen vorab zugewiesen.
''' </Zusammenfassung>
Öffentliche swApp als SldWorks


End-Klasse

Danke noch einmal

 

Hallo

Dies ist die AddCurvatureControl-Methode , hier ist die Hilfeseite:

http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.ISketchSpline~AddCurvatureControl.html

Sehen Sie sich dieses Beispiel aus SolidWorks an:

http://help.solidworks.com/2015/English/api/sldworksapi/Set_Spline_Tangency_and_Curvature_Controls_Example_VB.htm
 

@ .PL,

 

Danke für die Informationen, aber ich habe es nicht geschafft, AddTangencyControl zu verwenden.

Ich habe im Moment nicht genug Kontrolle.

Ich habe jedoch etwas Zwischending gefunden, indem ich Tangentialbeziehungen zwischen Linie/Spline auferlegt habe (ich musste einen zusätzlichen Punkt und eine Linie in der Ebene erstellen, die gut geeignet ist, um die Tagente am Endpunkt zu erzwingen):

boolstatus = swDoc.Extension.SelectByID2("Zeile1", "SKETCHSEGMENT", 0.001252185401910166,         0.0021753914154531259, 0.00035, Falsch, 0, Nichts, 0)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0012466358052038895, 0.0021750333769559468, 0.00035, True, 0, Nichts, 1)
swDoc.SketchAddConstraints("sgTANGENT")

 

Eine kleine Zusatzfrage:

Wenn Sie eine Entität (Punkt, Linie usw.) mit SelectByID2 auswählen, entsprechen die numerischen Werte etwas Bestimmtem (Koordinaten?, andere?).


vues.jpg

  "Bearbeiten":

Ich konnte den Befehl AddTangencyControl hinzufügen. Unten ist mein Beispiel.

Auf der anderen Seite scheint es, dass es nur die Möglichkeit gibt, die Tangente manuell in der GUI zu steuern, sobald das Makro ausgeführt wird. Außerdem wird das Steuerelement nur für den letzten Punkt des Splines angewendet und hat unabhängig davon, welche Koordinaten eingegeben werden, keinen Einfluss.

Habe ich etwas vergessen?

Ein weiteres Beispiel (noch nicht getestet) habe ich in "Get and Set Spline Handles Example (VBA)"  hier gefunden:

help.solidworks.com/2016/English/api/sldworksapi/Get_and_Set_Spline_Handles_Example_VB.htm

Da ich meine Tangenten an bestimmten Punkten (Start und Ende) durchsetzen möchte, sollte ich nicht stattdessen verwenden:

swSpline. GetSplineHandles()

Tangentiale Größe

TangentenRadialRichtung

 

??

  Öffentlicher Sub main()

        Dim swDoc As ModelDoc2 = Nichts
        Dim swPart As PartDoc = Nichts
        Dim swDrawing As DrawingDoc = Nichts
        Dim swAssembly As AssemblyDoc = Nichts
        Dim boolstatus Als boolescher Wert = Falsch
        Dim longstatus als Ganzzahl = 0
        Longwarnings als Ganzzahl = 0 dimmen


        Dim swSpline As SketchSpline = Nichts
        Dim swSplineH1 As SplineHandle = Nichts

        swDoc = CType(swApp.ActiveDoc, ModelDoc2)
        swDoc.SketchManager.Insert3DSketch(Wahr)
        Dim skSegment As SketchSegment = Nichts
        skSegment = CType(swDoc.SketchManager.CreateLine(0.0, 0.0, 0.0, -0.0002, 0.00087, 0.000175), SketchSegment)
        swDoc.SketchAddConstraints("sgFIXED")

        swDoc.ClearSelection2(wahr)
        "
        Dim pointArray As Array = Nichts
        Dim-Punkte(8) Ass Doppel
        Punkte(0) = -0,0002
        Punkte(1) = 0,00087
        Punkte(2) = 0,000175
        Punkte(3) = 0,0002
        Punkte(4) = 0,00203
        Punkte(5) = 0,000525
        Punkte(6) = 0,00125
        Punkte(7) = 0,002175
        Punkte(8) = 0,0007
        pointArray = Punkte
        skSegment = CType(swDoc.SketchManager.CreateSpline(pointArray), SketchSegment)
        swDoc.ClearSelection2(Wahr)
 

        boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0, 0.0, 0.0, Falsch, 0, Nichts, 0)

        swSpline = swDoc.SelectionManager.GetSelectedObject6(1, 0)
        swSplineH1 = swSpline.AddTangencyControl(-0,0002; 0,00087; 0,000175)


        swDoc.SketchManager.Insert3DSketch(Wahr)
        swDoc.ClearSelection2(Wahr)
       
    Ende Sub