| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
|
Autor
|
Thema: API: Verbaute Konfiguration einer Komponente ändern (1797 mal gelesen)
|
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 16. Okt. 2008 17:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich bin gerade dabei eine Prozedur in einem VBA Makro zu schreiben welche mir die Konfiguration einer verbauten Komponente in einer Baugruppe ändert. Dazu muss ich wie manuell die Komponeteneigenschaften ändern. In der API habe ich für diese Aufgabe den Befehl CompConfigProperties4 gefunden. Ich würde allerdings nicht schreiben wenn es funktionieren würde. Meine Vorgehensweise ist, dass ich Parameter die nicht geändert werden ermittel und dann die Methode CompConfigProperties4 mit dem neuem Konfigurationsnamen aufrufe. Hier der Code:
Code: Private Sub ChangeComponentConfig( _ oSwModel As SldWorks.ModelDoc2, _ oSwComponent As SldWorks.Component2) On Error GoTo Fehler Dim eSwComponentSuppressionState As swComponentSuppressionState_e Dim eSwComponentSolvingOption As swComponentSolvingOption_e Dim bVisible As Boolean Dim bExcludeFromBOM As Boolean Dim oSwAssembly As SldWorks.AssemblyDoc Set oSwAssembly = oSwModel 'Daten ermittelt, welche für die Methode 'CompConfigProperties4 benötig, aber nicht geändert werden eSwComponentSuppressionState = oSwComponent.GetSuppression eSwComponentSolvingOption = oSwComponent.Solving bVisible = oSwComponent.Visible bExcludeFromBOM = oSwComponent.ExcludeFromBOM 'Komponente selektieren If oSwComponent.Select2(False, -1) Then 'Eigenschaften der Komponente anpassen If oSwAssembly.CompConfigProperties4( _ eSwComponentSuppressionState, _ eSwComponentSolvingOption, _ bVisible, True, _ "Simple", _ bExcludeFromBOM) = False Then Debug.Assert False Else oSwModel.EditRebuild3 End If oSwModel.ClearSelection2 (True) End If Exit Sub Fehler: Debug.Print Err.Number & " " & Err.Description Err.Clear Debug.Assert False End Sub
Leider bekomme ich immer ein "false" von der Methode zurück und die Konfiguration wird auch nicht ausgetauscht. Die Konfiguration ist sicher in der Komponente vorhanden (Tausend mal geprüft)! Hat mit der Methode CompConfigProperties4 jemand Erfahrung? In der API Hilfe steht das der Parameter useNamedRefConfig nicht verwendet wird. Aktuell übergebe ich dort "true", ist dies richtig? Bei einer Aufzeichnung mit dem Makrorekorder wird dieser Parameter leider unterschlagen. Danke für jeden Hinweis! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 17. Okt. 2008 07:31 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hm?! Ich habe das auch mal aufgezeichnet und das da bekommen: Code: boolstatus = Part.Extension.SelectByID2("Druckplatte oben-1@Stempelseite", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Part.CompConfigProperties4 2, 0, True, "ø82", False
Das "True" fehlt bei mir auch. Gut, wenn ich das aufgezeichnete Makro starte, läuft es nicht durch: Typen unverträglich! Dass sich die Typen vertragen, muss da ein weiterer Wert hin: Code: boolstatus = Part.Extension.SelectByID2("Druckplatte oben-1@Stempelseite", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Part.CompConfigProperties4 swComponentFullyResolved, swComponentRigidSolving, True, True, "ø82", False
So gehts dann auch - lustigerweise!!! EDIT: True or False, makes no different to me! ------------------ http://www.worldcommunitygrid.org
[Diese Nachricht wurde von G. Dawg am 17. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 17. Okt. 2008 07:45 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Gilbert, danke für das Testen, ich bin auch wieder einen Schritt weiter gekommen. Es liegt an dem Wert der Variablen eSwComponentSolvingOption, welcher durch oSwComponent.Solving definiert wird. Dieser ist bei mir -1, da die Einstellung "Lösen als" inaktiv ist (siehe Bild). Mit -1 als Parameter solving will die Methode CompConfigProperties4 aber nicht. Leider habe ich keine Ahnung was diese Einstellmöglichkeit "Lösen als" überhaupt bewirkt und warum diese bei meiner Komponente inaktiv ist. Ich würde mich daher sehr freuen wenn mir ein erfahrener SolidWorks Anwender ( ja Gilbert auch du bist gefragt ) folgende Fragen beantworten könnte:
- 1. Was bewirkt die Einstellung "Lösen als"?
- 2. Warum ist diese Einstellung inaktiv?
- 3. Von welchen Optionen, Gegebenheiten, ... ist diese Einstellung abhängig?
Danke! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 17. Okt. 2008 07:49 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 17. Okt. 2008 07:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gilbert, Du hast vollkommen Recht! Ich hätte auch daran denken müssen das es neben der API Hilfe ja auch eine Standard SolidWorks Hilfe gibt. Und genau da steht es drin! Ich behelfe mir deshalb nun wie folgt: Code: 'Einstellung "Lösen als" (Solving) gibt es nur bei Baugruppen 'Deshalb wird dieser Wert bei einem Bauteil immer 'auf swComponentRigidSolving festgelegt, da der 'inaktive Wert -1 in der Methode CompConfigProperties4 'nicht zulässig ist. If oSwComponent.GetModelDoc.GetType = _ SwConst.swDocumentTypes_e.swDocPART Then eSwComponentSolvingOption = swComponentRigidSolving Else eSwComponentSolvingOption = oSwComponent.Solving End If
Merci! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 17. Okt. 2008 08:15 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|
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: 17. Okt. 2008 13:18 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 17. Okt. 2008 13:37 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |