| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Material mit Hilfe von VBA ändern (4707 mal gelesen)
|
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 08:58 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, mittlerweile hab ich schon einiges mit Inventor-VBA gemacht. Vor allem auch mit dem Zugriff auf die iProperties. Als nächste möchte ich das Material bei den Physikalischen Eigenschaften ändern. Dazu benötige ich zunächst Zugriff auf die Liste der Materialien. Leider finde ich nicht das passende Objekt. Und dann muss ich ja auch noch das aktuelle Material auswählen. Wie mach ich das? Schöne Grüße Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 19. Jan. 2004 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
HAllo Ulrich, so bekommst Du alle Materialien: Public Sub getMaterials() Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oDoc As PartDocument Set oDoc = oApp.ActiveDocument Dim oMats As Materials Set oMats = oDoc.Materials Dim oMat As Material For Each oMat In oMats Debug.Print oMat.Name Next oMat End Sub Gruesse, Paul www.morecam.ch/cad.htm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 10:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, Dein Code funktioniert wie immer perfekt. Ich schaff es auch, das aktuelle Material auszulesen und zwar mit folgender Zeile: uPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kMaterialDesignTrackingProperties).Value Mit der gleichen Zeile schreib ich die Daten später auch wieder zurück. Das Komische ist nur, die Änderung wird übernommen (erkenne ich daran, dass sich die Farbe des Bauteils ändert), aber wenn ich in den iProperties nachschau, steht im Feld Material bei den physikalischen Eigenschaften der alte Wert. Woran liegt das? Servus Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 19. Jan. 2004 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
|
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, das mit dem Sichern funktioniert nicht. Probier doch bitte folgendes Skript: Public Sub changeMaterials() Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oDoc As PartDocument Set oDoc = oApp.ActiveDocument Dim oPropsets As PropertySets Set oPropsets = oDoc.PropertySets
Dim Mat As String Mat = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kMaterialDesignTrackingProperties).Value Debug.Print Mat Mat = "POM" oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kMaterialDesignTrackingProperties).Value = Mat Debug.Print oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kMaterialDesignTrackingProperties).Value End Sub Und schau nach dem Ausführen in die Properties "Physikalische Eigenschaften" ob da beim Material "POM" steht? Servus Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 19. Jan. 2004 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
|
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 10:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, ich hab ein Material Namens "POM". Ich kann aber auch Materialien zuweisen, die es nicht gibt. Wenn ich die Eigenschaft "Material" per Skript auslese erhalte ich genau das, was ich zuvor zugewiesen habe. Soweit ist das ja ganz in Ordnung. Auch wenn ich mit der Zeichnung auf die Material-Eigenschaften des Modells zugreife erhalte ich den String, den ich eingegeben habe. Nur die Anzeige im Properties-Dialog ändert sich nicht. Ich kann mir echt nicht vorstellen, woran das liegt. Servus Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 19. Jan. 2004 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
|
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, ich habs mit folgender Anweisung verscuht: oDoc.ComponentDefinition.Material.Name = "POM" Damit erhalte ich Zugriff auf die entsprechende Stelle. Leider wird das Material nicht geändert. Das Feld in dem das Material gewählt wird wird geleert, obwohl ich POM als Material hinterlegt habe. Wie komm ich weiter? Ich bin am verzweifeln! Servus Ulrich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 19. Jan. 2004 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Code:
Dim oMaterial As Material Set oMaterial = oDoc.Materials.Item("POM")Dim oRenderStyle As RenderStyle Set oRenderStyle = oDoc.RenderStyles.Item("Blaugrau") oMaterial.RenderStyle = oRenderStyle oDoc.ComponentDefinition.Material = oMaterial
POM und Blaugrau müssen vorhanden sein. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulr1ch Mitglied Konstrukteur
Beiträge: 75 Registriert: 18.12.2003 IV9 Windows XPpro Pentium 4 2,4GHz 1,5GB RAM
|
erstellt am: 19. Jan. 2004 15:05 <-- editieren / zitieren --> Unities abgeben:
|
Eman1 Mitglied Maschinenbau Ingenieur
Beiträge: 33 Registriert: 22.02.2007
|
erstellt am: 22. Nov. 2008 01:16 <-- editieren / zitieren --> Unities abgeben: Nur für Ulr1ch
Hallo, Ich kann kein VBA. Kannst du das funktionsfaehige makro fuer das automatische material setzen hier posten. Vielen Dank Elman ------------------ XP Pro, SW 2006-7, Office 2000, Grafic Quadro 750XL, Ram 1500, CPU 3.0 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |