| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Farbpalette zu 100% laden (1015 / mal gelesen)
|
Arkadius Mitglied CAD Consultant
Beiträge: 45 Registriert: 21.09.2006 Windows 7 NX 10.0.3.5
|
erstellt am: 06. Feb. 2018 08:50 <-- editieren / zitieren --> Unities abgeben:
Hallo NX-Gemeinde. Ich versuche gerade in vielen alten Teilen die Farbpalette zu ersetzen. Dafür benutze ich folgenden Code:
Code: Sub Farbpalette() Dim rootDir As String = Environment.GetEnvironmentVariable("UGII_ROOT_DIR") Dim colorPalette As String = rootDir & "\ugcolor.cdf" Dim colorName As String = "" Dim red As String = "" Dim green As String = "" Dim blue As String = "" Dim rgbColor(2) As Double Dim thisColor As Integer = 0 Dim textLine As String = "" Dim lineCounter As Integer = 0 Dim myStream As Stream = Nothing ' Create a NumberFormatInfo object and set several of its ' properties that apply to numbers. ' The settings below are used eg. in European Countries Dim provider As NumberFormatInfo = New NumberFormatInfo() provider.NumberDecimalSeparator = "." provider.NumberGroupSeparator = "," provider.NumberGroupSizes = New Integer() {3} provider.NumberDecimalDigits = 7 Try FileOpen(1, colorPalette, OpenMode.Input) Do Until EOF(1) textLine = LineInput(1) If lineCounter > 3 Then colorName = textLine.Substring(0, 30) red = textLine.Substring(34, 9) green = textLine.Substring(45, 9) blue = textLine.Substring(56, 9) rgbColor(0) = Convert.ToDouble(red, provider) rgbColor(1) = Convert.ToDouble(green, provider) rgbColor(2) = Convert.ToDouble(blue, provider) thisColor = lineCounter - 4 theUFsession.Disp.SetColor(thisColor, UFConstants.UF_DISP_rgb_model, colorName, rgbColor) End If lineCounter += 1 Loop FileClose(1) theUFsession.Disp.LoadColorTable() End Sub
Das funktioniert augenscheinlich sehr gut. Vergleicht man aber nun die Ergebnisse fällt z.B. folgendes auf: Original ugcolor.cdf Pale Lemon 1.0000000 0.9803769 0.7490043 Medium Lemon 1.0000000 0.9607691 0.6549020 Strong Lemon 1.0000000 0.9490043 0.5137102 Nach dem Journal: Pale Lemon 1.0000000 0.9803922 0.7490196 Medium Lemon 1.0000000 0.9607843 0.6549020 Strong Lemon 1.0000000 0.9490196 0.5137255 Ich komm einfach nicht drauf, warum dieser Unterschied entsteht... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 08. Feb. 2018 17:06 <-- editieren / zitieren --> Unities abgeben: Nur für Arkadius
Hallo Arkadius, meine erste Frage wäre nicht warum, sondern wo der Unterschied entsteht. Also entweder per Debugger oder mit Kontrollausgaben feststellen, in welcher Zeile der ursprüngliche Wert geändert wird. Sobald das klar ist, kommt die Frage nach dem Warum. Ich würde auf die fixen Indices tippen. Zur Vermeidung kann z.B. [String].Split() verwendet werden. Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arkadius Mitglied CAD Consultant
Beiträge: 45 Registriert: 21.09.2006 Windows 7 NX 10.0.3.5
|
erstellt am: 09. Feb. 2018 07:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael. Das hatte ich versucht. Die Variablenzuweisung bis rgbColor(2) = Convert.ToDouble(blue, provider) funktioniert und hat noch den korrekten Wert. Es muss also bei theUFsession.Disp.SetColor oder theUFsession.Disp.LoadColorTable passieren. Hier wüsste ich nicht wie es prüfen soll. Ebenso kurios finde ich, dass nicht alle Werte abweichend sind und die die abweichen immer um 152 bzw. 153 abweichen. Gruß Arkadius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projektingenieur (m/w/d) technische Gebäudeausrüstung | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und sorgen für sichere und nachhaltige Technologielösungen.... | Anzeige ansehen | Projektmanagement |
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 09. Feb. 2018 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für Arkadius
Hallo Arkadius, ich glaub' zwar nach wie vor an die Indices, da braucht nur mal ein Blank verrutsch sein. Aber es könnte auch an SetColor liegen. Evtl. arbeitet die Methode mit Single Precision und muss einfach die restlichen Nachkommastellen erfinden. Hast Du mal in die Doku geschaut, oder nach einem AskColor Ausschau gehalten ? Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit selt'ner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|