SW2020 Makro / Probleme im VBA-Code

Hallo

Ich kann dieses unter VBA codierte Makro trotz all meiner Bemühungen nicht zum Laufen bringen.

Mein Ziel ist es, das Erscheinungsbild des Teils basierend auf der Oberflächenbehandlung zu ändern, die ich in der benutzerdefinierten Eigenschaft "TREATMENT" eingegeben habe. Ich möchte ein neues Setup mit dem Namen "REALISTISCHE FARBEN" erstellen und ich möchte, dass sich das Aussehen nur in diesem Setup geändert hat.

Ich kann mein Makro auch nicht in der Beschreibung veröffentlichen... Ich überschreite die 6000 Zeichen, die a priori erlaubt sind... Ich habe es auf den PC gestellt, wenn jemand sieht, was mit meinem Code nicht stimmt, wäre das eine große Hilfe für mich!!

 

Vielen Dank!!

 


attribuer_traitement_de_surface_a_couleur.swp

Hallo

Die Verknüpfung zur Datei ist defekt

Hallo 

In der Tat, es ist sehr seltsam... Ich versuche es hier noch einmal!


attribuer_traitement_de_surface_a_couleur.swp

Ich glaube nicht, dass Sie den Anzeigezustand mit SelectedFeatureProperties ändern können, da der Anzeigezustand kein Feature ist.

Um den Anzeigestatus der Teile in einer Baugruppe zu ändern, schauen Sie hier: change_color_of_component_in_specific_display_state_example_vb

Um die Farbe der Räume selbst zu ändern, sehen Sie sich Folgendes an: MaterialPropertyValues

Okay, damit probiere ich dann mal was aus! 

Eine weitere kleine Frage, es fällt mir schwer zu verstehen, warum sie in ihrem Tutorial, SW, die Min/Max-Excel-Funktion mit 16 * 16 und dann mit 16 * 16 * 16 * 16 multiplizieren?

16x16 = 256, was dem Farbintervall [0; 255], aber warum diese Multiplikation, wenn der Wert meiner Variablen bereits in diesem Format vorliegt? Und noch unverständlicher, warum machen 16x16x16x16 hinterher?? Ich verstehe nicht... (Ich habe das fragliche Code-Snippet unten gestellt)

 PeintureBleueRGB = Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueR, 255), 0) + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueG, 255), 0) * 16 * 16 + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueB, 255), 0) * 16 * 16 * 16 * 16

 

So werden RGB-Farben in der Color-Eigenschaft verkettet

Hallo nochmal Jerome, 

Ich habe mit Ihren Links gespielt, aber ich stoße immer noch auf einen Fehler, der von Zeile 189 meines Codes zu kommen scheint ... Ich habe einen Teil Ihres Codes wiederverwendet, sodass sich das Erscheinungsbild in allen Teilen des Sets und der Teilmengen ändert. 

Es ist diese Codezeile, die Probleme verursacht, aber ich kann den Grund nicht finden: 

swApp.ActivateDoc3 swComp.Name2, False, swRebuildOnActivation_e.swRebuildActiveDoc, Empty

 

Ich setze mein Makro in PJ, wenn Sie einen Blick darauf werfen könnten, um mich noch einmal zu leiten, wäre ich Ihnen dankbar!!

Vielen Dank


attribuer_traitement_de_surface_a_couleur.swp

Für ActivateDoc3 ist der Teilename (<ModelDoc2> erforderlich. GetTitle oder <ModelDoc2>. GetPathName) anstelle des  Komponentennamens (swComp.Name2)