| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Bauteil-Material in Baugruppe ändern - Inventor 2014 -2016 (2766 mal gelesen)
|
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 03. Jun. 2015 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wie kann ich das Material eines Bauteils in einer Baugruppe ändern? Was ich bis jetzt habe (VBA): Public Sub SetOccurrenceMaterial() Dim Name As String Name = "1.0120 St37k"
Dim asmDoc As AssemblyDocument Set asmDoc = ThisApplication.ActiveDocument Dim localAsset As Asset On Error Resume Next Set localAsset = asmDoc.Assets.Item(Name) If Err Then On Error GoTo 0 Dim assetLib As AssetLibrary ' Get the Autodesk Material Library. Set assetLib = ThisApplication.AssetLibraries.Item("AD121259-C03E-4A1D-92D8-59A22B4807AD") Dim libAsset As Asset Set libAsset = assetLib.MaterialAssets.Item(Name) Set localAsset = libAsset.CopyTo(asmDoc) End If On Error GoTo 0 Dim occ As ComponentOccurrence Set occ = ThisApplication.CommandManager.Pick(kAssemblyOccurrenceFilter, "Select an occurrence.") 'Wie zuweisen? Call asmDoc.BrowserPanes.ActivePane.TopNode.DoSelect End Sub Vielen Dank Georg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 05. Jun. 2015 06:39 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Du könntest das Bauteil unsichtbar öffnen, das Material zuweisen, speichern und wieder schließen. Über die Baugruppe selbst ist es glaube ich nicht möglich, das Material zu ändern. ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 558 Registriert: 07.01.2005
|
erstellt am: 05. Jun. 2015 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo Georg, Da mich das Material "Generisch" oder "Allgemein" immer stört habe ich ein Makro für die Änderung aus der Baugruppe heraus: Code: Public Sub Material_change()Dim oDoc As Document Set oDoc = ThisApplication.ActiveDocument 'Objekt herstellen If oDoc.DocumentType <> kAssemblyDocumentObject Then Exit Sub Dim oPropSet As PropertySet Dim Material As String Material = "" Dim Anzahl As Integer Anzahl = 0 Dim Anz_gesamt As Integer Anz_gesamt = 0 For Each Bauteil In oDoc.ReferencedDocuments Set oPropSet = Bauteil.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}") 'Design Tracking Properties If Bauteil.DocumentType = kPartDocumentObject Then Anz_gesamt = Anz_gesamt + 1 Material = oPropSet.Item("Material").Value 'MsgBox oPropSet.Item("Part Number").Value + " : " + Material If oPropSet.Item("Material").Value = "Allgemein" Or oPropSet.Item("Material").Value = "Generisch" Then Bauteil.ComponentDefinition.Material = oDoc.Materials.Item("Standard") 'MsgBox PartPropSet.Item("Part Number").Value + " -geändert auf: " + oPropSet.Item("Material").Value Anzahl = Anzahl + 1 End If End If 'kPartDoc Next Bauteil oDoc.Update MsgBox "Insgesamt: " + Format(Anz_gesamt) + " IPT geprüft" + Chr(13) & Chr(10) + "Material in: " + Format(Anzahl) + " IPT geändert" End Sub
------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 05. Jun. 2015 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Moin Das Material in die Baugruppe zu kopieren dürfte nichts helfen, da im Kontext des jeweiligen Bauteils weiterhin nicht vorhanden. Wenn, dann kopiere das Material ins jeweilige Bauteil. Separat öffnen brauchst du das Bauteil nicht, mit dem Öffnen der BG ist es bereits offen. Es fehlen alle Prüfungen usw. aber so in etwa sollte es gehen. Hab gerade keinen Inventor zum Testen. Code: Public Sub SetOccurrenceMaterial() Dim Name As String Name = "1.0120 St37k" Dim asmDoc As AssemblyDocument Set asmDoc = ThisApplication.ActiveDocument Dim occ As ComponentOccurrence Set occ = ThisApplication.CommandManager.Pick(kAssemblyOccurrenceFilter, "Select an occurrence.") 'Wie zuweisen? 'Call asmDoc.BrowserPanes.ActivePane.TopNode.DoSelect Dim oDoc As PartDocument Set oDoc = occ.Definition.Document Dim assetLib As AssetLibrary ' Get the Autodesk Material Library. Set assetLib = ThisApplication.AssetLibraries.Item("AD121259-C03E-4A1D-92D8-59A22B4807AD") Dim libAsset As Asset Set libAsset = assetLib.MaterialAssets.Item(Name) Dim localAsset As Asset Set localAsset = libAsset.CopyTo(oDoc) Dim oMat As Material For Each oMat In oDoc.Materials If oMat.Name = Name Then oDoc.ComponentDefinition.Material = oMat Exit For End If Next End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeorgK Mitglied
Beiträge: 619 Registriert: 06.06.2001
|
erstellt am: 08. Jun. 2015 10:00 <-- editieren / zitieren --> Unities abgeben:
|
yamaha Mitglied Konstrukteur
Beiträge: 384 Registriert: 19.05.2004 Autocad/Inventor 2019, Windows 7 Pro 64Bit
|
erstellt am: 26. Feb. 2016 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für GeorgK
Hallo zusammen, ich habe nach einem Code gesucht um das Material aller Bauteile einer Baugruppe zu ändern. Eurer obiger Code hat mir geholfen, dieses Problem zu lösen. Nachfolgend deswegen auch zur allgemeinen Info. Zuerst wird in der Baugruppe nach allen referenzierten Dokumenten gesucht. Ist das Dokument ein Bauteil, so wird dies entsprechend geändert. Ist das Dokument eine Baugruppe, wird die Baugruppe nach Bauteilen durchsucht. Desweiteren wird in dem Bauteil noch die Darstellung angepasst auf "wie Bauteil". Code:
Public Sub SetOccurrenceMaterial() Dim strMaterial As String strMaterial = "Titan" Dim asmDoc As AssemblyDocument Set asmDoc = ThisApplication.ActiveDocument ChangeMaterialAssembly asmDoc, strMaterial ThisApplication.ActiveDocument.Update End Sub Function ChangeMaterialAssembly(objAsmDoc As AssemblyDocument, strMaterial As String) Dim objBauteil As Document For Each objBauteil In objAsmDoc.ReferencedDocuments If objBauteil.DocumentType = kPartDocumentObject Then Dim oDoc As PartDocument Set oDoc = objBauteil Dim assetLib As AssetLibrary Set assetLib = ThisApplication.AssetLibraries.Item("AD121259-C03E-4A1D-92D8-59A22B4807AD") Dim libAsset As Asset Set libAsset = assetLib.MaterialAssets.Item(strMaterial) Dim localAsset As Asset Err.Clear On Error Resume Next Set localAsset = libAsset.CopyTo(oDoc) On Error GoTo 0 RemoveFeatureAndFaceColorOverrides oDoc Dim oMat As Material For Each oMat In oDoc.Materials If oMat.Name = strMaterial Then oDoc.ComponentDefinition.Material = oMat Exit For End If Next ElseIf objBauteil.DocumentType = kAssemblyDocumentObject Then ChangeMaterialAssembly objBauteil, strMaterial End If Next End Function Public Sub RemoveFeatureAndFaceColorOverrides(oPartDoc As PartDocument) Dim oFeature As PartFeature For Each oFeature In oPartDoc.ComponentDefinition.Features Call oFeature.SetRenderStyle(kPartRenderStyle) Next Dim oFaces As ObjectCollection Set oFaces = oPartDoc.AttributeManager.FindObjects( _ "com.autodesk.inventor.FaceAttributes", "FaceColor") Dim oFace As Face For Each oFace In oFaces Call oFace.SetRenderStyle(kFeatureRenderStyle) Next End Sub
------------------ Gruß Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |