| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Auf dem Weg zur digitalen Auftragsmappe. , ein Anwenderbericht
|
Autor
|
Thema: iLogic Parameter erstellen (8622 mal gelesen)
|
g-konstruktion Mitglied Konstrukteur
Beiträge: 477 Registriert: 05.11.2001 Mod Prosteel-Forum<P>-- IV2017 Prof. -- Win10 Prof 64-bit i7-3820 nvidia GeForce GTX 570 32GB RAM -- Notebook Dell Precisison M4400 Quadro FX 770M 4GB RAM
|
erstellt am: 18. Nov. 2013 15:25 <-- editieren / zitieren --> Unities abgeben:
Hi, ich komme mit meiner Regel langsam weiter, hänge aber dennoch an entscheidender Stelle fest. Zum Hintergrund: Ich möchte heruntergeladenen Normteilen bestimmte Eigenschaften zuweisen. Das klappt auch gut, sämtliche iproperties werden sauber bereinigt bzw. neu vergeben. Lediglich beim Material habe ich Probleme, denn ich benötige einen benutzerdefinierten Parameter Namens "Material". Nun kann ich zwar existierende Parameter gut anpassen, allerdings ist es mir nicht gelungen einen neuen Parameter per iLogic anzulegen. Geht das nicht oder überseh ich etwas? Auch eine Suche erbrachte nichts Erhellendes... So funktioniert die Regel wunderbar, wenn das Bauteil entsprechend vorbereitet ist, als externe Regel mit einem neuen Bauteil bricht sie ab mit der Fehlermeldung "Der öffentliche Member Material für den Typ PartDocument wurde nicht gefunden." Hier dache ich noch, dass es Probleme mit interner/externer Regel gibt, es liegt aber wohl an der Parameterdefinition. Für Hinweise wäre ich sehr dankbar... Gruß, Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cheeseburger Mitglied staatl. gepr. Techniker
Beiträge: 159 Registriert: 16.12.2011 Intel Xeon E5-1620@3.6Ghz 32GB RAM Quadro 4000 PDSU 2014 / Vault Pro / PRO.FILE
|
erstellt am: 18. Nov. 2013 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für g-konstruktion
Hallo vielleicht verstehe iuch deine Frage nicht richtig, aber: iProperties.Value("Custom", "Material")="irgendein Material" erstellt dir zB einen benutzerdefinierten Parameter namens "Material" und gibt dafür den Wert "irgendein Material" an. das ist nicht das was du willst? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3833 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 18. Nov. 2013 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für g-konstruktion
Hallo Michael, bisher ist es mir auch nur gelungen, indem ich VBA dafür benutzt habe. Code:
Sub AddParamMaterial() If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _ ThisApplication.ActiveDocumentType <> kPartDocumentObject Then 'MsgBox "Only Part or Assymbly document", vbCritical Exit Sub End If ' Declare the Application object Dim oApplication As Inventor.Application ' Obtain the Inventor Application object. ' This assumes Inventor is already running. Set oApplication = ThisApplication ' Set a reference to the active document. ' This assumes a document is open. Dim oDoc As Document Set oDoc = oApplication.ActiveDocument Dim oParams As Parameters Set oParams = oDoc.ComponentDefinition.Parameters 'Try to read, if fails it doesn't exist so create On Error Resume Next Err.Clear Dim vValue As Variant vValue = oParams.Item("Material").Value If Err.Number <> 0 Then Call oParams.UserParameters.AddByValue("Material", "---", "Text") End If End Sub
Das habe ich dann in der Regel so verwendet: Code:
InventorVb.RunMacro("Anwendungsprojekt", "Parameter", "AddParamMaterial")Parameter("Material")=ThisDoc.Document.ComponentDefinition.Material.Name
weiter bin ich da noch nicht gekommen. Leider. ------------------ mit freundlichem Gruß aus Mönchengladbach Lothar Boekels ----------------------------------------------------- Wir unterstützen die Arbeit der Rettungshundestaffel des DRK in Viersen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
g-konstruktion Mitglied Konstrukteur
Beiträge: 477 Registriert: 05.11.2001 Mod Prosteel-Forum<P>-- IV2017 Prof. -- Win10 Prof 64-bit i7-3820 nvidia GeForce GTX 570 32GB RAM -- Notebook Dell Precisison M4400 Quadro FX 770M 4GB RAM
|
erstellt am: 18. Nov. 2013 17:09 <-- editieren / zitieren --> Unities abgeben:
|
Cheeseburger Mitglied staatl. gepr. Techniker
Beiträge: 159 Registriert: 16.12.2011 Intel Xeon E5-1620@3.6Ghz 32GB RAM Quadro 4000 PDSU 2014 / Vault Pro / PRO.FILE
|
erstellt am: 18. Nov. 2013 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für g-konstruktion
|
loop29 Mitglied
Beiträge: 903 Registriert: 15.02.2004 Factory Design Suite Ultimate 2012, Dell T3600, 16 Gbyte, Quadro 4000 Dell M6800, 32 Gbyte, Quadro K5100M
|
erstellt am: 18. Nov. 2013 17:28 <-- editieren / zitieren --> Unities abgeben: Nur für g-konstruktion
Wie wär´s damit? Imports Inventor.UnitsTypeEnum Sub Main() Dim oDoc As Document oDoc = ThisApplication.ActiveDocument Dim oCompDef As ComponentDefinition oCompDef = oDoc.ComponentDefinition Dim oParams As Parameters oParams = oCompDef.Parameters Dim oUserParams As UserParameters oUserParams = oParams.UserParameters Dim Werkstoff As Parameter oMaterialType = oUserParams.AddbyValue("Werkstoff", "", kTextUnits) MultiValue.List("Werkstoff") = iProperties.Materials End Sub
Probier mal aus ob das passt, ist aber nur Konzept... muß nicht immer funktionieren. Im realen Fall sollte man vorher prüfen ob der Parameter schon existiert, ansonsten wird einfach Werkstoff_1, Werkstoff_2 usw. reingebügelt.
Grüße Falk Edit: Hab die Dokumentendefinition auf allgmein geändert, sodass es für Bauteile und Baugrupen funktioniert. [Diese Nachricht wurde von loop29 am 18. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
g-konstruktion Mitglied Konstrukteur
Beiträge: 477 Registriert: 05.11.2001 Mod Prosteel-Forum<P>-- IV2017 Prof. -- Win10 Prof 64-bit i7-3820 nvidia GeForce GTX 570 32GB RAM -- Notebook Dell Precisison M4400 Quadro FX 770M 4GB RAM
|
erstellt am: 19. Nov. 2013 07:49 <-- editieren / zitieren --> Unities abgeben:
|
g-konstruktion Mitglied Konstrukteur
Beiträge: 477 Registriert: 05.11.2001 Mod Prosteel-Forum<P>-- IV2017 Prof. -- Win10 Prof 64-bit i7-3820 nvidia GeForce GTX 570 32GB RAM -- Notebook Dell Precisison M4400 Quadro FX 770M 4GB RAM
|
erstellt am: 19. Nov. 2013 12:34 <-- editieren / zitieren --> Unities abgeben:
So, ich taumle hier weiter mit meinem gefährlichen Halbwissen durch die Gegend... Er macht jetzt grundsätzlich das, was er soll. Du hattest es ja schon angedeutet, er legt jetzt Parameter an, auch wenn er schon existiert, hab dann Werkstoff_1_2_3_4 nach dem fünften Ausführen... kein Problem, mach ich halt ne Abfrage drumherum... dachte ich Ich kann den Parameter nicht abfragen, bevor ich ihn definiere, da meckert er. Hab dann versucht ne 2. Regel quasi als Mantel zu definieren, mag er aber auch nicht... Wie mach ich das am Besten? Ich verspreche auch, nach dem Projekt erst mal mehr Basics zu pauken So ist das, wenn man quer-einsteigt und direkt was produktives machen will/soll... Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
loop29 Mitglied
Beiträge: 903 Registriert: 15.02.2004 Factory Design Suite Ultimate 2012, Dell T3600, 16 Gbyte, Quadro 4000 Dell M6800, 32 Gbyte, Quadro K5100M
|
erstellt am: 19. Nov. 2013 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für g-konstruktion
Hey Michael, ja das ist ein steiniger Weg ohne zusätzliche Literatur. Deswegen würde ich mir an Deiner Stelle ein Buch über Programmieren mit VB.net zulegen. Ich hab das auch nur abgetippert aus dem Inventor Customization Forum -> http://forums.autodesk.com/t5/Inventor-Customization/Create-Multi-value-parameter-with-iLogic/m-p/3439339#M38338 Aber zurück zum Thema, Try Catch ist hier recht hilfreich. Imports Inventor.UnitsTypeEnum Sub Main() Dim oDoc As Document oDoc = ThisApplication.ActiveDocument Dim oCompDef As ComponentDefinition oCompDef = oDoc.ComponentDefinition Dim oParams As Parameters oParams = oCompDef.Parameters Dim oUserParams As UserParameters oUserParams = oParams.UserParameters Dim Werkstoff As Parameter Try oTester = oUserParams.Item("Werkstoff") Catch oMaterialType = oUserParams.AddbyValue("Werkstoff", "", kTextUnits) MultiValue.List("Werkstoff") = iProperties.Materials End Try End Sub Mit Try kannst Du hier versuchen der Variable oTester den Parameter zuzuweisen bzw. den Wert von "Werkstoff" in oTester reinzuschreiben. Wenn das nicht funktioniert (weil "Werkstoff" nicht existiert), geht´s bei Catch weiter und hier wird dann der Parameter angelegt. Viel Erfolg Falk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
g-konstruktion Mitglied Konstrukteur
Beiträge: 477 Registriert: 05.11.2001 Mod Prosteel-Forum<P>-- IV2017 Prof. -- Win10 Prof 64-bit i7-3820 nvidia GeForce GTX 570 32GB RAM -- Notebook Dell Precisison M4400 Quadro FX 770M 4GB RAM
|
erstellt am: 19. Nov. 2013 13:54 <-- editieren / zitieren --> Unities abgeben:
Perfekt! Danke! Mehr als 10 Üs gehen leider nicht Macht jetzt, was er soll. Ich hatte schon mal bisschen was für ProSteel unter .net programmiert, will auch mittelfristig dahin. Was jetzt unter iLogic geht und was nicht, muss ich aber erst mal herausbekommen. Auf dem Anwendertag mit entsprechender Kommunikation hat das auch schon ganz gut geklappt, wenn man aber 1/4 Jahr wieder gar nix macht, ist sowas schnell wieder weg. Aber wie gesagt, vielen Dank! Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |