iLogic / Farbe ändern / Flächenmodell / Nur bestimmte Flächen

iLogic / Farbe ändern / Flächenmodell / Nur bestimmte Flächen

M_Mertens_Intec
Advocate Advocate
1.009Aufrufe
9Antworten
Nachricht 1 von 10

iLogic / Farbe ändern / Flächenmodell / Nur bestimmte Flächen

M_Mertens_Intec
Advocate
Advocate

Guten Morgen liebe Gemeinde, 🙂 

 

ich bräuchte einmal Hilfe von jemanden der sich richtig mit Ilogic auskennt. Sollte jemand eine alternative Methode kennen bin ich für jeden Ansatz dankbar. 😋

 !Bitte Ergänzung unten beachten!

Beispielcode

 

Sub Main()

' Pfad für Protokoll
Dim logFile As String
logFile = "D:\Z_Skripte\DateiExport\SurfaceFaces_Color_Protokoll.txt"

' Aktives Bauteil
Dim oPartDoc As PartDocument
oPartDoc = ThisApplication.ActiveDocument

Dim oPartDef As PartComponentDefinition
oPartDef = oPartDoc.ComponentDefinition

' Gewünschte Appearance
Dim appearanceName As String
appearanceName = "Rot" ' <-- hier anpassen

' Appearance als Asset holen
Dim oAsset As Asset
oAsset = oPartDoc.Assets.Item(appearanceName)

' Protokoll vorbereiten
Dim logText As String
logText = "Protokoll der gefärbten Flächen: " & vbCrLf & vbCrLf

Dim oBody As SurfaceBody
Dim oFace As Face
Dim faceCount As Integer
faceCount = 0

' Surface Bodies durchlaufen
For Each oBody In oPartDef.SurfaceBodies

logText = logText & "Surface Body: " & oBody.Name & vbCrLf

For Each oFace In oBody.Faces
oFace.Appearance = oAsset
faceCount = faceCount + 1

logText = logText & " Face: " & oFace.InternalName & " gefärbt." & vbCrLf
Next

logText = logText & vbCrLf
Next

logText = logText & "Gesamtzahl gefärbter Flächen: " & faceCount & vbCrLf

' Protokoll speichern
System.IO.File.WriteAllText(logFile, logText)

MessageBox.Show("Färben abgeschlossen: " & faceCount & " Flächen." & vbCrLf & _
"Protokoll: " & logFile)

End Sub

 

---------------------------------------------------------------------------------------------------

 

Sub Main()
' Pfad für Protokoll
Dim logFile As String
logFile = "D:\Z_Skripte\DateiExport\SurfaceFaces_Color_Protokoll.txt"

' Aktives Bauteil
Dim oPartDoc As PartDocument
oPartDoc = ThisApplication.ActiveDocument
Dim oPartDef As PartComponentDefinition
oPartDef = oPartDoc.ComponentDefinition

' Appearance wählen
Dim appearanceName As String
appearanceName = "Rot" ' <-- hier den gewünschten Namen ändern
Dim oAppearance As Appearance
oAppearance = oPartDoc.Appearances.Item(appearanceName)

' Protokoll vorbereiten
Dim logText As String
logText = "Protokoll der gefärbten Flächen: " & vbCrLf & vbCrLf

' Surface Bodies durchlaufen
Dim oBody As SurfaceBody
Dim oFace As Face
Dim faceCount As Integer
faceCount = 0

For Each oBody In oPartDef.SurfaceBodies
logText = logText & "Surface Body: " & oBody.Name & vbCrLf
For Each oFace In oBody.Faces
oFace.Appearance = oAppearance
faceCount = faceCount + 1
logText = logText & " Face: " & oFace.Name & " gefärbt." & vbCrLf
Next
logText = logText & vbCrLf
Next

logText = logText & "Gesamtzahl gefärbter Flächen: " & faceCount & vbCrLf

' Protokoll speichern
System.IO.File.WriteAllText(logFile, logText)

MessageBox.Show("Färben abgeschlossen. Gesamt: " & faceCount & " Flächen." & vbCrLf & _
"Protokoll gespeichert unter: " & logFile)
End Sub

 


Würde mich freuen wenn jemand einen Ansatz hat. 
Grüße und schönen Tag....

Marcus Mertens
Anlagenplanung and Design
INTEC Engineering GmbH
76646 Bruchsal
0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
1.010Aufrufe
9Antworten
Antworten (9)
Nachricht 2 von 10

cwe89
Advocate
Advocate

Hallo,

was genau funktioniert denn nicht? Deine Infos sind alles andere als Aussagekräftig. Du hast zwei fast identische Codes gepostet. Gehen beide nicht? 

Ich würde Vorschlagen das du mal detailiert beschreibst was das Prooblem ist und was dann genau eingefärbt werden soll und wie. Dein Modell ist ja eine Mischugn aus Flächen und Volumenkörpern. Wenn ich es in IV2026 öffne.

0 „Gefällt mir“-Angaben
Nachricht 3 von 10

M_Mertens_Intec
Advocate
Advocate

HUUPS!! 😥  Du hast recht Sorry! Ich habe nach dem senden gar nicht mehr bis oben gescrollt. Blöderweise beim code einfügen ist wohl das Bild und der Rest des Textes verloren gegangen ! Deswegen endet der Satz auch so komisch.

 

Also nochmal. Ich möchte gerne Flächen innerhalb des Body Feature "Srf4" ändern. Da geht es nur um die Orangenen Flächen. Der Rest sollte so bleiben.

Meine bisherigen Versuche mit iLogic haben keinen Erfolg gebracht. Ein Beispiel siehe vorher.

 

wie gesagt. Ich wäre für jeden Ansatz dankbar und Sorry nochmal für den Quatsch oben.

Gruß...

Marcus Mertens
Anlagenplanung and Design
INTEC Engineering GmbH
76646 Bruchsal
0 „Gefällt mir“-Angaben
Nachricht 4 von 10

cwe89
Advocate
Advocate

Also,  dieser Code Färbt dir normalerweise das Ausgewählte Element in der Farbe. Vorausgesetzt die Farben gibt es im Katalog.

Sub Main()
    Feature.Color("Srf4") = "Türkis"
End Sub

Der Inventor macht dies auch bei Srf4, zu sehen im Bild. Aber es wird Farblich nicht dargestellt. Aber z.B. mit Srf14 , Solid 8 oder Solid 9 geht es korrekt sind aber Volumenkörper. Ich habe auch mal Srf22 getestet. Hier ist das gleich Verhalten. Ich Vermute es liegt an den Flächen. Es sind ja keine Volumenköper. Da bin ich aber überfragt was Flächen an geht mit diesen habe ich so nix zu tun.

 

Gruß Christoph

 

 

 

0 „Gefällt mir“-Angaben
Nachricht 5 von 10

M_Mertens_Intec
Advocate
Advocate

Hey! Danke für dein Feedback. Aber bei dem Fall färbt das Skript ja nicht nur die Orangenen Flächen. Oder??

Das blöde ist halt das innerhalb den Feature SRF4 auch die Schwarzen Flächen usw. enthalten sind und diese sollen ja so bleiben. 🙈

 

Eigentlich müsste ich auf die Flächeneigenschaften zugreifen, so wie ich es verstehe. Weil wenn ich die Farbe im Feature selbst händisch ändere passiert erst mal nix.

 

 

Marcus Mertens
Anlagenplanung and Design
INTEC Engineering GmbH
76646 Bruchsal
0 „Gefällt mir“-Angaben
Nachricht 6 von 10

cwe89
Advocate
Advocate

Das Problem ist ja erstmal das nicht gefärbt wird.

Nachricht 7 von 10

cidhelp
Collaborator
Collaborator
Akzeptierte Lösung

Hallo @M_Mertens_Intec,

 

ich verstehe dich so: du willst mit iLogic von dem Feature Srf4 alle Flächen die aktuell die Darstellung 255,79,0 (orange) haben auf Rot ändern?

Dann muss die Regel:

das Feature suchen

die Darstellung Rot aus der Inventor-Materialbibliothek in das Dokument kopieren

in einer Schleife durch alle Flächen des Features, die Darstellung der Fläche prüfen und ggf. ändern

 

Im Bild habe ich das mal in Inventor 2026 gemacht.

Nachricht 8 von 10

M_Mertens_Intec
Advocate
Advocate

Hey! 🙂

Mehr als Daumen hoch und "Solution accepted" fällt mir dazu nicht ein. 

 

Ich würde mich natürlich freuen wenn du mir deine Lösung zugänglich machst. 😇

 

Dürfte ja zu 2025 keinen Unterschied machen, denke ich. 

Gruß...

Marcus Mertens
Anlagenplanung and Design
INTEC Engineering GmbH
76646 Bruchsal
0 „Gefällt mir“-Angaben
Nachricht 9 von 10

cidhelp
Collaborator
Collaborator

ja, hier die Regel

Nachricht 10 von 10

M_Mertens_Intec
Advocate
Advocate

Prima! Vielen Vielen Dank für die schnelle Hilfe! 😊

 

Werde ich morgen früh als erstes Testen.

Marcus Mertens
Anlagenplanung and Design
INTEC Engineering GmbH
76646 Bruchsal
0 „Gefällt mir“-Angaben