| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Multivalue Parameter (886 mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 16. Apr. 2020 16:51 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Wie prüfe ich in vba den gewählten Wert eines multivalue userParameter? Code: Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocumentDim oRefDocs As DocumentsEnumerator Set oRefDocs = oDoc.AllReferencedDocuments Dim oRefDoc As Document For Each oRefDoc in oRefDocs Dim oParameters As UserParameters Set oParameters = oRefDoc.ComponentDefinition.Parameters.UserParameters MsgBox oParameters.Item("Parameter").value Next
Code ist nur Beispielhaft. Ich möchte den Wert eines userParameter prüfen und je nach Wert etwas ausführen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 17. Apr. 2020 05:59 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Moin Du kannst den Wert von Parameter.Value prüfen oder wenn die Einheit dabei sein soll Parameter.Expression. Die Werteliste eines MultiValueParameters befindet sich in Parameter.ExpressionList. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 17. Apr. 2020 08:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf Danke für deine Rückmeldung. Ich habe aber das Gefühl, wenn ich mit Parameter.value den Wert prüfe, erhalte ich sämtliche Parameter-Einträge der Liste geprüft. Also wenn ich Bspw. prüfe If Parameter.Value = "Apfel" Then ..., "Birne" aber der aktuelle Parameter-Wert ist, wird trotzdem Then ... ausgeführt. Oder muss ich mit multivalue Parameter etwas speziell beachten? Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projektleiter Konstruktiver Ingenieurbau (w/m/d) | Gemeinsam. Sicher. Mobil. Eine funktionierende Autobahninfrastruktur ist der Garant dafür, dass Deutschland mobil ist. Damit das so bleibt, brauchen wir Ihre Expertise als Ingenieur oder Ingenieurin. Tausende Brücken, hunderte Tunnel und unzählige Nebenanlagen müssen regelmäßig geprüft, gewartet und erneuert werden. Auch die Steuerung des Verkehrs sowie die Koordination ... | Anzeige ansehen | Projektmanagement |
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 18. Apr. 2020 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Moin Nein, value enthält nur den aktuellen Wert. Ich hab es mit numerischen und Textwerten probiert, funktioniert beides korrekt. Du kannst mal einen Haltepunkt auf die If-Zeile setzen und dir den Inhalt von Parameter.Value ansehen. Oder du schreibst dir in beide Teile eine Debug.Print Anweisung, falls das Fehlverhalten in einer sehr häufig duchlaufenen Schleife auftritt. Mit STRG+G das Direktfenster einblenden, falls noch nicht vorhanden und nach dem Durchlauf schauen wann Parameterwert und Zweig nicht zusammenpassen. Code:
Private Sub UserParameterValue()Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim oParam As UserParameter Set oParam = oDoc.ComponentDefinition.Parameters.UserParameters.Item("test") If oParam.Value = "Apfel" Then Debug.Print "File: " & oDoc.FullDocumentName & " --- Then-Zweig --- Parameter test: " & oParam.Value Else Debug.Print "File: " & oDoc.FullDocumentName & " --- Else-Zweig --- Parameter test: " & oParam.Value End If End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |