ISO aus der SolidWorks Linie extrahieren - VBA

Hallo ihr alle.

In diesem Thema geht es um solidworks - vba:

Ich suche nach einer Möglichkeit, alle Punkte aus einer 3D-Skizze in der Reihenfolge zu extrahieren, die während der Scanfunktion befolgt wurde. Dies dient dazu, Berechnungen durchzuführen wie: Mengenermittlungen, Druckabfall, verdrahtetes RDM...

Ich habe die folgenden 4 Funktionen ausprobiert:

swSketch.GetSketchSegments: Gibt die Segmente in falscher Reihenfolge an
swSketch.GetSketchPoints2: Gibt die Punkte in falscher Reihenfolge an - > ich füge ein Beispiel an. Ich habe swSkPt.GetID(0) und swSkPt.GetID(1) ausprobiert , aber es gibt keinen Befehl aus.
swSketch.GetSketchPaths: nichts in meinem Fall
swSketch.GetLines: gibt die Punkte in der Reihenfolge, verarbeitet aber nur etwa die Hälfte des Sketches --> wirklich schlecht, ich war fast da!!

Für jede bin ich zu einer Schleife des Typs übergegangen:

                        Für i = LBound(vSketchPt) zu UBound(vSketchPt)
                            Set swSkPt = vSketchPt(i)
                            Debug.Print (swSkPt.X & "; " & swSkPt.Y & "; " & swSkPt.Z)
                        Nächster

Mich würde interessieren, ob Sie mir zu diesem Thema einen Rat geben könnten.

Vielen Dank


exemple.png

Hallo

GetLines scheint veraltet zu sein. Probieren Sie es mit GetLines2 aus

https://help.solidworks.com/2020/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.ISketch~GetLines2.html

Was die Reihenfolge der Punkte, den Instinkt und das, was ich von dem in Ihrem Bild erzielten Ergebnis interpretiere, betrifft, würde ich sagen, dass es nur durch die Reihenfolge der Schöpfung definiert wird. Dass eine Skizzenverrundung, die nach dem Zeichnen der Linien 1-2, 2-3, 3-4 hinzugefügt wird, mit dem Bogenmittelpunkt der Verrundungspunktnummer (in Ihrem Fall #2) nummeriert wird. Daher werden sie vom Code in dieser Reihenfolge gelesen (und verknüpft).

SW kümmert sich nicht um die Reihenfolge der Punkte, er kümmert sich nur darum, welcher Punkt mit welchem Punkt verbunden ist, um seine Linie zu ziehen (1-2 oder 1-5 ist für ihn dasselbe).

Führen Sie den Test mit Ihrem Code an einer W-förmigen Skizze durch, sehen Sie sich das Ergebnis an, wenden Sie dann ein Blatt auf die 3 Zwischenpunkte an, starten Sie Ihren Code neu, und sehen Sie sich das Ergebnis an.

Vielen Dank für Ihr Feedback. In der Tat sind es die Feiertage, die die Ordnung stören.

Ich habe einige Tests mit GetLines2 durchgeführt, es verarbeitet auch nur einen Teil des Sketches.

Beachten Sie, dass SW trotz der Feiertage in der Lage ist, eine zunehmende Sortierung entsprechend der Position der Punkte auf der Trajektorie vorzunehmen. Während einer Trajektorienbeschränkung ist es z.B. möglich, einen Prozentsatz einzugeben und das Objekt an der angegebenen Position zu platzieren (vgl. PJ mit einer Kugel in 50% der Bahn).

A priori ist es mit den 4 genannten Funktionen nicht möglich, auf diese Sortierung nach Trajektorie zuzugreifen. Die Frage wäre dann:

Ist diese zunehmende Sortierung über VBA-Funktionen zugänglich?


trajectoire.png

Mit IGetLines2 verfügen Sie über einen ArraySize-Parameter, von dem ich annehme, dass er Ihnen die Anzahl der Zeilen liefert und es Ihnen daher ermöglicht, die Anzahl der Iterationen Ihrer Schleife zu verwalten. Ich denke, es sollte Ihnen ermöglichen, Ihre gesamte Skizze durchzugehen und zu bearbeiten.

EDIT: Nachricht zum Vergessen...

1 „Gefällt mir“

Was bedeutet diese Funktion in Bezug auf die GetID? Abhängig von der Situation kann es möglich sein, die ID eines Punktes mit einer Position im Diagramm zu verknüpfen.

EDIT: Nachricht gelöscht, ich lag daneben. Tut mir Leid.

Vielen Dank für Ihr Feedback. Ich werde die Funktion  IGetLines2 testen.

Es ist ein Thema, mit dem ich mich wie ein roter Faden beschäftige, wenn ich Zeit habe. Ich lasse das Thema in der Zwischenzeit offen.

GetID(0) und GetID(1) geben jeweils eine Ganzzahl zurück, die für jeden Punkt unterschiedlich ist. Ich habe nach diesen 2 Werten sortiert, aber es zeigt nicht die Flugbahn.

Ich habe festgestellt, dass es in VBA Methoden und "Ich-Methoden" gibt:

GetLines2 und IGetLines2, GetID und IGetID, GetSpecificFeature2 und IGetSpecificFeature2

Häufig erfordern I-Methoden mehr Parameter als Methoden, geben aber denselben Objekttyp zurück.

Wenn Sie eine Dokumentation über diese Dualitätsmethode und die Ich-Methode haben, bin ich interessiert.

Auf Wiedersehen

Hallo
Aus dem Gedächtnis glaube ich, dass die Pfadfunktion in einer Skizze Entitäten ordnet, aber sie ist nur für 2D-Skizzen zugänglich.
Nach einem ähnlichen Prinzip sucht das verbundene Makro nach einem Ende einer kontinuierlichen Kette von Elementen in einer 2D- oder 3D-Skizze und ordnet sie in aufsteigender Reihenfolge.
Es zeigt auch die aufeinanderfolgenden Punkte der Kette an, die Ihrer Anfrage zu entsprechen scheint.
Das Makro wurde nur an den beiden Skizzen im beigefügten Beispiel (SW 2021) getestet...

Herzliche Grüße.


sketchptsorder.zip