Autor
|
Thema: Farbe von Flächen ändern (3183 mal gelesen)
|
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 07. Okt. 2014 14:40 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen habe mir aus einigen Programmen von hier ein Programm gebastelt wo man die Farbe von Flächen ändern kann. Das auswählen der alte Farbe und das Auswählen der neuen Farbe Funktioniert. Leider ändert er mir die Farbe nicht. Könnt Ihr mir helfen? Gruß Ralf
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Okt. 2014 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Servus Probier mal nach dem "oSelection.Search ("Topology.CGMFace,sel")" direkt die Farbe über die Visproperties zu ändern. IMHO brauchst du den extra Array nicht. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 07. Okt. 2014 15:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd Danke für die schnelle Antwort. Leider weiß ich nicht was Du meinst. Ich habe nicht so viel Ahnung vom Programmieren. Kannst Du mir konkret sagen was Du meinst? Gruß Ralf ------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Okt. 2014 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Servus (ungetestet) Zeilen: Code: oSelection.Search ("Topology.CGMFace,sel") Dim aSurf() ReDim aSurf(oSelection.Count) For i = 1 To oSelection.Count Set aSurf(i) = oSelection.Item(i) Next oSelection.Clear Dim R As Long, _ G As Long, _ B As Long, _ iCount As Integer iCount = 0 For i = 1 To UBound(aSurf) oSelection.Clear oSelection.Add (aSurf(i).Reference) oVisPropertySet.GetRealColor R, G, B If R = CLng(aRGB_Old(0)) And G = CLng(aRGB_Old(1)) And B = CLng(aRGB_Old(2)) Then oVisPropertySet.SetRealColor CLng(aRGB_New(0)), CLng(aRGB_New(1)), CLng(aRGB_New(0)), 0 oVisPropertySet.SetRealOpacity 255, 0 iCount = iCount + 1 End If Next
ersetzen durch: Code: oSelection.Search ("Topology.CGMFace,sel") oVisPropertySet.GetRealColor R, G, B If R = CLng(aRGB_Old(0)) And G = CLng(aRGB_Old(1)) And B = CLng(aRGB_Old(2)) Then oVisPropertySet.SetRealColor CLng(aRGB_New(0)), CLng(aRGB_New(1)), CLng(aRGB_New(0)), 0 oVisPropertySet.SetRealOpacity 255, 0 End If
oder mal Testweise die Zeile: Code: oSelection.Add (aSurf(i).Reference)
ändern. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 07. Okt. 2014 15:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, hat leider beides nicht funktioniert. Noch einer eine Idee? Das einzelne Script von tomtom1972 (http://ww3.cad.de/foren/ubb/Forum137/HTML/002024.shtml#000007) was ich dafür zweckentfremdet habe Funktioniert. Gruß Ralf ------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Okt. 2014 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Servus Wird die entsprechende Zeile zu umfärben aufgerufen (If-Bedigung). Bitte mal mit Haltemarken/Schrittweises ablaufen lassen prüfen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 07. Okt. 2014 17:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd Schrittweise ablaufen Funktioniert nicht. Warum weiß ich nicht. Das ganze hängt wohl an der Abfrage der Farbe. Wenn ich die Farbe einzeln übergebe Funktionierst (siehe Anhang). Gruß Ralf Ralf ------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Okt. 2014 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Servus Die Suche "oSelection.Search ("Topology.CGMFace,sel")" selektiert nichts. Was willst du suchen? Wo willst du überall suchen (nur in der Selektion)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 07. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 07. Okt. 2014 18:16 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Wenn oSelection.Search ("Topology.CGMFace,sel") nichts weiss was für Flächen es zum umfärben hat, ist der Zähler immer bei 0 Snipp, der Code sollte funktionieren -Farbenelement der zu ändernden Fläche Picken, -neue Farbe per Dialog auswählen, -die Surface im Baum auswählen Code: Private Sub CommandButton3_Click() sRGB_Old = TextBox1.Value sRGB_New = TextBox2.Value ' Unload FLAECHENFARBE Set oDoc = CATIA.ActiveDocument Set oProd = oDoc.Product ' What do you want to select Dim EnableSelectionFor(0) EnableSelectionFor(0) = "AnyObject" ' Reset the Selection Set oSelection = oDoc.Selection oSelection.Clear Me.Hide UserSelection = oSelection.SelectElement2(EnableSelectionFor, "Fläche auswählen die fablich geändert werden sollen", False) Me.Hide Set oSelection = oDoc.Selection Set oVisPropertySet = oSelection.VisProperties
[Diese Nachricht wurde von Thomas Harmening am 07. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 08. Okt. 2014 13:17 <-- editieren / zitieren --> Unities abgeben:
|
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 26. Okt. 2015 14:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, leider funktioniert das Programm nicht unter R24. Es stopt schon bei dieser Zeile Private Declare Function ChooseColor_Dlg Lib "comdlg32.dll" Alias "ChooseColorA" Was ist Falsch? ------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 26. Okt. 2015 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
|
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 26. Okt. 2015 14:55 <-- editieren / zitieren --> Unities abgeben:
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 26. Okt. 2015 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
|
| Projektmanager Anlagenbau (m/w/d) | Sie möchten Teil eines Unternehmens mit starkem Purpose sein? Aurubis ist ein führender internationaler Multimetallproduzent und einer der größten Kupferrecycler der Welt. Unsere Metalle sind die Grundlage für Energiewende, Digitalisierung und Technologien der Zukunft. Rock-solid & rolling. Hands-on & high-tech. Skilled & seriously sustainable. Das ist es, was unsere 7.200 Mitarbeiter jeden Tag zu Höchstleistungen antreibt.... | Anzeige ansehen | Teamleitung, Gruppenleitung |
|
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 26. Okt. 2015 15:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Joe Es läuft wieder. Danke für die Hilfe. Hier der geänderte Code. Private Declare PtrSafe Function ChooseColor_Dlg Lib "comdlg32.dll" Alias "ChooseColorA" _ (lpcc As CHOOSECOLOR_TYPE) As Long Private Type CHOOSECOLOR_TYPE lStructSize As Long hwndOwner As LongPtr hInstance As LongPtr rgbResult As Long lpCustColors As LongPtr flags As Long lCustData As LongPtr lpfnHook As LongPtr lpTemplateName As String End Type Guß Ralf ------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |