| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | |  | SOLIDWORKS Visualize – Online-Live-Schulung, ein Seminar am 29.10.2025
|
|
Autor
|
Thema: API: Koordinatensystem erstellen in Teil (2469 mal gelesen)
|
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 21. Jan. 2008 14:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, Ich möchte einem Teil das Standardkoordinatensystem der Bauguppe, in das es eingebaut ist, einfügen. Gibt es ein Möglichkeit per API das Koordinatensystem der Baugruppe zu übernehmen? Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau

 Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 21. Jan. 2008 16:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd Knab
|
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 22. Jan. 2008 07:30 <-- editieren / zitieren --> Unities abgeben:         
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau

 Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 22. Jan. 2008 09:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd Knab
Was passiert, wenn Du im Kontext der Baugruppe in einer Skizze Linien zeichnest mit den Baugruppenkoordinaten und von diesen Linien ein Koordinatensystem im Teil erzeugst? So als Idee?! ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 22. Jan. 2008 10:04 <-- editieren / zitieren --> Unities abgeben:         
Hallo Lutz, würde auch gehen, aber kurz den Zweck meines Makros, das ich erstellen will: Ich muß für die IDF Teilebibliothek ein Bauteil ablegen, das dann automatisch über den Ursprung eingebaut und postitioniert wird. Ich lade mir von E-Bauteilherstellern 3D Modelle herunter und importiere diese. Der Usrprung des importierten Teils entspricht nicht dem hinterlegten Ursprung in den IDF-Dateien. Somit importiere ich erst die Platine ohne Bauteile und erhalte für jedes Bauteil auf der Platine einen Klotz als eigenes Teil. Diese "Klötzchenteil" baue ich in eine temporäre Baugruppe ein mit Teilursprung gleich Baugruppenursprung. Nun baue ich das importierte Modell ein und richte es auf mein "Klötzchenteil" aus. Jetzt möchte ich im importierten Teil ein neues Koordinatensystem erstellen, welches identisch ist mit dem Baugruppenursprung. Ich könnte auch z.B durch Vorauswahl von Baugruppenursprung und 2 Kanten das Koordinatensystem im Makro erstellen lassen. Dann muß ich mir aber immer im Voraus überlegen, welche Kante welche Achse ergibt und auch die Richtung der Achse muß stimmen. Anschließend wird das importierte Teil mit dem neuen Koordinatensystem exportiert und wieder importiert. Somit habe ich den Teilursprung dort wo ihn die IDF Vorgabe benötigt. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
 
 Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 22. Jan. 2008 10:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd Knab
bin mir nicht sicher ob ich alles richtig verstanden habe, aber vieleicht hilft es ja. Die Position und Ausrichtung des Standardkoordinatensystem der Bauguppe erhälst du mit ModelDocExtension.GetCoordinateSystemTransformByName ( nameIn). Erzeugst du das Koordinatenssytem(CS) im Bauteil mit dieser Transformationsmatrix liegt das CS nicht an der richtigen Stelle, da das Bauteil in der Baugruppe (Instanz,Component) ja verschoben und verdreht sein kann. Die Lage und Ausrichtung (Transformationmatrix) des Bauteils kannst du aber auslesen. Component2.Transform2 Damit kann man die Lage und Ausrichtung des CS in Bauteilkoordinaten berechnen (s. MathTransform). Um das Koordinatenssystem zu erzeugen benötigst du wahrscheinlich vorher Ebenen und Punkte, die du auch noch im Bauteil erzeugen musst (Referenzpunkt und Referenzebene). Wie die liegen, kannst du mit der berechneten Transformationsmatrix bestimmen. Warum einfach, wenn es auch kompliziert geht. Gruß Oliver
------------------ Software nach Maß für Ihr CAD-System www.ib-knepper.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 22. Jan. 2008 11:41 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd Knab
Ich denke, das geht auch einfacher ... So wie ich das verstanden habe, willst du in einer Baugruppenkomponente ein Koord.system einfügen, welches auf dem Baugruppenursprung liegt und so ausgerichtet ist, wie das Dreibein der Baugruppe. Auf der Benutzeroberfläche also etwa so: Baugruppe aktiv, Komponente wählen, Komponente (im Baugruppenkontext) bearbeiten, Koordinatensystem einfügen, Ursprung der Baugruppe wählen, die zwei richtigen Grundebenen der Baugruppe zum Ausrichten wählen, Komponentenbearbeitung beenden - fertig. Warum schaltest du dabei nicht mal den Makro-Recorder ein ? Bei mir hat er dabei folgendes aufgezeichnet: Code:
Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager boolstatus = Part.Extension.SelectByID2("Part1@Baugruppe1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Part.EditAssembly Part.ClearSelection2 True boolstatus = Part.Extension.SelectByID2("Point1@Ursprung", "EXTSKETCHPOINT", 0, 0, 0, False, 1, Nothing, 0) boolstatus = Part.Extension.SelectByID2("rechts", "PLANE", 0, 0, 0, True, 2, Nothing, 0) boolstatus = Part.Extension.SelectByID2("oben", "PLANE", 0, 0, 0, True, 4, Nothing, 0) Part.InsertCoordinateSystem False, False, False Part.EditAssembly Part.ClearSelection2 True End Sub
Da hast du doch schon alles wesentliche! Es muß nur noch etwas "aufgehübscht" werden. Damit es universell einsetzbar ist, sollte die Wahl der Baugruppenkomponente vielleicht vor Start des Makros erfolgen, das Makro müßte dann ermitteln, welche Komponente selektiert ist, - und speichern der Komponente nicht vergessen.
------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 22. Jan. 2008 11:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo uc, ich hatte mir das Makro schon aufgezeichnet, jedoch habe ich nicht die Ebenen der Baugruppe ausgewählt sondern irgendwelche Teilekanten. Mir hat der Schritt gefehlt, die Bauruppenebenen zu selektieren. Danke. So komme ich weiter. Danke auch an Oliver. Ich habe mich jedoch gescheut an die MathTransform heranzugehen, da ich damit noch nicht gearbeitet habe. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulB Mitglied

 Beiträge: 25 Registriert: 13.12.2007 Solidworks 2008 SP2.0 WinXP
|
erstellt am: 23. Jan. 2008 11:26 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd Knab
Du kannst auch einfach nochmal ein Koordinatensystem in der Baugruppe erstellen (genau auf den Ursprung der Baugruppe). Dann mit dem Befehl die einzelnen Teile speichern. Code: Const swFileSaveAsCoordinateSystem As Long = 16 'Name des erzeugen Koordinatensystems strCoordName = "Koordinatensystem1" 'das neue Koordinatensystem zuweisen bRet=swModel.SetUserPreferenceStringValue(swFileSaveAsCoordinateSystem,strCoordName) 'das ausgewählte Teil sPartname = swSelComp.Name2 'speichern part2.SaveAs2 sPath & sPartname & ".sldprt", 0, False, False
[Diese Nachricht wurde von PaulB am 23. Jan. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 23. Jan. 2008 15:32 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |