Polecenie, aby uzyskać długość otwartego segmentu (linii, splajnu itp.)?

Witam

Chcę odzyskać długość linii i splajnu (zobacz te dwa razem).

 

Natknąłem się na ten link, który zawiera to, czego potrzebuję (przynajmniej jestem tego pewien), ale nie wiem, czemu dokładnie odpowiadają te wszystkie polecenia (Length, ArcLength, itp...) i co wybrać (encje), aby uzyskać odpowiednią długość: 

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

 

 

Witam

Wypróbuj wymiar długości trajektorii (w "inteligentnych wymiarach")

Szukam odpowiedniego "makra", które pozwoliłoby mi odzyskać długość

Witam

Czy wybierasz linię frontu ręcznie?

To raczej ten link, którego potrzebujesz do VBA (a nie VB.NET):

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

 

Używam narzędzi SOLIDWORKS Visual Studio Tools for Application.

Wydaje mi się, że jest to w VB.net.

Poza składnią, która nieco się zmienia, podany przeze mnie link lub ten, który odnosi się do VBA, oferuje dokładnie to samo.

Po kilku próbach nie mogę uzyskać żadnej wartości innej niż "-1", co oznacza, że nie mierzę "niczego".

@PL. Niczego nie wybieram ręcznie. Tworzę linię lub splajn, chcę wybrać element i zmierzyć jego długość, a wszystko to bez przechodzenia przez interfejs.

 

W załączeniu znajduje się makro do konstruowania linii i mierzenia jej długości (z wynikiem -1)

 


exemple.txt

Tak, jeśli używasz programu Visual Studio, jest to vb.net.

Czy Twoja linia została wybrana na ekranie przed rozpoczęciem pomiaru?

Czy wypróbowałeś instrukcję pomiaru VBA w SolidWorks , wybierając linię utworzoną ręcznie? Czy to działa?

@.PL,

Nie jestem pewien, czy będę za tobą podążał: po co patrzeć na ekran, jeśli jest zaznaczona linia, gdy tworzę skrypt makra? I próbowałem instrukcji w VB.net nie VBA (ale to to samo, więc nie zrobię tego w VBA).

W każdym razie, kiedy próbuję zapisać makro do mierzenia czegokolwiek, nie ma śladu funkcji do pomiaru, tylko polecenie wyboru encji.

Tak naprawdę mam wątpliwości, co wybrać (za pomocą funkcji SelectByID2), aby zmierzyć linię, splajn lub pobrać współrzędne punktu?  Na razie jedyny wynik, jaki mam, to "-1"

Witam 

Mam proste pytanie, użycie narzędzia pomiarowego z "Ctrl" daje  całkowitą długość szkicu. Czy ta metoda nie jest odpowiednia? Podstawowe, proste  rozwiązanie, które daje efekty.

Niech Moc będzie z wami.


lg.jpg
3 polubienia

Tak, zadawałem pytanie na wypadek, gdybyś testował w VBA, a nie w VB.NET.

W przeciwnym razie link do przykładu:

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

Zobacz też:

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

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

A może powinieneś użyć tej instrukcji GetLength3 :

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

 

@ OBI WAN

Tak, za pomocą narzędzia pomiarowego mogę wizualnie odzyskać długości, odległości, współrzędne, które chcę zobaczyć na ekranie. Ale chcę zrobić za nim jakieś obliczenia, aby równomiernie rozłożyć punkty na trajektorii i wszystko to automatycznie. Więc potrzebuję do tego funkcji vba/vbnet

 

@ .PL

Rozwiązałem problem z funkcjami znajdującymi się w pomocy API solidworks (pierwszy link, który podałem dla vbnet, a ten, który wskazałeś dla vba). Aby móc zmierzyć byty, musiałem wyjść ze szkicu za pomocą polecenia:

swDoc.SketchManager.Insert3DSketch(Prawda)

Do reszty wybrałem odpowiednią encję i skorzystałem z funkcji/poleceń znajdujących się w pomocy API:

Przykład pomiaru linii, splajnu, a następnie dwóch elementów:

        ' Zmierz długość linii
        boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, Fałsz, 0, Nic, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Nic)
        Ll = swMeasure.Length
        Debug.Print("długość linii=" & ll * 1000 & " mm")
        swDoc.SketchManager.Insert3DSketch(Prawda)
        swDoc.ClearSelection2(Prawda)

       ' Długość pomiaru: splajn 1
        boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, False, 0, Nic, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Nic)
        LS1 = swMeasure.ArcLength
        Debug.Print("długość splajnu1=" & LS1 * 1000 & " mm")
        swDoc.SketchManager.Insert3DSketch(Prawda)
        swDoc.ClearSelection2(Prawda)

        • Pomiar całkowitej długości neutralnego włókna siatki
        boolstatus = swDoc.Extension.SelectByID2("Line1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, Fałsz, 0, Nic, 0)
        boolstatus = swDoc.Extension.SelectByID2("Spline1@Esquisse3D1", "EXTSKETCHSEGMENT", 0.0, 0.0, 0.0, Prawda, 0, Nic, 0)
        swMeasure = swDoc.Extension.CreateMeasure
        swMeasure.ArcOption = 0
        boolstatus = swMeasure.Calculate(Nic)
        Lt = swMeasure.TotalLength
        Debug.Print("Długość Lt=" & Lt * 1000 & " mm")

 

Dziękuję za pomoc