| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Aktualisierung der Eigenschaft Masse (6348 mal gelesen)
|
Manfred Zirk Mitglied
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: 02. Dez. 2007 22:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich möchte via VBA die das Material und bei Bedarf die Masse eines Bauteils einstellen können. Also entweder über die Materialeigenschaften von Inventor berechnen lassen oder eben manuell eintragen. Das habe ich auch im Prinzip hinbekommen. Leider bin ich aber nicht in der Lage, den Befehl "Masseeigenschaften aktualisieren" , via VBA auszuführen. Die neuen Werte werden also immer erst von Inventor übernommen und in den Iproperties sichtbar, wenn ich das Dokument schließe und neu öffne. Das liegt daran, das ich bisher nicht verstehe, wie ich auf die Befehle von Inventor via VBA zugreifen kann. Ich weiß zwar, das es sich um den CommandManager drehen muss, aber mir fehlt ein einfaches Beispiel dazu, wie man das realisiert. Ich finde auch keine Auflistung der möglichen Kommandos. Für einen Tip wäre ich dankbar. Grüße Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 02. Dez. 2007 23:16 <-- editieren / zitieren --> Unities abgeben: Nur für Manfred Zirk
|
Manfred Zirk Mitglied
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: 03. Dez. 2007 08:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Reinhard, wenn man manuell Veränderungen an der Masseberechnung in den Properties vornimmt, Z.B. die Masse als Benutzerwert einträgt, dann muss ich als Benutzer explizit sagen - übernehmen bzw. berechnen. Erst dann erfolgt die Neubrechnung im aktuellen Dokument. Sezt man dann die Masse wieder auf die automatische Berechnung, dann steht im Feld Masse erstmal "N/V". Die Berechnung erfolgt erst, wenn "Übernehmen" gedrückt wird. Ich möchte die Masse neu berechnen und im geöffneten Dokument die Werte aktualisieren. Das funktioniert weder mit odoc.update noch odoc.rebuild. Es muss also noch eine Möglichkeut geben, die Masseberechnung neu anzustoßen. Das sollte sich hinter dem Befehl "Masseeigenschaften aktualisieren aus der Menüleiste verbergen. In der API konnte ich bisher leider kein Beispiel finden, wie man die Masse aktualisiert. Noch gibt es bei den Massproperties des Dokuments eine Methode "neu brechnen"... Grüße Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 03. Dez. 2007 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für Manfred Zirk
probier mal das: If oDoc.DocumentType <> kDrawingDocumentObject Then Dim oMassProps As MassProperties Set oMassProps = oDoc.ComponentDefinition.MassProperties Dim omass As String If oDoc.RequiresUpdate = True Then Call oDoc.Update End If omass = oMassProps.Mass Call omass2prop(omass, oDoc) End If Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manfred Zirk Mitglied
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: 03. Dez. 2007 21:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Reinhard, Danke für das Beispiel. In dem Beipiel rufst du eine Subroutine omass2Prop (omass,ODoc) auf. Leider fehlt deren Inhalt oder verstehe ich dein Beispiel nicht ganz richtig? Grüße Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 03. Dez. 2007 22:02 <-- editieren / zitieren --> Unities abgeben: Nur für Manfred Zirk
|
Manfred Zirk Mitglied
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: 03. Dez. 2007 23:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Reinhard, ich habe nochmal herumprobiert, die Methoden doc.update oder doc.rebuild bewirken da nichts. oDoc.requiresUpdate ist liefert immer False, wenn man an den Masseeigenschaften herumspielt. Erst nach der manuellen Übernahme wird die Veränderung erkannt. Ich habe es dann endlich geschafft, den Inventorbefehl "Masseeigenschaften aktualisieren" via VBA zu starten. Jetzt erhalte die erwarteten Ergebnisse. Grüße Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 04. Dez. 2007 00:08 <-- editieren / zitieren --> Unities abgeben: Nur für Manfred Zirk
Hallo Manfred, das Aktualisieren der Masse wird mit Code: omass = oMassProps.Mass
angestoßen. Code: oDoc.RequiresUpdate
bewirkt eine Aktualisierung des Dokuments.Mach doch mal bitte ein neues Part und schau dir die Masse an. Die Masse sollte den Wert "N/V" haben. Jetzt führst du den Code aus und schaust dir wieder die Masse an. Was steht da jetzt? Gruß Reinhard
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manfred Zirk Mitglied
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: 04. Dez. 2007 19:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Reinhard, Danke für die Erklärung. Mir war nicht klar, das das Beschreiben der Variablen eben auch Neuauswertung der Masse einschließt. Deshalb habe ich auch dein Beispiel als unvollständig betrachtet. Allerdings benötigt das Dokument bei mir dann kein Update. Die neuen Werte stehen direkt in den Properties. Ich habe es mit der Auswertung von Requiresupdate probiert, dieser Wert bleibt immer False. Grüße Manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 04. Dez. 2007 21:30 <-- editieren / zitieren --> Unities abgeben: Nur für Manfred Zirk
Hallo Manfred, die Abfrage "requiresupdate" ist drin, weil es sein kann, dass das Dokument ein Update erfordert bevor die Masse berechnet wird, z.B. bei Baugruppen oder Abgeleiteten Komponenten. Kann aber auch bei normalen Parts vorkommen. Versuch mal folgendes: - modelliere irgendwas - aktualisiere die Masse - ändere einen Parameter über die Paramterliste - jetzt ist der Blitz aktiv und requiresupdate=true Die Routine steht bei mir in einem Klassenmodul, das beim Speichern aufgerufen wird. Dadurch habe ich immer aktuell gespeicherte Dokumente und immer das aktuelle Gewicht in den IPTs, IAMs. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |