Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  iLogic (Seite 2)

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 Dieses Thema ist 2 Seiten lang:   1  2  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
Autor Thema:  iLogic (5749 mal gelesen)
Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 02. Jun. 2016 13: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 Nur für Sheriff 10 Unities + Antwort hilfreich

Fehler beim Kompilieren:
Typen unverträglich

Geht leider nicht...

Ja ich hab ein Textparameter, Numerische Parameter gehen ja nicht um eine Farbe (Buchstaben/Text) zuzuweisen.

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jun. 2016 15: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 Sheriff 10 Unities + Antwort hilfreich

Wo bringt er denn den Fehler jetzt? Bei der geänderten Zeile?

------------------
MFG

Chris

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jun. 2016 15:13    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 Sheriff 10 Unities + Antwort hilfreich

OK, habe den Fehler gefunden!
Wir versuchen die ganze Zeit den Wert des Liste direkt dem als RenderStyle definierten oRenderstyle zu zuweisen.
Das geht natürlich nicht.

Richtigerweise müsste es also heißen:

Code:
'Dem Platzhalter die ausgewählte Farbe zuweisen
Dim oRenderstyle As RenderStyle
Set oRenderstyle = oDoc.RenderStyles.Item(oDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)

Dann sollte es aber eigentlich funtionieren.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 02. Jun. 2016 15:46    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 Sheriff 10 Unities + Antwort hilfreich

Super das hat geklappt
aber

Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht

und zwar bei
If oPart.PropertySets.Item("Document Summary Information").Item("Part Number").Value = "11111" Then

Ich hab zum Teste, "Part Number" durch "Category ersetzt, gleiches Problem.
Value durch Expression. hat beides nicht geholfen.

aber wir kommen der Lösung näher

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jun. 2016 16:12    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 Sheriff 10 Unities + Antwort hilfreich

Versuchs mal lieber mit:

Code:
If oPart.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then

Dann sollte auch das laufen.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 02. Jun. 2016 16:23    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 Sheriff 10 Unities + Antwort hilfreich

leider nicht, das ist nochmal der ganze Code. Er bringt die gleiche Fehlermeldung

Code:

Public Sub Farbe()
Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.ActiveDocument

'Dem Platzhalter die ausgewählte Farbe zuweisen
Dim oRenderstyle As RenderStyle
Set oRenderstyle = oDoc.RenderStyles.Item(oDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)

Dim oPart As ComponentOccurrence

'Alle Teile der BG durchlaufen
For Each oPart In oDoc.ComponentDefinition.Occurrences
If oPart.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then

'Farbe setzen
oPart.SetRenderStyle kOverrideRenderStyle, oRenderstyle

End If
Next

End Sub

Worin besteht der Unterschied zwischen ("Document Summary Information") und ("Design Tracking Properties") ???

[Diese Nachricht wurde von Joe25 am 02. Jun. 2016 editiert.]

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 03. Jun. 2016 07: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 Sheriff 10 Unities + Antwort hilfreich

Den genauen Unterschied kann ich dir leider auch nicht erklären. Ich weiß nur, dass sie Inventorintern anders genutzt werden.

Hier ein Link zu der Übersicht, welches iProp wo zu finden ist.

Ich hab deinen Code mal ein bisschen verändert:

Code:
Public Sub Farbe()
Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.ActiveDocument

'Dem Platzhalter die ausgewählte Farbe zuweisen
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oDoc.RenderStyles.Item(oDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)

Dim oPart As ComponentOccurrence
Dim oPropset As propertyset
Dim oSub As Document

'Alle Teile der BG durchlaufen
For Each oPart In oDoc.ComponentDefinition.Occurrences
Set oSub = ThisApplication.Documents.Open(oPart.ReferencedDocumentDescriptor.FullDocumentName, False)
If oPart.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then

'Farbe setzen
oPart.SetRenderStyle kOverrideRenderStyle, oRenderstyle

End If
oSub.Close
Next

End Sub


Man kann nicht auf die Properties einer ComponentOccurence direkt zugreifen.
Deswegen der Umweg über das unsichtbare öffnen des Teils.
Bei dem (wirklich nur seeeeeeehr kurzen) Test bei mir ist es ohne Probleme durchgelaufen.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 03. Jun. 2016 09: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 Sheriff 10 Unities + Antwort hilfreich

Hi Chris,
es läuft  nachdem ich

If oPart.PropertySets.....
in
If oSub.PropertySets

geändert dann ging es Problemlos. Kurz überlegt und dann drauf gekommen das er ja in dem geöffnetem Bauteil suchen soll...

Vielen vielen Dank 

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 03. Jun. 2016 09:13    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 Sheriff 10 Unities + Antwort hilfreich

Oh ja, sorry.... Hatte deine Zeile wieder reinkopiert, um deine Zuweisung wieder rein zu kriegen.

Schön, wenn es jetzt läuft.
Ein schönes Wochenende

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 03. Jun. 2016 11:50    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 Sheriff 10 Unities + Antwort hilfreich

Hey Chris ich hab nochmal eine Frage,

es kann ja vorkommen das ich in meiner Baugruppe eine Unterbaugruppe (bestehend aus Bauteilen) eingefügt habe. Dann sucht mein Makro in der Unterbaugruppe nach dem IPropertie,(aber nicht in den Bauteilen der Unterbaugruppe)

Ich habe gerade versucht das Makro zu erweitern, dass er auch auf die Bauteile der Unterbaugruppe zugreift.
(Der obere Teil des Makros habe ich nicht reinkopiert, da dieser Unverändert bleibt.

Code:

'Alle Teile der BG durchlaufen
For Each oPart In oDoc.ComponentDefinition.Occurrences
Set oSub = ThisApplication.Documents.Open(oPart.ReferencedDocumentDescriptor.FullDocumentName, False)
If oSub.FullDocumentName = DocumentName & ".iam" Then

Dim oSub2 As Document

Set oSub2 = oSub.Documents.Open(oPart.ReferencedDocumentDescriptor.FullDocumentName, False)
If oSub2.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "1111" Then

'Farbe setzen
oPart.SetRenderStyle kOverrideRenderStyle, oRenderstyle
oSub2.Close

Else
If oSub.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "1111" Then

'Farbe setzen
oPart.SetRenderStyle kOverrideRenderStyle, oRenderstyle

End If
End If
End If
oSub.Close
Next

End Sub


Es funktioniert noch nicht ganz, mein Problem ist der Abgleich ob "oSub" eine .IAM ist oder nicht und das er dann die Referenzierten Bauteile der Unterbaugruppe öffnet.

Hast du ein Tipp?

[Diese Nachricht wurde von Joe25 am 03. Jun. 2016 editiert.]

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 09. Jun. 2016 09:25    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 Sheriff 10 Unities + Antwort hilfreich

Ist es überhaupt möglich?
Hat mir niemand ein Tipp?

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 14. Jun. 2016 13: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 Nur für Sheriff 10 Unities + Antwort hilfreich

Hallo Joe,

Das ist gar kein Problem....

Code:
Public Sub Farbeaendern()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(odoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOcc As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If

oPartDoc.Update2
oPartDoc.Save2
oPartDoc.Close

End Function


Habe ich nur kurz umgeschrieben. Nicht getestet! Bei Fehlermeldungen bitte melden.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 14. Jun. 2016 14:10    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 Sheriff 10 Unities + Antwort hilfreich

Kein Problem klingt gut   
aber noch bringt er mir eine Fehlermeldung in Zeile 5

Code:
Set oRenderstyle = oAssDoc.RenderStyles.Item(odoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)

Laufzeitfehler 424 Objekt nicht gefunden

Ich habe gerade nochmal die Schreibweise des Parameters geprüft, der stimmt.

Was mir aber gerade aufgefallen ist...
Beim zweiten Abschnitt Private Function Baugruppe schreibst du ja

Code:
Dim oOcc As ComponentOccurrence

müsste dann die "for Each" und die "If" abfrage nicht auf "oOcc" beziehen anstatt auf "oOccurrence" ???
(Hab es getestet, Fehlermeldung besteht weiterhin)

Schon mal Danke für die Hilfe.

[Diese Nachricht wurde von Joe25 am 14. Jun. 2016 editiert.]

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 14. Jun. 2016 16:13    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 Sheriff 10 Unities + Antwort hilfreich

Habs mal ausgebessert. So sollte es jetzt durchlaufen:

Code:
Public Sub Farbeaendern()
Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(oAssDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOcc As ComponentOccurrence

For Each oOcc In oAssDoc.ComponentDefinition.Occurrences

If oOcc.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOcc.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOcc.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOcc.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath, False)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If

oPartDoc.Update2
oPartDoc.Save2
oPartDoc.Close

End Function


------------------
MFG

Chris

[Diese Nachricht wurde von Chris 31 am 14. Jun. 2016 editiert.]

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 14. Jun. 2016 16: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 Nur für Sheriff 10 Unities + Antwort hilfreich

Hi Chris,
wir kommen dem Ziel näher.

Laufzeitfehler 438 - Objekt unterstützt diese Eigenschaft oder Methode nicht.

Code:
oPartDoc.SetRenderStyle kOverrideRenderStyle, oRenderstyle

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 15. Jun. 2016 11:21    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 Sheriff 10 Unities + Antwort hilfreich

Ok, dann probieren wir es eben so:

Code:
Option Explicit

Public Sub Farbeaendern()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(odoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOcc As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath)
Dim StrPartNumber As String
If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
bauteil = "Yes"
Else
oPartDoc.Close
bauteil = "No"
End If

End Function


------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 15. Jun. 2016 12: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 Nur für Sheriff 10 Unities + Antwort hilfreich

Hi Chris,
in Zeile 6 habe ich oDoc in oAssDoc geändert (da die Variable ja nicht zugewiesen wurde)

Danach hängt er bei Zeile 20

Code:
Call bauteil(oPath, oRenderstyle)

Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft

In Zeile 57 deklarierst du StrPartNumber, aber benutzt sie nirgends. Absicht?

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 15. Jun. 2016 14: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 Sheriff 10 Unities + Antwort hilfreich

Sorry, das passiert, wenn man im Stress ist  

Nochmal ausgebessert:

Code:

Public Sub Farbeaendern()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(oAssDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOccurrence As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath, False)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
bauteil = "Yes"
Else
oPartDoc.Close
bauteil = "No"
End If

End Function


------------------
MFG

Chris

[Diese Nachricht wurde von Chris 31 am 15. Jun. 2016 editiert.]

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 16. Jun. 2016 12:52    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 Sheriff 10 Unities + Antwort hilfreich

Hi Chris,

das sollte keine Kritik sein. Ich will ja was lernen und schau mir deshalb den Code genau an. Da ist es mir halt aufgefallen...
Ich bin ja froh das du mir hilfst.

Leider jammert er im zweiten Abschnitt in Zeile 41

Code:
oPath = Occurrence.ReferencedDocumentDescriptor.FullDocumentName

Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt


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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 16. Jun. 2016 13: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 Sheriff 10 Unities + Antwort hilfreich

Hi Joe,

in deinem Code-Ausschnitt fehlt das o in oOccurrence.

sollte eigentlich heißen:

Code:
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName

Falls das kein Kopierfehler ist, dann poste doch bitte mal deinen kompletten Code, damit ich nen Fehler suchen kann.
Bei mir läuft der Code anstandslos durch.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 16. Jun. 2016 13:57    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 Sheriff 10 Unities + Antwort hilfreich


fehler1.JPG


Fehler2.JPG

 
das da oben war mein Fehler...


Code:

Public Sub Farbeaendern()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As RenderStyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(oAssDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As RenderStyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOccurrence As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath, False)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
bauteil = "Yes"
Else
oPartDoc.Close
bauteil = "No"
End If

End Function



das ist normal dein Code 1:1 rüberkopiert
Irgendwelche Verweise (also Extras -> Verweise) die ich aktivieren muss oder sowas?

[Diese Nachricht wurde von Joe25 am 16. Jun. 2016 editiert.]

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Jun. 2016 11: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 Sheriff 10 Unities + Antwort hilfreich

Hallo Joe,

eigentlich musst du keine Verweise aktivieren.
In dem Code kann ich keinen Fehler erkennen.
Mir scheint, dass irgendwas in der Unterbaugruppe nicht stimmt.

Füge doch mal über der Fehlerzeile folgendes ein:

Code:
Debug.Print (oOccurrence.Name)

Und blende dir den Direktbereich ein. Dann schau mal, bei welcher Baugruppe er da meckert und was das denn für eine ist.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 17. Jun. 2016 12:57    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 Sheriff 10 Unities + Antwort hilfreich

er hat Probleme mit einer Schweißkonstruktion. Ich denk das sind die Schweißnähte oder so. Genau hab ich das noch nicht untersucht, kommt aber noch.
Ich habe zum Testen die Unterbaugruppe entfernt, dann läuft es durch.

Das größere Problem ist aber das er die Farbe nicht zuweist 
Er rechnet und rechnet aber nichts passiert. Die Bedingung (Bauteilenummer) hab ich nochmal geprüft die sind richtig eingetragen...
Die Farbe ist richtig geschrieben, die passt auch.

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Jun. 2016 13:06    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 Sheriff 10 Unities + Antwort hilfreich

Versuchs mal, wenn du die Farbe direkt in den Code einträgst:
z.B.:
Code:
Set oRenderstyle = oAssDoc.RenderStyles.Item("Magenta")

Dann schaust mal, ob sich dann was ändert.
Wenn ja, dann müssen wir an der Zuweisung durch den Parameter noch was machen.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 17. Jun. 2016 13:22    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 Sheriff 10 Unities + Antwort hilfreich

ich hab es gerade mit 2 verschiedenen Farben probiert, mag er beides nicht.

Ich weiß nicht ob das eine Rolle spielt, Parameter sind MultiValue Parameter mit den zulässigen Farbmöglichkeiten.


Bisher habe ich es immer über Extras -> "Komponente suchen" gemacht, dann waren alle gefundenen Bauteile markiert und ich habe die Farbe dann von Hand zugewiesen.
Kann man die suche nicht ansteuern damit alle Komponenten markiert sind und dann die Farbe so zuweisen?

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Jun. 2016 14:13    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 Sheriff 10 Unities + Antwort hilfreich

Probieren kannst du eventuell noch mit:

Code:
Set oRenderstyle = oDoc.RenderStyles.Item(oAssDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Expression)

Hast du mal versucht eine Farbe in den Code von Hand einzutragen? Macht er es dann auch nicht?
Das Problem wäre ja, dass der Weg über die Suche ja dann den gleichen Weg mit der Zuweisung der Farben gehen würde.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 17. Jun. 2016 14:55    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 Sheriff 10 Unities + Antwort hilfreich

Ja ich habe die Farbe fest zugewiesen wie du oben gemeint hast (mit Farbe Magenta, schwarz, grün)
ging dennoch nicht.

Mit Expression am Ende bringt er gleich eine Fehlermeldung. Das funktioniert auch nicht.

Aber wenn es nicht möglich ist die Farbe so zuzuweisen lassen wir es.

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 20. Jun. 2016 07:36    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 Sheriff 10 Unities + Antwort hilfreich

Ich verstehe nur nicht, wieso er das nicht macht. Bei mir läuft es Problemlos durch.

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 20. Jun. 2016 13:59    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 Sheriff 10 Unities + Antwort hilfreich

Ich versuche gerade den Fehler zu finden. Mein Gedanke war zu erfahren ob er mir alle Bauteile findet, die unserem Kriterium entsprechen...
Ich hab eine Zeile eingefügt damit er mir die Dateinamen ausspuckt die unserer Abfrage entsprechen. Das funktioniert auch soweit und findet alle Teile.

Code:
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath, False)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
Debug.Print (oPartDoc.FullDocumentName)    <-----
bauteil = "Yes"
Else
oPartDoc.Close
bauteil = "No"
End If

End Function



Wenn ich die "Debug Print" Zeile über die Farbzuweisung reinschreibe um zu sehen welche Dateien er mir zuweisen sollte, findet er keine Dateien.
Wenn ich also jetzt nicht ganz auf der Leitung stehe, geht durch die If Abfrage (bei der Farbzuweisung) nichts durch. Oder?

Code:
Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As RenderStyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOccurrence As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "YES" Then
Debug.Print (oAssDoc.FullDocumentName)    <-----
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function



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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 20. Jun. 2016 15:06    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 Sheriff 10 Unities + Antwort hilfreich

Ok, versuchen wir es mal so:
ersetze mal bitte die function mit dem hier:

Code:
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath, False)

If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
bauteil = "Yes"
Exit Function
Else
oPartDoc.Close
bauteil = "No"
Exit Function
End If

End Function


------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 20. Jun. 2016 15:20    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 Sheriff 10 Unities + Antwort hilfreich

gesagt getan ohne Erfolg 

Code:
bauteil = "Yes"

Dumme Frage, müssen wir nicht die Variable Bauteil als String deklarieren?

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 20. Jun. 2016 15: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 Nur für Sheriff 10 Unities + Antwort hilfreich

OK, wir sind offensichtlich beide ein wenig blind 

In der Function ist der Rückgabewert "Yes" und "No" klein geschrieben.
Als Rückgabewert wird aber immer ein "YES" erwartet.

Also alle gleich schreiben, dann sollte es auch gehen...

------------------
MFG

Chris

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

Joe25
Mitglied



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

Beiträge: 20
Registriert: 02.06.2016

erstellt am: 21. Jun. 2016 07:48    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 Sheriff 10 Unities + Antwort hilfreich

Chris du bist echt ein VBA-Gott 
It works. Vielen vielen Dank schon mal, das erleichtert einem sehr die Arbeit.

Eine  letzte Frage hätte ich noch. Er hat ja Probleme mit den Schweißkonstruktionen, gibt es ein Befehl bei dem er das Bauteil/Baugruppe überspringt falls er ein Fehler hat?

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 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 21. Jun. 2016 09:31    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 Sheriff 10 Unities + Antwort hilfreich

Hey Joe,

schön, dass es jetzt läuft.
Für das überspringen von Fehler-Baugruppen könntest du so vorgehen:


Code:
Public Sub Farbeaendern()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
Dim oRenderstyle As Renderstyle
Set oRenderstyle = oAssDoc.RenderStyles.Item(oAssDoc.ComponentDefinition.Parameters.Item("Korpusfarbe").Value)
                                                 
Dim oOccurrence As ComponentOccurrence
Dim oPath As String

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences
On Error GoTo Fehler
If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call bauteil(oPath, oRenderstyle)
End If
Fehler:
Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close
End Sub

Private Function baugruppe(ByVal oPath As String, ByVal oRenderstyle As Renderstyle)

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.Documents.Open(oPath, False)

Dim oOcc As ComponentOccurrence

For Each oOccurrence In oAssDoc.ComponentDefinition.Occurrences

If oOccurrence.DefinitionDocumentType = kAssemblyDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
Call baugruppe(oPath, oRenderstyle)

ElseIf oOccurrence.DefinitionDocumentType = kPartDocumentObject Then
oPath = oOccurrence.ReferencedDocumentDescriptor.FullDocumentName
If bauteil(oPath) = "Yes" Then
oOccurrence.SetRenderStyle kOverrideRenderStyle, oRenderstyle
End If

Next
oAssDoc.Update2
oAssDoc.Save2
oAssDoc.Close

End Function
Private Function bauteil(ByVal oPath As String) As String
Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.Documents.Open(oPath)
Dim StrPartNumber As String
If oPartDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Expression = "11111" Then
oPartDoc.Close
bauteil = "Yes"
Else
oPartDoc.Close
bauteil = "No"
End If

End Function


------------------
MFG

Chris

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Dieses Thema ist 2 Seiten lang:   1  2 

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