| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | 7 Tipps für die Konstruktion von Kunststoffteilen und Spritzgussformen, ein Webinar am 27.06.2025
|
Autor
|
Thema: positionieren von Komponenten (1038 mal gelesen)
|
mbott Mitglied
 Beiträge: 9 Registriert: 30.06.2023
|
erstellt am: 30. Jun. 2023 16:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich versuche Parts und Assemblys in Unterstrukturen zu positioniern. Ich benutze hierfür: component.Transform2 = newPosition; Bei der Anwendung der Transformation, wird jedoch nicht nur die gewünschte Komponente positioniert, sonder auch alle übergeordneten Assemblys in denen die Komponente verbaut ist (bis zur obersten Ebene des rootassemblys). Wie kann ich erreichen, dass nur die gewünschte Komponente relativ zu ihrem eigenen Assembly-Knoten positioniert wird? Grüße Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
       

 Beiträge: 5018 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 30. Jun. 2023 17:26 <-- editieren / zitieren --> Unities abgeben:          Nur für mbott
Hallo Markus, willkommen im SolidWorks Forum. Ich habe noch nicht genau verstanden was da bei Dir funktioniert bzw. nicht funktioniert wie gewünscht. HBG ->Teil1 ->UBG1 -->Teil1 ->UBG2 -->Teil1 ->UBG3 -->UBG1 --->Teil1 Wenn ich Dich richtig verstanden habe, positionierst Du das Teil1 in der UBG1 und es positioniert sich auch in der UBG2 und in der HGB? Ist das der Befehl, mit dem Du arbeitest: Transform2 Kannst Du vielleicht noch ein wenig mehr code zeigen? Bin gespannt, Ralf
------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mbott Mitglied
 Beiträge: 9 Registriert: 30.06.2023
|
erstellt am: 03. Jul. 2023 10:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, ich habe folgende Struktur: HBG ->UBG1 -->UBG2 --->Teil1 --->Teil2 Ich möchte per "Transform2" das Tei1 umpositionieren, was scheinbar auch funktioniert. Jedoch werden auch Teil2, UBG1+2 mit verschoben, quasi alles bis zur Ebene der HBG. Ich möchte aber nur Teil1 in UBG2 umpositionieren. meine Zeilen: Set swMathUtil = swApp.GetMathUtility Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swComp = swSelMgr.GetSelectedObjectsComponent3(1, 0) 'Teil1 ist selektiert! Set swXform = swMathUtil.CreateTransform(Nothing) 'Verschiebung in Ursprung swComp.Transform2 = swXform Hast du eine Idee, was ich berücksichtigen muss, bzw. falsch mache? Vielen Dank schon mal für deine Hilfe! Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
       

 Beiträge: 5018 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 05. Jul. 2023 08:37 <-- editieren / zitieren --> Unities abgeben:          Nur für mbott
Hallo Markus, mit den Codezeilen kann ich zwar sehen, dass Du die Komponente selektierst, nicht jedoch wie Du in die Unterbaugruppe gekommen bist. Um nur in der UBG2 das Teil1 zu positionieren musst Du Dich auch "in der UBG2" befinden und dort die Komponente auswählen: EditAssembly - hinter dem Link sind auch Beispiele, die Dir weiter helfen können. HTH Ralf ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mbott Mitglied
 Beiträge: 9 Registriert: 30.06.2023
|
erstellt am: 05. Jul. 2023 16:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, danke für deine Antwort, leider hat das "EditAssembly" keine Änderung bewirkt. Hier meine aktuellen Zeilen: Set swApp = Application.SldWorks Set swMathUtil = swApp.GetMathUtility Set swModel = swApp.ActiveDoc boolstatus = swModel.Extension.SelectByID2("UBG2-1@HBG/UBG3-1@UBG2/UBG4-1@UBG3", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) swModel.EditAssembly boolstatus = swModel.Extension.SelectByID2("UBG2-1@HBG/UBG3-1@UBG2/UBG4-1@UBG3/Teil1-1@UBG4", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set swSelMgr = swModel.SelectionManager Set swComp = swSelMgr.GetSelectedObjectsComponent3(1, 0) Set swXform = swMathUtil.CreateTransform(Nothing) swComp.Transform2 = swXform swModel.EditRebuild3 Alternativ habe ich die BG, in der das Teil verschoben werden soll als ActiveDoc (SWApp.ActivateDoc2) deklariert, dann funktioniert's mit dem positionieren. Ich bekomme dann nur Probleme mit meinen Koordinaten, die sind absolut zur HBG, müsste ich dann aufwendig umrechnen. Hast du vielleicht noch eine andere Idee? Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
       

 Beiträge: 5018 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 06. Jul. 2023 16:37 <-- editieren / zitieren --> Unities abgeben:          Nur für mbott
Hallo Markus, um Dir jetzt Alternativen bieten zu können, musst Du noch mehr Informationen preisgeben... Willst Du den Ursprung von Teil1 auf den Ursprung der HBG positionieren? Oder geht es um einen bestimmten Verschiebevektor? Ist es so kompliziert die Entfernug/Ausrichtung von Teil1 zum Ursprung der HBG zu ermitteln? - diese könntest Du speichern und in der UBG das Teil1 entsprechend verschieben. Warum geht verknüpfen nicht? Vielleicht beschreibst Du einfach den Anfangsstatus etwas genauer (Weitere Randbedingungen, warum hast Du die Transform2-Methode gewählt...) und das gewünschte Ergebnis (Bild/Screenshot, Beispieldateien, Marko, SolidWorks-Version sind hilfreich). Die Alternativen für den Prozess dazwischen können wir dann vielleicht gemeinsam herausfinden. HTH Ralf ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mbott Mitglied
 Beiträge: 9 Registriert: 30.06.2023
|
erstellt am: 07. Jul. 2023 09:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, du findest meine Testdaten und das Makro im Anhang. Bitte wende mal das Makro an. Selektiere hierzu Teil3 zum Umpositionieren, der Kontext sollte die HBG sein. Vielleicht fällt dir was auf oder du hast eine spontane Eingebung. Besten dank schon mal! Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
       

 Beiträge: 5018 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 11. Jul. 2023 07:05 <-- editieren / zitieren --> Unities abgeben:          Nur für mbott
Hallo Markus, die Version 2023 hab ich im Moment nicht installiert. Ich kann zwar die Baugruppe und das Makro in 2022 öffnen, aber die Baugruppe nicht bearbeiten (nur zur Ansicht, Makro kann nicht ablaufen). Ich hab es mit einer eigenen BG versucht und kann Dein Ergebnis nachvollziehen - selbst wenn die restlichen Komponenten fixiert sind. Wenn ich die Schritte "händisch" versuche, kann ich in der UnterBG nicht auf die Ebenen/Ursprung der HauptBG zugreifen...Mein Englisch ist nicht so gut - mein Deutsch ist viel besser (frei übersetzt von Lothar M.) - aber so ähnlich lese ich das in der Transform2 Beschreibung... Ich würde wahrscheinlich folgenden Weg wählen: 1. Teil3 aus der UnterBG in die HauptBG einfügen/verschieben. 2. Das Makro anwenden. 3. Das Teil3 in die UBG zurückschieben. ReorganizeComponents HTH Ralf ------------------
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mbott Mitglied
 Beiträge: 9 Registriert: 30.06.2023
|
erstellt am: 12. Jul. 2023 16:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, ich hätte auch noch 2 workarounds: 1. übergeordnete BGs flexibel machen: Das funktioniert leider nur solange die BGs flexibel bleiben... 2. Vaterknoten der zu verschiebenden Komponente zum aktiven Dokument machen und im neuen Kontext die (relative) Transformation ausführen. Das ganze braucht Zeit... Beides keine wirklich guten Lösungen, aber sie funktionieren. Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |