Hallo Reinhard,
"Bist du sicher, dass Apprentice in einem Addin fehlerfrei funktioniert?"
Ja, du kannst Apprentice unter inventor 2008 in einem Addin ausführen.
Vielleicht habe ich da was falsch verstanden, aber:
Ich denke, das Markus eine IAM geöffnet hat und per Makro prüfen will, ob eine der referenzierten Dateien eine entsprechende Eigenschaft hat.
Dazu kann man die Stückliste durchsuchen:
---
if oAssemblyDoc.ComponentDefinition.BOM.BOMViews.Item(1).ComponentDefinitions.Item(1).BOMStructure = BOMStructureEnum.kReferenceBOMStructure ...
---
Allerdings sieht man dann die Daten der Exemplare, nicht die der referenzierten Modelle.
Man kann auch über die referenzierten Dateien der IAM gehen:
---
oAssemblyDoc.AllReferencedDocuments.Item(1)...
---
"AllReferencedDocuments" bzw "ReferencedDocuments" gestattet meines Wissens aber nie einen direkten Zugriff auf die Componentdefinitions der referenzierten Datei.
Daher bleibt dann nur:
Ein neues Documentobjekt erstellen, egal ob Partdocument oder Assemblydocument, das auf die referenzierte Datei zeigt und damit auf die Componentdefinition zuzugreifen:
---
oAssemblyDoc = CType(oDrawDoc.ReferencedDocuments.Item(1), Inventor.AssemblyDocument)
If oAssemblyDoc.ComponentDefinition.BOMStructure = BOMStructureEnum.kReferenceBOMStructure ...
---
Oder das Gleiche mit Apprentice zu machen.
Das Ganze noch in eine For each Schleife verpackt, und man durchsucht wirklich alle Dateien des Assemblies.
In einer IDW sieht das meiner Meinung nach im Prinzip genauso aus:
Über "AllReferencedDocuments" erhält man eine Liste aller referenzierten Dateien in der IDW.
Ich kann aber auch in die Teileliste reinschauen:
---
oDrawdoc.ActiveSheet.PartsLists.Item(1).PartsListColumns.PropertyType....
---
Es exisitiert aber kein Property (Spalte), das die BoMStructure zum referenzierten Modell in der Zeile liefern könnte.
Allerdings findet man den Namen der Datei, die in der Zeile verewigt wurde.
In unserem Fall würde die Untersuchung der Teileliste aber sinnlos sein, da auf Referenz gesetzte Teile dort gar nicht auftauchen können.
Ich hatte auch dazu geschrieben, das ich mich nicht auf VBA beziehe.
Grüße
Manfred
[Diese Nachricht wurde von Manfred Zirk am 16. Apr. 2008 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP