| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
|
Autor
|
Thema: Linie finden (1121 mal gelesen)
|
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 10. Jan. 2011 18:23 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich muss mit Hilfe eines Makros in einer 2D-Skizze eine Linie finden, die zu einem mir bekannten Punkt (x;y) gehört. Von dieser Linie brauche ich den Namen (ID). Weiß jemand, wie das gehen könnte? Gruß Frank Drebin [Diese Nachricht wurde von Frank Drebin am 10. Jan. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 11. Jan. 2011 10:09 <-- editieren / zitieren --> Unities abgeben:         
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 11. Jan. 2011 10:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank Drebin
Hallo Frank, ich hab damit zwar selber noch nie rumgespielt, aber schau mal in der API Hilfe in das Beispiel "Get Polylines Information Example (VBA)", da ist alles mögliche, unter anderem auch die Punkte der Linien, mit drin. Vielleicht ist das zumindest schon mal ein Anfang. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 11. Jan. 2011 12:18 <-- editieren / zitieren --> Unities abgeben:         
In diesem Kapitel der API geht es eher um Zeichnungen (sofern ich das richtig interpretiert habe). Die Splines habe ich mittlerweile gefunden (inklusive zugehöriger Punkte): Das steht in der Hilfe bei "Get Spline Parameters Example (VB6)". Leider ist diese Geschichte scheinbar nicht auf Linien übertragbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 11. Jan. 2011 13:16 <-- editieren / zitieren --> Unities abgeben:         
Man müsste da ja jeweils nur einen Start- und einen Endpunkt herauslesen. Code: Dim vSkSeg As Variant Dim swSkSeg As SldWorks.SketchSegment Dim swSkLine As SldWorks.SketchLine Dim i As Integer Dim vLineStartPt As Variant Dim vLineEndPt As Variant Dim swSkPt As SldWorks.SketchPoint vSkSeg = swSketch.GetSketchSegments For i = 0 To UBound(vSkSeg) Set swSkSeg = vSkSeg(i) If swSketchLINE = swSkSeg.GetType Then Set swSkLine = swSkSeg vLineStartPt = swSkLine.GetStartPoint2 vLineEndPt = swSkLine.GetEndPoint2 Debug.Print "Line" & i + 1 Set swSkPt = vLineStartPt Debug.Print " SketchLineStartPt = (" & swSkPt.X & ", " & swSkPt.Y & ", " & swSkPt.Z & ")" Set swSkPt = vLineEndPt Debug.Print " SketchLineEndPt = (" & swSkPt.X & ", " & swSkPt.Y & ", " & swSkPt.Z & ")" End If Debug.Print "" Next i
So wird mir allerdings immer ein Fehler angezeigt, dass das Objekt diese Eigenschaft nicht unterstützt (vLineStartPt = swSkLine.GetStartPoint2). [Diese Nachricht wurde von Frank Drebin am 11. Jan. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank Drebin Mitglied

 Beiträge: 14 Registriert: 14.12.2010
|
erstellt am: 11. Jan. 2011 14:59 <-- editieren / zitieren --> Unities abgeben:         
Ich Klopsmöhre hab meinen Fehler nun selbst gefunden. Hier mal der richtige Code: Code: Dim vSkSeg As Variant Dim swSkSeg As SldWorks.SketchSegment Dim swSkLine As SldWorks.SketchLine Dim i As Integer Dim vLineStartPt As Variant Dim vLineEndPt As Variant Dim swSkPt As SldWorks.SketchPoint vSkSeg = swSketch.GetSketchSegments For i = 0 To UBound(vSkSeg) Set swSkSeg = vSkSeg(i) If swSketchLINE = swSkSeg.GetType Then Set swSkLine = swSkSeg Set vLineStartPt = swSkLine.GetStartPoint2 Set vLineEndPt = swSkLine.GetEndPoint2 Debug.Print "Line" & i + 1 Set swSkPt = vLineStartPt Debug.Print " SketchLineStartPt = (" & swSkPt.X & ", " & swSkPt.Y & ", " & swSkPt.Z & ")" Set swSkPt = vLineEndPt Debug.Print " SketchLineEndPt = (" & swSkPt.X & ", " & swSkPt.Y & ", " & swSkPt.Z & ")" End If Debug.Print "" Next i
[Diese Nachricht wurde von Frank Drebin am 11. Jan. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |