| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB 2024 |
Autor
|
Thema: Mehrere Komponenten auf einmal in eine Baugruppe einfügen (894 mal gelesen)
|
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 09. Nov. 2021 08:37 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich soll mehrere Baugruppen aus einem anderen CAD-System, die bereits als SolidWorks Dateien vorliegen, zu einer gemeinsamen Baugruppe zusammenfügen. Wenn ich die Baugruppen mittels "Komponenten einfügen" einzeln auswähle und keine Platzierung angebe, werden sie am korrekten Ort eingefügt. Leider kann ich hier aber immer nur eine Baugruppe angeben. Bei der Suche bin ich auf folgenden Thread gestoßen, der genau mein Problem beschreibt. https://ww3.cad.de/foren/ubb/Forum2/HTML/024553.shtml#000005 Damals wurde auf einen SPR mit Status "Hoch" verwiesen. Weiß jemand, ob sich hier schon etwas getan hat? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RBE Mitglied TechSupport; Bechtle PLM Deutschland GmbH
Beiträge: 291 Registriert: 11.02.2002 HP ZBook 17 G5 Core i9 2.9GHz 32GB RAM Quadro P4200 Win11 SolidWorks2024 SP1
|
erstellt am: 09. Nov. 2021 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 09. Nov. 2021 15:19 <-- editieren / zitieren --> Unities abgeben:
|
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.3 Creo Elements/Direct Drafting 20.3 Creo Elements/Direct ModelManager 20.3
|
erstellt am: 09. Nov. 2021 15:52 <-- editieren / zitieren --> Unities abgeben:
Zu früh gefreut ... Ich verstehe irgendwie den VB Code nicht.
Code: comp1Path = swApp.GetCurrentMacroPathFolder() & "\Part1.sldprt" comp2Path = swApp.GetCurrentMacroPathFolder() & "\Part2.sldprt"
Muss ich da meine Dateinamen eintragen? Kann aber irgendwie auch nicht sein. Weiter unten wir dann nur mit comp1Path gearbeitet, comp2Path wird dann einem Array zugewiesen, ... Keine Ahnung wie das zu verstehen ist. Kann mir da jemand helfen? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RBE Mitglied TechSupport; Bechtle PLM Deutschland GmbH
Beiträge: 291 Registriert: 11.02.2002 HP ZBook 17 G5 Core i9 2.9GHz 32GB RAM Quadro P4200 Win11 SolidWorks2024 SP1
|
erstellt am: 09. Nov. 2021 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für holt
In seinem Beispiel liegen vermutlich die Daten im Makroordner. Ich hab das für mich so gelöst (alle Teile aus einem bestimmten Verzeichnis einfügen): Path = "D:\<Dein Pfad>" sFileName = Dir(Path & "*.sldprt") count = 0 Do Until sFileName = "" compNames(count) = Path & sFileName sFileName = Dir count = count + 1 Loop compNames ist ein Array, die Größe kannst Du ja vorher durch die Anzahl der Dateien festlegen. ------------------ Grüße, RBE ---------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 10. Nov. 2021 07:49 <-- editieren / zitieren --> Unities abgeben:
OK, danke, das verstehe ich. Aber trotzdem ist mir noch nicht klar, was mit comp1Path gemacht wird. Wird da erst eine Komponente eingefügt, dann tritt ein Fehler auf, dann wird die Komponente nochmals eingefügt, und dann erst der Rest? So verstehe ich es zumindest. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.3 Creo Elements/Direct Drafting 20.3 Creo Elements/Direct ModelManager 20.3
|
erstellt am: 10. Nov. 2021 08:20 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt versucht, dein Codeschnipsel einzubauen. Leider scheitert aber offensichtlich die Funktion swAssy.AddComponents, zumindest bleibt der Rückgabewert vComps leer. Im Anhang mein Code. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 10. Nov. 2021 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 10. Nov. 2021 08:25 <-- editieren / zitieren --> Unities abgeben:
|
RBE Mitglied TechSupport; Bechtle PLM Deutschland GmbH
Beiträge: 291 Registriert: 11.02.2002 HP ZBook 17 G5 Core i9 2.9GHz 32GB RAM Quadro P4200 Win11 SolidWorks2024 SP1
|
erstellt am: 10. Nov. 2021 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für holt
Hi nochmal, ich komme auf die Schnelle nicht dazu, mir das nochmal genauer anzuschauen. So hat es bei mir damals funktioniert (evtl. geht es auch effizienter, Tipps gern zurück ;-)). vTransformData = swMathUtils.CreateTransform(Empty).ArrayData If count > 0 Then If count > 1 Then ReDim Preserve vTransformData(count * 16 - 1) For i = 1 To count - 1 For j = 0 To 15 vTransformData(j + i * 16) = vTransformData(j) Next j Next i End If ReDim strCompNames(count - 1) For i = 0 To count - 1 strCompNames(i) = compNames(i) Next i vComps = swAssy.AddComponents(strCompNames, vTransformData) swModel.Extension.MultiSelect2 vComps, False, Nothing swAssy.FixComponent End If
------------------ Grüße, RBE ---------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 10. Nov. 2021 09:58 <-- editieren / zitieren --> Unities abgeben:
Whow! Funktioniert perfekt! Danke! Kannst du mir vielleicht noch erklären, womit und zu welchem Zweck das Array vTransformData befüllt wird? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RBE Mitglied TechSupport; Bechtle PLM Deutschland GmbH
Beiträge: 291 Registriert: 11.02.2002 HP ZBook 17 G5 Core i9 2.9GHz 32GB RAM Quadro P4200 Win11 SolidWorks2024 SP1
|
erstellt am: 10. Nov. 2021 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für holt
Hier ein kurzer Auszug aus der Hilfe von AssemblyDoc::AddComponents Zitat: Remarks The array of file names represents all of the components that are added to the assembly. If there is more than one instance of a given component, make sure you add the file name of the component for each instance of the component. The array of transforms consists of [count x 16] doubles. There should be one transform for each component being added.
Wenn das Array (für die Positionierung) nicht sauber vorhanden ist, schlägt das Einfügen fehl. s. auch MathUtility::CreateTransform ------------------ Grüße, RBE ---------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 714 Registriert: 07.08.2003
|
erstellt am: 10. Nov. 2021 12:55 <-- editieren / zitieren --> Unities abgeben:
|