Opdracht om de lengte van een open segment te krijgen (lijn, spline, enz...)?

Hallo

Ik ben op zoek naar de lengte van een lijn en een spline (zie de twee gecombineerd).

 

Ik kwam deze link tegen die bevat wat ik nodig heb (ik ben er tenminste zeker van), maar ik weet niet waar al deze commando's (Length, ArcLength, etc ...) precies mee overeenkomen en wat ik moet selecteren (entiteiten) om de juiste lengte te krijgen: 

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

 

 

Hallo

Probeer de baanlengtedimensie (in "slimme afmetingen")

Ik ben op zoek naar de juiste "macro" waarmee ik de lengte kan herstellen

Hallo

Selecteert u uw frontlinie met de hand?

Het is eerder deze link die je nodig hebt voor VBA (in plaats van VB.NET):

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

 

Ik gebruik SOLIDWORKS Visual Studio Tools for Application.

Het lijkt mij dat het in VB.net.

Afgezien van de syntaxis die een beetje verandert, biedt de link die ik gaf of degene die naar de VBA verwijst, precies hetzelfde.

Na een paar pogingen krijg ik geen andere waarde dan "-1", wat betekent dat ik "niets" meet.

@ PL. Ik selecteer niets met de hand. Ik maak een lijn of een spline, ik wil de entiteit selecteren en de lengte meten, allemaal zonder door de interface te gaan.

 

Bijgevoegd is een macro om een lijn te construeren en de lengte ervan te meten (met als resultaat -1)

 


exemple.txt

Ja, als u Visual Studio gebruikt, is het vb.net.

Is uw lijn op het scherm geselecteerd voordat u met de meting begint?

Heb je de VBA-meetinstructie in SolidWorks geprobeerd door een met de hand gemaakte lijn te selecteren? Werkt het?

@ .PL,

Ik weet niet zeker of ik je zal volgen: waarom kijken op het scherm als het is geselecteerd de regel wanneer ik ben scripting van de macro? En ik heb de instructie geprobeerd in VB.net niet VBA (maar het is hetzelfde, dus ik zal het niet in VBA doen).

Hoe dan ook, als ik de macro probeer op te slaan om iets te meten, is er geen spoor van een functie voor meting, alleen het commando voor het selecteren van entiteiten.

Sterker nog, ik twijfel over wat ik moet selecteren (met de SelectByID2-functie) om een lijn, een spline te meten of de coördinaten van een punt op te halen?  Op dit moment is het enige resultaat dat ik heb "-1"

Hallo 

Ik heb een eenvoudige vraag, met behulp van het meetinstrument met de "Ctrl" -toets geeft  u een totale lengte van de schets. Is deze methode niet geschikt? Eenvoudige, eenvoudige  oplossing die resultaten geeft.

Moge de kracht met je zijn.


lg.jpg
3 likes

Ja, ik stelde de vraag voor het geval je aan het testen was in VBA en niet VB.NET.

Anders een link naar een voorbeeld:

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

Zie ook:

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

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

Of misschien moet je deze GetLength3 instructie gebruiken:

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

 

@ OBI WAN

Ja, met de meettool kan ik visueel de lengtes, afstanden en coördinaten ophalen die ik op het scherm wil hebben. Maar ik wil er wat berekeningen achter doen om de punten op de baan gelijkmatig te verdelen en dit alles automatisch. Dus ik heb de vba/vbnet functies nodig om het te doen

 

@ .PL

Ik heb het probleem opgelost met de functies die te vinden zijn in de solidworks API-help (eerste link die ik gaf voor het vbnet en degene die je hebt aangegeven voor de vba). Om de entiteiten te kunnen meten moest ik uit de schets komen met de opdracht:

swDoc.SketchManager.Insert3DSketch(True)

Voor de rest heb ik de juiste entiteit geselecteerd en de functies/commando's gebruikt die in de API-help te vinden zijn:

Voorbeeld voor de meting van een lijn, spline en vervolgens de twee entiteiten:

        ' Lijnlengte meten
        boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Niets)
        Ll = swMeasure.Length
        Debug.Print("lijnlengte =" & ll * 1000 & " mm")
        swDoc.SketchManager.Insert3DSketch(True)
        swDoc.ClearSelection2(Waar)

       ' Meting lengte spline 1
        boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Niets)
        LS1 = swMeasure.ArcLength
        Debug.Print("spline lengte1=" & LS1 * 1000 & " mm")
        swDoc.SketchManager.Insert3DSketch(True)
        swDoc.ClearSelection2(Waar)

        • Meting van de totale lengte van de neutrale mesh-vezel
        boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nothing, 0)
        boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, True, 0, Nothing, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Niets)
        Lt = swMeasure.TotalLength
        Debug.Print("Lengte Lt=" & Lt * 1000 & " mm")

 

Bedankt voor je hulp