| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Brühl und CIDEON: Synergien schaffen Wettbewerbsvorteile (Vault, INVENTOR), ein Anwenderbericht |
Autor
|
Thema: Element-Darstellung über rgb-Wert ändern - iLogic (378 / mal gelesen)
|
SimonP Mitglied
Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 22. Feb. 2024 14:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, gibt es die Möglichkeit einem Bauteil eine Farbe über rgb-Werte zu zuweisen? So etwas wie: Code: Component.Color("Test") = "Rot" Nur mit direkter Eingabe von rgb-Werten.. Ich möchte gerne eine ilogic Regel haben, die den rgb Wert zuweist. z.B.Component.Color("Test") = "Rot" (r=200 ,g=200, b=200) ist sowas überhaupt möglich? Grüße Simon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2505 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 22. Feb. 2024 21:04 <-- editieren / zitieren --> Unities abgeben: Nur für SimonP
Moin Willkommen im Forum Geht, aber die Darstellung (Farben in den Sinne gibt es schon länger nicht mehr) muss in der Baugruppe vorhanden sein. Ansonsten musst du sie neu erstellen und dann zuweisen. Die zugewiesene Darstellung gilt für das Exemplar in der Baugruppe. Im Bauteil ändert sich die Darstellung nicht. Keine Ahnung wie du das implementiert hast oder willst, aber hier mal eine kleine Demo. Den Part Eingabeprüfung und Validierung sollte man weiter ausbauen. Code:
If Not ThisDoc.Document.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then MsgBox("Funktion nur in Baugruppen verfügbar.", MsgBoxStyle.Critical, "iLogic RGB") Exit Sub End IfDim oAssDoc As AssemblyDocument = ThisDoc.Document Dim oAssets As Assets = oAssDoc.Assets Dim oAppearance As Asset Dim sRGB As String = InputBox("RGB-Werte", "iLogicRGB", "RGB-Werte mit Bindestrich getrennt") If sRGB = String.Empty Then Exit Sub ' User canceled Input Dim aRGB As String() = sRGB.Split("-") Dim iR As Integer = CInt(aRGB(0)) Dim iG As Integer = CInt(aRGB(1)) Dim iB As Integer = CInt(aRGB(2)) If Not 0 <= iR <= 255 Then Logger.Debug("iR out of range") Exit Sub End If If Not 0 <= iG <= 255 Then Logger.Debug("iG out of range") Exit Sub End If If Not 0 <= iB <= 255 Then Logger.Debug("iB out of range") Exit Sub End If Try oAppearance = oAssets.Item(sRGB) Catch oAppearance = oAssets.Add(kAssetTypeAppearance, "Generic", sRGB, sRGB) Dim oTransObjs As TransientObjects = ThisApplication.TransientObjects Dim oColor As ColorAssetValue = oAppearance.Item("generic_diffuse") oColor.Value = oTransObjs.CreateColor(iR, iG, iB) End Try
Dim oCompOcc As ComponentOccurrence = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kAssemblyOccurrenceFilter, "Komponente auswählen") Component.Color(oCompOcc.Name )=oAppearance.DisplayName
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonP Mitglied
Beiträge: 6 Registriert: 22.02.2024
|
erstellt am: 23. Feb. 2024 08:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf Vielen Dank für diesen Code, ist fast das was ich brauche super Nur bräuchte ich keine Box zur RGB-Eingabe, sondern sollte er einen Textparameter verwenden, wo ich diese RGB-Werte hineinschreibe und nicht zur Auswahl welche Bauteile ich möchte, sondern ich würde das über eine Regel machen, welche Bauteile aktiviert sind und diese soll er dann mit dieser RGB-Darstellung übernehmen. Kannst du mir da noch behilflich sein? Danke! MFG Simon
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2505 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 23. Feb. 2024 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für SimonP
Moin Code:
If Not ThisDoc.Document.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then MsgBox("Funktion nur in Baugruppen verfügbar.", MsgBoxStyle.Critical, "iLogic RGB") Exit Sub End IfDim oAssDoc As AssemblyDocument = ThisDoc.Document Dim oAssets As Assets = oAssDoc.Assets Dim oAppearance As Asset Dim sRGB As String = Param_RGB If sRGB = String.Empty Then Exit Sub Dim aRGB As String() = sRGB.Split("-") Dim iR As Integer = CInt(aRGB(0)) Dim iG As Integer = CInt(aRGB(1)) Dim iB As Integer = CInt(aRGB(2)) If Not 0 <= iR <= 255 Then Logger.Debug("iR out of range") Exit Sub End If If Not 0 <= iG <= 255 Then Logger.Debug("iG out of range") Exit Sub End If If Not 0 <= iB <= 255 Then Logger.Debug("iB out of range") Exit Sub End If Try oAppearance = oAssets.Item(sRGB) Catch oAppearance = oAssets.Add(kAssetTypeAppearance, "Generic", sRGB, sRGB) Dim oTransObjs As TransientObjects = ThisApplication.TransientObjects Dim oColor As ColorAssetValue = oAppearance.Item("generic_diffuse") oColor.Value = oTransObjs.CreateColor(iR, iG, iB) End Try
Dim oCompOcc As ComponentOccurrence For Each oCompOcc In oAssDoc.ComponentDefinition.Occurrences If oCompOcc.Suppressed = False Then Component.Color(oCompOcc.Name) = oAppearance.DisplayName End If Next
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|