Befehl, um die Länge eines offenen Segments (Linie, Spline usw.) zu ermitteln?

Hallo

Ich versuche, die Länge einer Linie und eines Splines wiederherzustellen (siehe die beiden kombiniert).

 

Ich bin auf diesen Link gestoßen, der das enthält, was ich brauche (zumindest bin ich mir sicher), aber ich weiß nicht, was genau all diese Befehle (Length, ArcLength, etc ...) entsprechen und was ich auswählen muss (Entitäten), um die richtige Länge zu erhalten: 

http://help.solidworks.com/2016/english/api/sldworksapi/Measure_Selected_Entities_Example_VBNET.htm

 

 

Hallo

Probieren Sie die Bahnlängendimension aus (in "intelligenten Dimensionen")

Ich bin auf der Suche nach dem richtigen "Makro", mit dem ich die Länge wiederherstellen kann

Hallo

Wählen Sie Ihre Frontlinie von Hand aus?

Es ist eher dieser Link, den Sie für VBA benötigen (und nicht VB.NET):

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

 

Ich verwende SOLIDWORKS Visual Studio Tools for Application.

Es scheint mir, dass es in VB.net ist.

Abgesehen von der Syntax, die sich ein wenig ändert, bietet der Link, den ich angegeben habe oder der auf die VBA verweist, genau dasselbe.

Nach ein paar Versuchen bekomme ich keinen anderen Wert als "-1", was bedeutet, dass ich "nichts" messe.

@ PL. Ich wähle nichts von Hand aus. Ich erstelle eine Linie oder einen Spline, ich möchte das Element auswählen und seine Länge messen, ohne die Schnittstelle zu durchlaufen.

 

Angehängt ist ein Makro zum Erstellen einer Linie und zum Messen ihrer Länge (mit dem Ergebnis -1)

 


exemple.txt

Ja, wenn Sie Visual Studio verwenden, ist es vb.net.

Ist Ihre Linie auf dem Bildschirm ausgewählt , bevor Sie die Messung starten?

Haben Sie die VBA-Messanweisung in SolidWorks ausprobiert, indem Sie eine von Hand erstellte Linie ausgewählt haben? Funktioniert es?

@ .PL,

Ich bin mir nicht sicher, ob ich Ihnen folgen werde: Warum auf den Bildschirm schauen, wenn die Zeile ausgewählt ist, wenn ich das Makro skripte? Und ich habe die Anleitung in VB.net nicht VBA ausprobiert (aber es ist dasselbe, also werde ich es nicht in VBA tun).

Wie auch immer, wenn ich versuche, das Makro zu speichern, um etwas zu messen, gibt es keine Spur einer Funktion zum Messen, nur den Befehl zur Auswahl der Entität.

Tatsächlich habe ich Zweifel daran, was ich (mit der Funktion SelectByID2) auswählen soll, um eine Linie, einen Spline zu messen oder die Koordinaten eines Punktes abzurufen?  Im Moment ist das einzige Ergebnis, das ich habe, "-1"

Hallo 

Ich habe eine einfache Frage, die Verwendung des Messwerkzeugs mit der "Strg" -Taste ergibt  eine Gesamtlänge der Skizze. Ist diese Methode nicht geeignet? Einfache, einfache  Lösung, die Ergebnisse liefert.

Möge die Macht mit euch sein.


lg.jpg
3 „Gefällt mir“

Ja, ich habe die Frage gestellt, falls Sie in VBA testen und nicht VB.NET.

Andernfalls ein Link zu einem Beispiel:

https://forum.solidworks.com/thread/107636

Siehe auch:

https://forum.solidworks.com/thread/34496

https://forum.solidworks.com/thread/63630

Oder vielleicht sollten Sie diese GetLength3-Anweisung verwenden:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ICurve~GetLength3.html

 

@ 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