Wat zijn de sleutelwoorden voor het maken van een spline met tangens aandrijving?

Hoi allemaal

Ik ben een beginner op het gebied van SW en ik ben geïnteresseerd in het maken van macro's voor trajectconstructie.

Ik probeer het traject van een industrieel breigaren zo getrouw mogelijk na te bootsen.  Het traject loopt door 4 punten en voor de constructie worden lijnen en splines gebruikt.

Dankzij macro-opname was ik in staat om het script op te halen dat nodig was om punten te maken, lijnen en splines te bouwen.

Ik moet echter controle hebben over de raaklijnen van het begin- en eindpunt (die worden berekend). Helaas, als ik macro-opname gebruik en de spline bouw met tangens rijden, zie ik geen nieuwe "functie" verschijnen.

Is het mogelijk om deze functie te herstellen?

 

Hier is het save script dat ik kreeg na handmatige bouw (er zijn waarschijnlijk nog wat onnodige regels over):

Gedeeltelijke klasse SolidWorksMacro

Openbare Sub main()
Dim swDoc als ModelDoc2 = Niets
Dim swPart As PartDoc = Niets
Dim swDrawing As DrawingDoc = Niets
Dim swAssembly As AssemblyDoc = Niets
Dim boolstatus As Booleaanse = onwaar
Dim longstatus als geheel getal = 0
Dim longwarnings als geheel getal = 0
swDoc = CType(swApp.ActiveDoc,ModelDoc2)
swDoc.SketchManager.Insert3DSketch(true)
'
Dim skSegment As SketchSegment = Niets
skSegment = CType(swDoc.SketchManager.CreateLine(0,000000, 0,000000, -0,002000, 0,004000, -0,000500),SketchSegment)
swDoc.SetPickMode()
swDoc.ClearSelection2(waar)
'
Dim pointArray As Array = Niets
Dim punten(8) Aas Dubbel
punten(0) = -0,002
punten(1) = 0,004
punten(2) = -0,0005
punten(3) = 0,004
punten(4) = 0,008
punten(5) = -0,0015
punten(6) = 0,016
punten(7) = 0,009
punten(8) = -0,002
pointArray = punten
skSegment = CType(swDoc.SketchManager.CreateSpline(pointArray),SketchSegment)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0, 0.0, 0, False, 0, Niets, 0)
swDoc.ShowNamedView2("*Links", 3)
swDoc.ClearSelection2(waar)
swDoc.EditUndo2(1)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.00700000000000000062, 0.0060299676105561159, -0.0010150801486359592, onwaar, 0, Niets, 0)
swDoc.ShowNamedView2("*Gezicht", 1)
swDoc.ShowNamedView2("*Links", 3)
swDoc.ClearSelection2(waar)
swDoc.EditUndo2(1)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.006999999999999999984, 0.0049025748626198599, -0.00080798849755920818, onwaar, 0, Niets, 0)
swDoc.ShowNamedView2("*Gezicht", 1)
swDoc.ClearSelection2(waar)
swDoc.SketchManager.Insert3DSketch(true)
Einde Sub

''' <samenvatting>
''' De SldWorks swApp-variabele is vooraf voor u toegewezen.
''' </samenvatting>
Openbare swApp als SldWorks


Einde les

Nogmaals bedankt

 

Hallo

Dit is de AddCurvatureControl-methode , hier is de helppagina:

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

Zie dit voorbeeld van SolidWorks:

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

@ .PL,

 

bedankt voor de informatie, maar het is me niet gelukt om AddTangencyControl te gebruiken.

Ik heb op dit moment niet genoeg controle.

Ik vond echter iets tussenliggends door tangentierelaties op te leggen tussen lijn en spline (ik moest een extra punt en een lijn in het vlak creëren die goed past om de tagente op het eindpunt op te leggen):

boolstatus = swDoc.Extension.SelectByID2("Lijn1", "SCHETSSEGMENT", 0.001252185401910166,         0.0021753914154531259, 0.00035, Onwaar, 0, Niets, 0)
boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0012466358052038895, 0.0021750333769559468, 0.00035, True, 0, Niets, 1)
swDoc.SketchAddConstraints("sgTANGENT")

 

Een kleine aanvullende vraag:

bij het selecteren van een entiteit (punt, lijn, enz.) met SelectByID2, komen de numerieke waarden overeen met iets specifieks (coördinaten?, andere?).


vues.jpg

  "Bewerken":

Ik was in staat om het AddTangencyControl commando toe te voegen. Hieronder zie je mijn voorbeeld.

Aan de andere kant lijkt het erop dat het alleen de middelen geeft om de tangens handmatig op de GUI te regelen zodra de macro is uitgevoerd. Bovendien wordt de besturing alleen toegepast op het laatste punt van de spline en heeft deze geen invloed, welke coördinaten ook worden ingevoerd.

Ben ik iets vergeten?

Ik vond een ander voorbeeld (nog niet getest) in "Get and Set Spline Handles Example (VBA)"  hier:

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

Aangezien ik mijn raaklijnen op bepaalde punten (begin en einde) wil opleggen, moet ik in plaats daarvan niet gebruiken:

swSpline. GetSplineHandles()

TangentMagnitude

TangentRadialDirection

 

??

  Openbare Sub main()

        Dim swDoc als ModelDoc2 = Niets
        Dim swPart As PartDoc = Niets
        Dim swDrawing As DrawingDoc = Niets
        Dim swAssembly As AssemblyDoc = Niets
        Dim boolstatus As Booleaanse = Onwaar
        Dim longstatus als geheel getal = 0
        Dim longwarnings als geheel getal = 0


        Dim swSpline als SketchSpline = niets
        Dim swSplineH1 als SplineHandle = niets

        swDoc = CType(swApp.ActiveDoc, ModelDoc2)
        swDoc.SketchManager.Insert3DSketch(True)
        Dim skSegment As SketchSegment = Niets
        skSegment = CType(swDoc.SketchManager.CreateLine(0,0, 0,0, 0,0, -0,0002, 0,00087, 0,000175), SketchSegment)
        swDoc.SketchAddConstraints("sgFIXED")

        swDoc.ClearSelection2(waar)
        "
        Dim pointArray As Array = Niets
        Dim punten(8) Aas Dubbel
        punten(0) = -0,0002
        punten(1) = 0,00087
        punten(2) = 0,000175
        punten(3) = 0,0002
        punten(4) = 0,00203
        punten(5) = 0,000525
        punten(6) = 0,00125
        punten(7) = 0,002175
        punten(8) = 0,0007
        pointArray = punten
        skSegment = CType(swDoc.SketchManager.CreateSpline(pointArray), SketchSegment)
        swDoc.ClearSelection2(Waar)
 

        boolstatus = swDoc.Extension.SelectByID2("Spline1", "SKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)

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


        swDoc.SketchManager.Insert3DSketch(True)
        swDoc.ClearSelection2(Waar)
       
    Einde Sub