| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Material via iLogic auswählen (1676 / mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 28. Aug. 2020 11:10 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich habe den sehr einfachen iLogic-Code
Code: iProperties.Material=Material
Der den Wert eines MultiValue-Parameters als verwendetes Material setzt. Dies hat bis 2020 bestens funktioniert. Seit 2021 scheint es so, dass es nur funktioniert, wenn sich das Material bereits im Dokument befindet und nicht wie bis anhin nur in der verwendeten benutzerdefinierten Materialbibliothek. Muss man neu auf die explizite Bibliothek verweisen oder geht das nur noch, wenn das Material bereits ins Dokument geladen wurde? Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 28. Aug. 2020 23:16 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Bereits mit Inventor 2013 wurde eine komplett neue API für Material und Darstellung eingeführt. Bisher wurde, mehr schlecht als recht, die alte Vorgehendweise über die neue API gestülpt. Mit Inventor 2021 wurde die alte API versteckt. Möglicherweise liegt es daran. Mit VBA könnte man es wie folgt machen. Dabei wird davon ausgegangen, dass ein Bauteil geöffnet ist und das Material entweder im Bauteil oder der aktiven Bibliothek vorhanden ist. Code:
Option ExplicitPublic Sub SetPartMaterial() Dim oPartDoc As PartDocument Set oPartDoc = ThisApplication.ActiveDocument Dim sMaterial As String sMaterial = oPartDoc.ComponentDefinition.Parameters.UserParameters.Item("Material").Value Dim oAsset As Asset On Error Resume Next Set oAsset = oPartDoc.Assets.Item(sMaterial) If Err Then On Error GoTo 0 Dim oAssetLib As AssetLibrary Set oAssetLib = ThisApplication.ActiveAppearanceLibrary Dim oLibAsset As Asset Set oLibAsset = oAssetLib.MaterialAssets.Item(sMaterial) Set oAsset = oLibAsset.CopyTo(oPartDoc) End If On Error GoTo 0 oPartDoc.ActiveMaterial = oAsset End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 31. Aug. 2020 10:43 <-- editieren / zitieren --> Unities abgeben:
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 02. Sep. 2020 11:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf Habe gerade bemerkt, dass die Regel die Inventor-Materialbibliothek als aktive Bibliothek ausliest obwohl im Dokument und sogar in der Projektdatei diese nicht als aktive Bibliothek gewählt ist. An was kann das liegen? Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 02. Sep. 2020 21:16 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Das liegt an dem Fehler den ich gemacht hab. Es geht ja um Material, nicht um Darstellungen. Die Zeile
Code: Set oAssetLib = ThisApplication.ActiveAppearanceLibrary
sollte logischerweise dann auch Code: Set oAssetLib = ThisApplication.ActiveMaterialLibrary
heißen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 03. Sep. 2020 13:35 <-- editieren / zitieren --> Unities abgeben:
|