Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Alle Materialien rekursiv von A auf B?

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 wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Alle Materialien rekursiv von A auf B? (1018 mal gelesen)
axi92
Mitglied
Konstrukteur


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

Beiträge: 685
Registriert: 20.02.2010

Inventor 2014 64bit SP2
Vault Basic 2014 64bit SP1
HP Z200
Win 7 64bit
16GB RAM
CPU: i5 3,2GHz
GPU: Nvidia Quadro K600

erstellt am: 10. Apr. 2014 10:42    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

Wie kann man wenn man eine Baugruppe offen hat von allen Bauteilen das Material auf "1.4301" ändern wenn es "Allgemein" ist?

------------------
Grüße aus Wien
Philipp
http://black-evolution.de/

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: 559
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 10. Apr. 2014 20: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 Nur für axi92 10 Unities + Antwort hilfreich

Hallo Philipp,

könnte etwa so gehen:

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 = ""
 
For Each Bauteil In oDoc.ReferencedDocuments
  Set oPropSet = Bauteil.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}") 'Design Tracking Properties
  If Bauteil.DocumentType = kPartDocumentObject Then
      Material = oPropSet.Item("Material").Value
      'MsgBox oPropSet.Item("Part Number").Value + " : " + Material
     
      If oPropSet.Item("Material").Value = "Allgemein" Then
          Dim oPartDoc As PartDocument
          Set oPartDoc = ThisApplication.Documents.Open(Bauteil.FullFileName, True)
         
          oPropSet.Item("Material").Value = "1.4305"
          'MsgBox oPropSet.Item("Part Number").Value + " -geändert auf: " + oPropSet.Item("Material").Value
          'ThisApplication.SilentOperation = True  'Speichern ohne Meldungsfenster
          oPartDoc.Close (False)
          'ThisApplication.SilentOperation = False 'später, wes es funktioniert Speichern ohne Dialog
          'Call Bauteil.Update
          'Call Bauteil.Save
      End If
  End If 'Bauteil.DocumentType
Next Bauteil
End Sub


Aber:
Die IPT mit Material "Allgemein" wird zwar geöffnet und das Material auf 1.4305 geändert.
Die Anzeige in den iProperties steht aber immer noch auf Allgemein!
In der IDW wird aber das neue 1.4305 angezeigt !?!?

------------------
Gruß Roland

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

axi92
Mitglied
Konstrukteur


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

Beiträge: 685
Registriert: 20.02.2010

Inventor 2014 64bit SP2
Vault Basic 2014 64bit SP1
HP Z200
Win 7 64bit
16GB RAM
CPU: i5 3,2GHz
GPU: Nvidia Quadro K600

erstellt am: 11. Apr. 2014 09:32    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

Wie geht das denn?
Die Anzeige in der IDW ist doch komplett abhängig von dem .ipt Material?

------------------
Grüße aus Wien
Philipp
http://black-evolution.de/

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: 559
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 11. Apr. 2014 10:11    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 axi92 10 Unities + Antwort hilfreich

Hallo,

Das weiß ich auch nicht. Deshalb habe ich es ja erwähnt.

Probier doch bitte das Makro aus und melde mal zurück, was bei dir passiert.
Um einen besseren Überblick zu erhalten, die MsgBox wieder anzeigen.
Vielleicht finden wir ja gemeinsam eine Lösung.

Ich erstelle für jede Maschine für den Einkauf und die Fertigung eine Einzelteilstückliste, die ich in Excel exportiere.
Darin habe ich das Problem mit Material Allgemein oder Generisch bisher dadurch gelöst, dass ich die Spalte Material bedingt formatiere:
Allgemein oder Generisch wird darin rot eingefärbt.

------------------
Gruß Roland

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

SEHER
Mitglied
Systemanalytiker


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

Beiträge: 1203
Registriert: 13.03.2001

erstellt am: 11. Apr. 2014 15:47    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 axi92 10 Unities + Antwort hilfreich


iPropManager.jpg

 
...oder mit bestehenden Tools.

------------------
Gruß
SEHER
www.inventor-tools.de

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: 559
Registriert: 07.01.2005

i7-9700k
32GB DDR4-RAM
Nvidia RTX 2060
SSD 970 m.2
Win10-64 (21H2)
AIP 2020.3
Dell U3417W

erstellt am: 11. Apr. 2014 17:03    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 axi92 10 Unities + Antwort hilfreich

Hallo SEHER,

Da deine Inventor-Tools ja genau das gewünschte machen (Material ersetzen)
Könntest du uns doch einen Tip geben, welchen Parameter wir ändern müssen, dass tatsächlich das Material und nicht nur das iProp "Material" geändert wird ?

------------------
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: 2630
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 11. Apr. 2014 22: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 axi92 10 Unities + Antwort hilfreich

Hallo

Nicht das iProp, sondern das zugewiesene Material ändern.

Code:
Sub ChangeMaterial()

    Dim oDoc As PartDocument
    Set oDoc = ThisApplication.ActiveDocument
 
    Dim oMat As Material
    For Each oMat In oDoc.Materials
        If oMat.Name = "1.4305" 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

axi92
Mitglied
Konstrukteur


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

Beiträge: 685
Registriert: 20.02.2010

Inventor 2014 64bit SP2
Vault Basic 2014 64bit SP1
HP Z200
Win 7 64bit
16GB RAM
CPU: i5 3,2GHz
GPU: Nvidia Quadro K600

erstellt am: 14. Apr. 2014 08:38    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

Hi Ralf danke für die Hilfe jedoch verstehe ich deinen Code nicht.

Code:

Sub ChangeMaterial()
    Dim oDoc As PartDocument ' Warum PartDocument? Ich will ja alle Bauteile einer Assembly durchgehen?
    Set oDoc = ThisApplication.ActiveDocument

    Dim oMat As Material
    For Each oMat In oDoc.Materials ' Muss man in der Schleife nicht die einzelnen .ipts durchgehen von der iam?
        If oMat.Name = "1.4301" Then 'Ich will doch von Allgemein zu 1.4301 warum suche ich dann nach 1.4301?
            oDoc.ComponentDefinition.Material = oMat '
            Exit For 'Wenn ein Material zutrift (if abfrage) dann werden alle anderen ignoriert? (Exit For)?
        End If
    Next
End Sub

Müsste es von der Logik her nicht so sein?

Code:

Public Sub ChangeMaterial(oldmat as Material = "Allgemein", newmat as Material = "1.4301") 'Habe versucht Parameter mitzugeben will aber so irgendwie nicht
    Dim oDoc As AssemblyDocument
    Dim oMat As Material
    Set oDoc = ThisApplication.ActiveDocument

    Dim oldmat As Material
    Dim newmat As Material
    Set oldmat = "Allgemein"
    Set newmat = "1.4301"
   
    For Each <Bauteil> In <Baugruppe>
        If <Bauteil.Material> = oldmat Then
            <Bauteil.Material> = newmat
        End If
    Next
End Sub

------------------
Grüße aus Wien
Philipp
http://black-evolution.de/

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: 2630
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 14. Apr. 2014 21:56    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 axi92 10 Unities + Antwort hilfreich

Hallo

Das du meinen Code nicht verstehst liegt daran das es nicht das fertige Programm für dich ist, sondern ein Beispiel für die Zuweisung des Materials in einem Bauteil. Ich dachte du willst selber noch was tun. 
Probier's mal so:

Code:
Public Sub Material_change()

If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then Exit Sub

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument

Dim Material As Material
Dim oDoc As Document

For Each oDoc In oAssDoc.ReferencedDocuments
    If oDoc.DocumentType = kPartDocumentObject Then
        If oDoc.ActiveMaterial.Name = "Allgemein" Then
            For Each oMat In oDoc.Materials
                If oMat.Name = "1.4305" Then
                    oDoc.ComponentDefinition.Material = oMat
                    Exit For
                End If
            Next
        End If
    End If
Next

End Sub



------------------
MfG
Ralf

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