Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Verbaute Konfiguration einer Komponente ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tbd 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


LoesenAls.jpg

 
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



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tbd 10 Unities + Antwort hilfreich

Ich denke, dass diese Option nur für Baugruppen aktiv ist.
Ein Teil kannst Du ja nicht flexibel machen! Macht Sinn, oder? 

------------------

http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Mitglied
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tbd 10 Unities + Antwort hilfreich

Schön, konnte ich Dir mal etwas weiterhelfen! 

------------------

http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lutz Federbusch
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau



Sehen Sie sich das Profil von Lutz Federbusch an!   Senden Sie eine Private Message an Lutz Federbusch  Schreiben Sie einen Gästebucheintrag für Lutz Federbusch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tbd 10 Unities + Antwort hilfreich

Ich mache das immer mit Component.ReferencedConfiguration und das geht ohne Probleme...

------------------
Lutz Federbusch
Mein Gästebuch
Der Mensch, Herr oder Sklave der Technik?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Mitglied
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lutz,

ich fasse es nicht. Da ärgert man sich mit unnötigem Befehlen und Parametern rum und dabei ist es so einfach!

Herzlichen Dank für diesen Hinweis!

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz