| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | 3DEXPERIENCE Simulation Day |
Autor
|
Thema: 3-Punkte-Kreisbogen aus Datei einlesen (1124 / mal gelesen)
|
GMura Mitglied Entwicklungsingenieur
Beiträge: 3 Registriert: 25.10.2018
|
erstellt am: 30. Okt. 2018 13:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich würde gerne über ein Makro aus einer Datei Koordinaten einlesen und daraus 3-Punkte-Kreisbögen erzeugen. Über den Befehl boolstatus = Part.InsertCurveFile("C:\Users\...\Kurve.txt") kann ich zwar Koordinaten einlesen und durch diese eine Kurve zeichnen, diese entspricht aber nicht zwingend einem Kreisbogen. Der Befehl Set skSegment = Part.SketchManager.Create3PointArc(1, -1, 0, 1, 1, 0, 0, 0, 0) zeichnet mir zwar einen Kreisbogen nach vorgegebenen Koordinaten, aber ich habe davon so viele, dass es mühsam ist diese entsprechend aufzubereiten und immer in das Makro zu schreiben. Daher meine Frage, ob man beides kombinieren kann. Ich habe leider bisher nichts ähnliches gefunden und bedanke mich jetzt schon für eure Hilfe. Folgende Version von SolidWorks ist installiert: SolidWorks Professionell 2016 SP 3.0 Grüße, Gregor Mura Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 30. Okt. 2018 17:28 <-- editieren / zitieren --> Unities abgeben: Nur für GMura
|
GMura Mitglied Entwicklungsingenieur
Beiträge: 3 Registriert: 25.10.2018
|
erstellt am: 07. Nov. 2018 07:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für die Hilfe. Das Makro als solches funktioniert prima, auch die Änderung zur Erzeugung von Linien, wie im zweiten Link beschrieben. Leider funktioniert das mit dem Befehl "Create3PointArc" nicht (siehe Fehlermeldung). Ich kann mir diesen Fehler leider nicht erklären, da "point" bereits als "Object" deklariert ist. Im Debug-Modus kann ich aber feststellen, dass alle Variablen (X1, Y1, Z1, X2, Y2, Z2, x, y, z) mit den richtigen Werten belegt sind. Ob ich jetzt über eine If- oder eine Select Case-Bedingung versuche die Kreisbögen zu zeichnen, stellt keinen Unterschied dar. Hat jemand von euch eine Idee woran es liegen könnte? Mit der Makro-Programmierung in SolidWorks beschäftige ich mich seit ca. einer Woche und sehe vermutlich auch nicht die offensichtlichsten Fehler. Weiterhin habe ich ein zweites Problem festgestellt:
Benutze ich den Befehl Creat3PointArc und gebe ihm feste Werte für einen einzelnen Kreisbogen vor, so sehe ich gerade keine Logik wonach er den Kreisbogen zeichnet: "Set skSegment = Part.SketchManager.Create3PointArc(-100, 0, 0, 100, 0, 0, 0, -25, 0)" zeichnet einen Kreisbogen, der genau durch diese Punkte verläuft. "Set skSegment = Part.SketchManager.Create3PointArc(-100, 0, 0, 100, 0, 0, 0, 25, 0)" zeichnet allerdings nahezu einen Vollkreis, im dem genau das vorgegebene Teilstück ausgelassen wird. Muss Solidworks da eine Art Orientierung vorgegeben werden? Oder wonach richtet sich dort die Logik? Vielen Dank für eure Hilfe, Ideen und Denkanstöße im Voraus! Gruß, Gregor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 07. Nov. 2018 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für GMura
Zitat: ... Ich kann mir diesen Fehler leider nicht erklären, da "point" bereits als "Object" deklariert ist. ... "Set skSegment = Part.SketchManager.Create3PointArc(-100, 0, 0, 100, 0, 0, 0, -25, 0)" ...
Moin, wird das besser, wenn du im Makro den SketchManager mit reinnimmst? - bei der Fehlermeldung sehe ich "modeldoc2.create..." - im anderen Beispiel hast du "Part.SketchManager.Create...." Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GMura Mitglied Entwicklungsingenieur
Beiträge: 3 Registriert: 25.10.2018
|
erstellt am: 07. Nov. 2018 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo, tatsächlich hat es geholfen aus "modeldoc2.creat.." ein "modeldoc2.SketchManager.create..." zu machen. Vielen Dank! Leider bleibt noch das zweite beschriebene Problem: SolidWorks nimmt die Punkte und zieht einen Kreisbogen, der genau den dritten Punkt auslässt. Kennt jemand die Lösung dafür? Gruß, Gregor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 07. Nov. 2018 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für GMura
Kennen nicht, aber es gibt wohl einen Call, dass die Richtung nicht die erwartete ist, wenn man "Sketchmanager.AddToDB" auf true stellt. vielleicht ist es eindeutiger, wenn du die "alte" Funktion create3PointArc (ohne Sketchmanager) benutzt? Rückgabewert ist dann aber ein Boolean, nicht Objekt! (siehe api-help Create3PointArc Method (IModelDoc2)) Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|