Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Material mit Hilfe von VBA ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von PaulSchuepbach an!   Senden Sie eine Private Message an PaulSchuepbach  Schreiben Sie einen Gästebucheintrag für PaulSchuepbach

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 19. Jan. 2004 09:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von PaulSchuepbach an!   Senden Sie eine Private Message an PaulSchuepbach  Schreiben Sie einen Gästebucheintrag für PaulSchuepbach

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 19. Jan. 2004 10:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

Hallo Ulrich,

hmmmm.... keine Ahnung... Aber ich keonnte mir vorstellen, dass Du vielleicht erst mal das Part sichern musst. Versuch das mal, und frag nach dem speichern nochmals die Proerties ab. Wenn das nicht hilft, dann ueberschreib die Propertie einfach...

Gruesse,

Paul

www.morecam.ch/cad.htm

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ulr1ch
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von PaulSchuepbach an!   Senden Sie eine Private Message an PaulSchuepbach  Schreiben Sie einen Gästebucheintrag für PaulSchuepbach

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 19. Jan. 2004 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

Hallo Ulrich,

bei mir aendert sich gar nichts, da es bei mir kein Material namens 'POM' gibt. Hast Du ein solches Material ? Du kannst nur bestehende Materialien zuweisen. Also falls Du kein Material Namens 'POM' hast, must Du es erst erzeugen.


Gruesse,

Paul

www.morecam.ch/cad.htm

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ulr1ch
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von waldi an!   Senden Sie eine Private Message an waldi  Schreiben Sie einen Gästebucheintrag für waldi

Beiträge: 272
Registriert: 07.08.2001

erstellt am: 19. Jan. 2004 11:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

Hi,

mach die Materialzuweisung mal nicht über die Properties sondern über die PartComponentDefinition und die Property Material

PartComponentDefinition.Material="POM"

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ulr1ch
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 19. Jan. 2004 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Ulr1ch an!   Senden Sie eine Private Message an Ulr1ch  Schreiben Sie einen Gästebucheintrag für Ulr1ch

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo daywa1k3r,

danke für den Tipp, hat mir sehr geholfen. Jetzt funktioniert alles so, wie ich will.

Schöne Grüße

Ulrich

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Eman1
Mitglied
Maschinenbau Ingenieur


Sehen Sie sich das Profil von Eman1 an!   Senden Sie eine Private Message an Eman1  Schreiben Sie einen Gästebucheintrag für Eman1

Beiträge: 33
Registriert: 22.02.2007

erstellt am: 22. Nov. 2008 01:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ulr1ch 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz