@ OBI WAN
Ja, mit dem Messwerkzeug kann ich die Längen, Entfernungen und Koordinaten, die ich auf dem Bildschirm haben möchte, visuell abrufen. Aber ich möchte dahinter einige Berechnungen durchführen, um die Punkte auf der Flugbahn gleichmäßig zu verteilen und das alles automatisch. Also brauche ich die vba/vbnet-Funktionen, um das zu tun
@ .PL
Ich habe das Problem mit den Funktionen gelöst, die in der Solidworks API-Hilfe zu finden sind (der erste Link, den ich für das VBnet angegeben habe, und der, den Sie für das VBA angegeben haben). Um die Objekte messen zu können, musste ich mit dem Befehl aus der Skizze herauskommen:
swDoc.SketchManager.Insert3DSketch(Wahr)
Für den Rest habe ich die richtige Entität ausgewählt und die Funktionen/Befehle verwendet, die in der API-Hilfe zu finden sind:
Beispiel für die Messung einer Linie, eines Splines und dann der beiden Elemente:
' Messen Sie die Zeilenlänge
boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nichts, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nichts)
Ll = swMeasure.Length
Debug.Print("Zeilenlänge=" & ll * 1000 & " mm")
swDoc.SketchManager.Insert3DSketch(Wahr)
swDoc.ClearSelection2(Wahr)
' Messlänge Spline 1
boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, Falsch, 0, Nichts, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nichts)
LS1 = swMeasure.ArcLength
Debug.Print("Spline-Länge1=" & LS1 * 1000 & " mm")
swDoc.SketchManager.Insert3DSketch(Wahr)
swDoc.ClearSelection2(Wahr)
• Messung der Gesamtlänge der neutralen Mesh-Faser
boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nichts, 0)
boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, True, 0, Nichts, 0)
swMeasure = swDoc.Extension.CreateMeasure
swMeasure.ArcOption = 0
boolstatus = swMeasure.Calculate(Nichts)
Lt = swMeasure.TotalLength
Debug.Print("Länge Lt=" & Lt * 1000 & " mm")
Danke für Ihre Hilfe