Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Bauteil-Material in Baugruppe ändern - Inventor 2014 -2016

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
  
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



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

Beiträge: 619
Registriert: 06.06.2001

erstellt am: 03. Jun. 2015 10:27    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 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


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

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 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 GeorgK 10 Unities + Antwort hilfreich

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



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

Beiträge: 558
Registriert: 07.01.2005

erstellt am: 05. Jun. 2015 09:41    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 GeorgK 10 Unities + Antwort hilfreich

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




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

Beiträge: 2580
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 05. Jun. 2015 10: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 GeorgK 10 Unities + Antwort hilfreich

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



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

Beiträge: 619
Registriert: 06.06.2001

erstellt am: 08. Jun. 2015 10:00    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

Vielen Dank für Eure Hilfe.

Georg

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

yamaha
Mitglied
Konstrukteur


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

Beiträge: 384
Registriert: 19.05.2004

Autocad/Inventor 2019, Windows 7 Pro 64Bit

erstellt am: 26. Feb. 2016 16:18    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 GeorgK 10 Unities + Antwort hilfreich

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

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)2024 CAD.de | Impressum | Datenschutz