Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Wert von Benutzer iPart in Zusammenbau ä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:  Wert von Benutzer iPart in Zusammenbau ändern (1303 mal gelesen)
rucksacktraeger
Mitglied
Techn.Zeichner

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

Beiträge: 5
Registriert: 17.12.2007

erstellt am: 17. Dez. 2007 11:06    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,

ich habe einen Zusammenbau und darin das Benutzer iPart rohr43,2x2.

jetzt möchte ich per vba den wert laenge (benutzerdefiniert) in der Tabelle vom iPart auf 337 mm (abgeleitet von einem Parameter im Zusammenbau- da muss ich mal auch noch sehen wie ich den auselesen kann...) ändern.

Wie mach ich das? Ich bin hier echt nicht weitergekommen...

Vielen Dank für Hilfe

Pete

PS: Bin VB6 Amateurprogrammierer, aber für Inventor hab ich bisher noch nie was programmiert.

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

Manfred Zirk
Mitglied



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

Beiträge: 513
Registriert: 01.11.2002

IV2008 SP1 MDT2008 WIN XP SP2, Vista x64
Asus A8N-SLI, AMD Opteron 180 , 4GB,
Quadro FX 3400

erstellt am: 17. Dez. 2007 18:09    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 rucksacktraeger 10 Unities + Antwort hilfreich

Hallo,

den gewünschten Parameter im iPart als Exportparamter markieren.
Es wird automatisch ein benutzerdefiniertes Propertie mit dem gleichen Namen
erzeugt.
Das geht ohne VBA.

Mit VBA dann das benutzerdefinierte Property bearbeiten.

Sub test1()
'vorher Property Laenge in der Bauteildatei als benutzerdefiniertes Property anlegen
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.ActiveDocument

Dim oPropset As PropertySet
Set oPropset = oPartDoc.PropertySets.Item("User Defined Properties")

Dim oPropLaenge As Property
Set oPropLaenge = oPropset.Item("Laenge")

MsgBox oPropLaenge.Value

End Sub

Grüße

Manfred

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

rucksacktraeger
Mitglied
Techn.Zeichner

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

Beiträge: 5
Registriert: 17.12.2007

erstellt am: 18. Dez. 2007 09: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

Also erst einmal, VIELEN DANK!!!

Mit der Methode ChangeRow bin ich an die Programmier-Grenzen von Autodesk gestoßen. (siehe hier) Laut Hilfe (siehe 'ChangeRow Method') und können hiermit auch benutzerdefinierte Parameter geändert werden, aber praktisch geht das nciht weil von Autodesk noch nicht programmiert :-( (siehe i.a. Autodesk link)

Also hatte ich es schon aufgegeben. Nun bin ich aber schon die ganze Zeit deinen Code am testen. Ich habe das Häckchen als Exportparameter gesetzt und kann mir dann auch mit deinem code das Maß richtig anzeigen lassen.

1.
Aber ich will es ja nicht nur lesen, sondern schreiben! Mit diesem code geht es nciht....

Code:
Sub test1()
...

Dim oPropLaenge As Property
Set oPropLaenge = oPropset.Item("laenge")
MsgBox oPropLaenge.Value

oPropset.Item("laenge") = 15
MsgBox oPropLaenge.Value
End Sub



2.
Ich will den benutzdefinierten Wert ja nicht im Einzelteil ändern, sondern im Zusammenbau. Dazu möchte ich mir den eben angezeigten Wert auch im Zusammenbau anzeigen lassen. Ich dachte es funktionert wie folgt, aber da habe ich mich geirrt... Keine Ahnung wo der Fehler ist. Es kommt bei der Zeile
'Set oPropLaenge = oPropset.Item("laenge")'
die Meldung:
'Die Methode 'Item' für das Objekt '_IRxPropertySet' ist fehlgeschlagen'

Code:
Sub ChangeTableRow()
Dim oApp As Inventor.Application
Set oApp = GetObject(, "Inventor.Application")
Set oAsm = oApp.ActiveDocument
Set oOcc = oAsm.ComponentDefinition.Occurrences(1) '1 für erstes Objekt im Baum
oOcc.Edit

Dim oPropset As PropertySet
Set oPropset = oAsm.PropertySets.Item("User Defined Properties")

Dim oPropLaenge As Property
Set oPropLaenge = oPropset.Item("laenge")

MsgBox oPropLaenge.Value

oApp.CommandManager.[_StartCommand] 43312
End Sub


hast du noch einen Tipp für mich bezüglich der beiden Fragen? Wenn nicht, muss ich das ganze Projekt abbrechen :-(

LG
Pete

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

Manfred Zirk
Mitglied



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

Beiträge: 513
Registriert: 01.11.2002

IV2008 SP1 MDT2008 WIN XP SP2, Vista x64
Asus A8N-SLI, AMD Opteron 180 , 4GB,
Quadro FX 3400

erstellt am: 18. Dez. 2007 17:31    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 rucksacktraeger 10 Unities + Antwort hilfreich

Versuch es mal hiermit:

Sub GetUserProperty()
'Asm mit Part, das das Benutzerproperty "Laenge" enthält

Dim oAsmDoc As AssemblyDocument
Set oAsmDoc = ThisApplication.ActiveDocument

Dim Laenge As Double

MsgBox oAsmDoc.ReferencedDocuments.Item(1).FullFileName

Laenge = oAsmDoc.ReferencedDocuments.Item(1).PropertySets.Item("User Defined Properties").Item("Laenge").Value

MsgBox Laenge

End Sub

Grüße

Manfred

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

Manfred Zirk
Mitglied



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

Beiträge: 513
Registriert: 01.11.2002

IV2008 SP1 MDT2008 WIN XP SP2, Vista x64
Asus A8N-SLI, AMD Opteron 180 , 4GB,
Quadro FX 3400

erstellt am: 18. Dez. 2007 18: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 Nur für rucksacktraeger 10 Unities + Antwort hilfreich

Die Anweisung:

oPropset.Item("laenge") = 15

erzeugt unter anderem einen Fehler, weil du die Objektdefiniton und Ojekteigenschaften verwechselst.
Du musst der Eigenschaft Value des Objektes oPropLaenge (ist gleich =oPropset.item("Laenge")) den Wert 15 zuweisen.

Grüße

Manfred

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

rucksacktraeger
Mitglied
Techn.Zeichner

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

Beiträge: 5
Registriert: 17.12.2007

erstellt am: 21. Dez. 2007 14:33    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

So, da bin ich wieder. Mich hat die Magen-Darm-Grippe für ein paar Tage ausser Gefecht gesetzt. Eigentlich wünsche ich dir ja nicht, dass du noch so kurz vor Weihnachten am Arbeiten bist, aber ich glaube nur du kannst mir jetzt weiterhelfen...

Also das mit dem Value hab ich natürlich übersehen *grmpf*

So kann ich zwar das Property ändern (wenn ich es später in einer anderen sub abfrage, erscheint laenge als 100), aber wenn ich in Inventor auf Parameter gehe, dann ist laenge nicht 100, sondern nach wie vor 300 :-(

Wie kann ich also den Parameter laenge so ändern, dass er das Bauteil darauf abändert?

Frohe Weihnachten
Peter

Code:
Sub SetPropertyInIPart()
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.ActiveDocument
   
    Dim oPropset As PropertySet
    Set oPropset = oPartDoc.PropertySets.Item("User Defined Properties")
   
    Dim oPropLaenge As Property
    Set oPropLaenge = oPropset.Item("laenge")
   
    MsgBox oPropLaenge.Value
   
    oPropLaenge.Value = 100
    MsgBox oPropLaenge.Value
End Sub

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

Manfred Zirk
Mitglied



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

Beiträge: 513
Registriert: 01.11.2002

IV2008 SP1 MDT2008 WIN XP SP2, Vista x64
Asus A8N-SLI, AMD Opteron 180 , 4GB,
Quadro FX 3400

erstellt am: 22. Dez. 2007 09: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 rucksacktraeger 10 Unities + Antwort hilfreich

Werden Parameter geändert, muss das Bauteil anschließend aktualisiert werden.
Dies mach der Benutzer normalerweise beim Klicken auf den Button "Aktualisieren".
In VBA sieht das so aus:


Nachdem du den Wert des Properties Laenge geändert hast, fehlt noch:

If oPartDoc.RequiresUpdate = True then
oPartDoc.Update
End if

Grüße

Manfred

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