| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg |
Autor
|
Thema: [API] Prüfen ob Skizzen-Elemente innerhalb von Fläche sind (904 mal gelesen)
|
Dingeling Mitglied
Beiträge: 9 Registriert: 27.04.2009
|
erstellt am: 24. Jun. 2015 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte ein Makro schreiben in dem geprüft wird ob sich sämtliche Elemente einer Skizze innerhalb der Fläche befinden, auf der die Skizze erstellt wurde. Elemente die nicht auf der Fläche sind, sollen gelöscht werden. Nun ist meine Frage, ob's in der API schon irgendwelche einfachen Funktionen gibt oder ob vielleicht schon jemand etwas ähnliches gemacht hat und mir zur Verfügung stellen kann, bevor ich mir da jetzt irgendwas zusammenbastel mit Vektorberechnungen und endlos vielen Loops und so Danke schonmal! Gruß Dingeling Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 26. Jun. 2015 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Dingeling
Hallo Dingeling, ich kenne keine solche Funktionen innerhalb der API und habe auch selbst keine Idee, ob es dafür irgendwo vorhandenen Code gibt. Ich tue mich sogar schwer mit der Vorstellung, wozu man so etwas brauchen sollte ... Ich befürchte, da wirst du um viel Rechnerei nicht drumherumkommen, ich stell mir das recht anspruchsvoll vor, da du an alles Mögliche denken musst, was der Anwender so anstellen kann und was erlaubt sein soll und was nicht (nur als Beispiel: wenn ich ein Skizzenmuster mach, die Quelle außerhalb, die Muster aber innerhalb der Fläche ist, ist dass dann okay oder nicht?) Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dingeling Mitglied
Beiträge: 9 Registriert: 27.04.2009
|
erstellt am: 26. Jun. 2015 15:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe inzwischen eine relativ einfache Lösung gefunden die für meien Zwecke wunderbar ausreicht. Hier mal ohne viel Erklärung mein Code...falls es jemanden interessiert oder Fragen hat kann ich gern noch was dazu erklären.
Code: Sub Main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSketch As SldWorks.Sketch Dim swSketchMgr As SldWorks.SketchManager Dim swFace As SldWorks.Face2 Dim Measure As Measure Dim pEntity As SldWorks.Entity Dim nEntType As Long Dim vSegments As Variant Dim vSeg As Variant Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSketchMgr = swModel.SketchManager swModel.Extension.SelectByID2 "SKIZZENNAME", "SKETCH", 0, 0, 0, False, 0, Nothing, 0 swSketchMgr.InsertSketch False Set swSketch = swModel.GetActiveSketch2 vSegments = swSketch.GetSketchSegments Set pEntity = swSketch.GetReferenceEntity(nEntType) If nEntType = swSelFACES Then Set swFace = pEntity End If If (Not IsEmpty(vSegments)) Then For Each vSeg In vSegments swFace.Select False vSeg.Select True Set Measure = swModel.Extension.CreateMeasure Measure.ArcOption = 0 If Measure.Calculate(Nothing) Then If Measure.IsIntersect = False Then vSeg.Select False swModel.Extension.DeleteSelection2 0 End If End If Next vSeg End If swSketchMgr.InsertSketch True End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 29. Jun. 2015 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Dingeling
Hallo Dingeling, vielen Dank für den Beispielcode, das klappt hervorragend und bei weitem nicht so kompliziert, wie ich mir das vorgestellt hatte. Auf die Idee, das über das Messen zu machen, wäre ich nicht gekommen Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|