|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung 
 | 
| Autor | Thema:  Vorhandensein eines Parameters überprüfen (3258 mal gelesen) | 
 | KAME Mitglied
 techn. Angestellter
 
   
 
      Beiträge: 152Registriert: 21.06.2006
 |    erstellt am: 04. Sep. 2014 08:47  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo CAD-Community, ich komme bei einem (wahrscheinlich kleinem) Problem nicht weiter.Und zwar will ich in einem Bauteil oder einer Baugruppe überprüfen ob ein Parameter vorhanden ist; wenn JA dann soll dieser ein Exportparameter sein und wenn nicht vorhanden, soll er zuerst erstellt und dann als Exportparameter gesetzt sein.
 Hier mein Code bis jetzt: Code:
 Option Explicit
 Public Sub Parameter()
 Dim oDoc As Inventor.DocumentSet oDoc = ThisApplication.ActiveDocument
 Dim oParams As Inventor.ParametersSet oParams = oDoc.ComponentDefinition.Parameters
 Dim oparam As Parameter
 For Each oparam In oParams.UserParameters     If oparam.Name = "L" ThenoParams.UserParameters.item("L").ExposedAsProperty = True
 Exit For
     ElseoParams.UserParameters.AddByValue "L", 0, kMillimeterLengthUnits
 oParams.UserParameters.item("L").ExposedAsProperty = True
 Exit For
     End IfNext
 End Sub
 
 
 Ich hoffe Ihr könnt mir schnell helfen. Vielen Dank im voraus. MfG,Joscha
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | rkauskh Moderator
 Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
 
        
 
  
 
      Beiträge: 2933Registriert: 15.11.2006
 Windows 10 x64, AIP 2020-2025 |    erstellt am: 04. Sep. 2014 12:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für KAME   
  Hallo Ohne den Code getestet zu haben, wo ist das Problem? Auf den ersten sehe ich keinen Fehler.Außer das es ein Problem geben könnte mit der Deklaration von oDoc als Document. Das könnte zu allgemein sein, da Zeichnungen keine Parameter kennen.
 ------------------MfG
 Ralf
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | BernoAn Mitglied
 
 
   
 
      Beiträge: 173Registriert: 16.01.2014
 |    erstellt am: 04. Sep. 2014 15:34  <-- editieren / zitieren -->    Unities abgeben:           Nur für KAME   
  Wie gefällt dir das ? Wenn noch kein Userparameter erstellt wurde erst ein "Dummy" erstellen, dann funktioniert es bestens :-) Code:
 Public Sub Parameter() Dim oDoc As Inventor.DocumentSet oDoc = ThisApplication.ActiveDocument
 Dim oParams As Inventor.ParametersSet oParams = oDoc.ComponentDefinition.Parameters
 Dim oparam As Parameter
 If oParams.UserParameters.Count = 0 Then        oParams.UserParameters.AddByValue "dummy", 0, kMillimeterLengthUnitsoParams.UserParameters.Item("dummy").ExposedAsProperty = False
 End If
 For Each oparam In oParams.UserParameters     If oparam.Name = "L" ThenoParams.UserParameters.Item("L").ExposedAsProperty = True
 Exit For
     ElseoParams.UserParameters.AddByValue "L", 0, kMillimeterLengthUnits
 oParams.UserParameters.Item("L").ExposedAsProperty = True
 Exit For
     End If
 Next
 End Sub
 
 
 Gruß
 Berno
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | KAME Mitglied
 techn. Angestellter
 
   
 
      Beiträge: 152Registriert: 21.06.2006
 |    erstellt am: 04. Sep. 2014 15:36  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Ralf, das Problem ist, dass das Macro nichts macht. Weder einen Parameter anleget noch eine Fehlermeldung ausgibt. Wenn ich jetzt den fett markierten Teil im Code weg lasse funktioniert es. (teilweise) Nur dann durchsucht er jede Art von Parametern (Modellparameter, Referenzparameter,etc) und jedes mal wenn er keinen Parameter in jener Kategorie findet erzeugt er einen neuen (L_1, L_1_2, etc).
 Aber ich will, dass er ja nur die Userparameter durchsucht.
 Darum habe ich bei dem vorherigen Code das .UserParameters hinzugefügt. Code:
 Option Explicit
 Public Sub Parameter()
 Dim oDoc As Inventor.DocumentSet oDoc = ThisApplication.ActiveDocument
 Dim oParams As Inventor.ParametersSet oParams = oDoc.ComponentDefinition.Parameters
 Dim oparam As Parameter
 For Each oparam In oParams.UserParameters     If oparam.Name = "L" ThenoParams.UserParameters.item("L").ExposedAsProperty = True
 Exit For
     ElseoParams.UserParameters.AddByValue "L", 0, kMillimeterLengthUnits
 oParams.UserParameters.item("L").ExposedAsProperty = True
 Exit For
     End IfNext
 End Sub
 
 
 Ich hoffe ich hab mich verständlich ausdrücken können    MfG,Joscha
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | rkauskh Moderator
 Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
 
        
 
  
 
      Beiträge: 2933Registriert: 15.11.2006
 Windows 10 x64, AIP 2020-2025 |    erstellt am: 04. Sep. 2014 18:52  <-- editieren / zitieren -->    Unities abgeben:           Nur für KAME   
  Hallo Hab den Code jetzt mal ausprobieren können. Im 2014er funktioniert der problemlos. Bis auf das lauter fortlaufend numerierte L-Parameter angelegt werden, bis er L findet.Kannst du mal den hier probieren? Und wenn der auch nichts macht, setz mal einen Haltepunkt möglichst weit am Anfang, geh mit F8 schrittweise durch und prüf mal ob die Variablen alle korrekt gefüllt werden.
 Code:Option Explicit
 Public Sub Parameter()
 Dim oDoc As Inventor.DocumentSet oDoc = ThisApplication.ActiveDocument
 Dim oParams As Inventor.ParametersSet oParams = oDoc.ComponentDefinition.Parameters
 Dim oparam As Parameter
 Dim bFound As Boolean
 For Each oparam In oParams.UserParametersIf oparam.Name = "L" Then
 bFound = 1
 End If
 Next
 If bFound ThenSet oparam = oParams.UserParameters.Item("L")
 Else
 Set oparam = oParams.UserParameters.AddByValue("L", 0, kMillimeterLengthUnits)
 End If
 oparam.ExposedAsProperty = True End Sub
 
 ------------------MfG
 Ralf
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
| 
  
 |  | 
 | KAME Mitglied
 techn. Angestellter
 
   
 
      Beiträge: 152Registriert: 21.06.2006
 |    erstellt am: 08. Sep. 2014 09:57  <-- editieren / zitieren -->    Unities abgeben:            |