| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Hannover |
Autor
|
Thema: Farbe ändern per Marko (394 mal gelesen)
|
katterfe Mitglied
Beiträge: 12 Registriert: 31.10.2001
|
erstellt am: 07. Nov. 2007 22:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich weiß es gibt bereits mehrere Einträge zum obigen Thema und die grundlegende Technik zum Farbe ändern per Makro kenne ich. Ich habe ein Problem mit der Selektion des Features dessen Farbe ich verändern möchte. Ich erzeuge in einem PART mehrere Kugeln durch verschieben/kopieren und skalieren eines vorher erstellten Rotationsfeatures. Nun will ich jeder einzelnen so erstellten Kugel eine spezifische Farbe zuweisen. Der Code für die Selektion und Skalierung (der letzte Schritt vor der Farbänderung) lautet: Part.ClearSelection2 True boolstatus = Part.Extension.SelectByID2("", "SOLIDBODY", X, Y, Z,_ False, 1, Nothing, 0) Set Feature = Part.FeatureManager.InsertScale(0, True, rad, rad, rad) Ich dachte jetzt wäre schon etwas selektiert und ich hatte mit SelectedFaceProperties oder Part.MaterialPropertyValues (danke Stephans MakroMania!) versucht, die Farbe der Kugel zu ändern. Aber ich kriege entweder nen Fehler oder alle Kugeln kriegen die gleiche Farbe. Kann mir jemand helfen? Danke und Grüße! Andre Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 08. Nov. 2007 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für katterfe
|
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 08. Nov. 2007 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für katterfe
Wenn es nur an der fehlenden Selektion lieht, kannst du deine Features direkt über das Feature Objekt mit Select2 selektieren. Das Feature Objekt bekommst du bei der Erzeugung deines Features im FeatureManager zurück, oder du belegst es mit Code: retval = PartDoc.FeatureByName ( Name)
. Dann sollte die Selektion immer klappen.------------------ Mfg Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
katterfe Mitglied
Beiträge: 12 Registriert: 31.10.2001
|
erstellt am: 08. Nov. 2007 10:03 <-- editieren / zitieren --> Unities abgeben:
Danke für Eure Antworten. Ich weiß nicht wie ich den Body als solchen selektiere. Ich erzeuge hintereinander eine ganze Reihe (>1000) von diesen Kugeln bzw. Features bzw. Bodys. Eine Selektion über die Namen ist denke ich deshalb schwierig. Ich habe es bislang so gemacht: boolstatus = Part.Extension.SelectByID2("", "SOLIDBODY", X, Y, Z, False, 1, Nothing, 0) Set obj = Part.SelectionManager.GetSelectedObject5(1) vMatProp(0) = col1 vMatProp(1) = col2 vMatProp(2) = col3 vMatProp(3) = 0# vMatProp(4) = 1# vMatProp(5) = 1# vMatProp(6) = 1# vMatProp(7) = 0.31 vMatProp(8) = 0# obj.MaterialPropertyValues2 = (vMatProp) Ich bin mir nicht sicher, ob das nun ein Body-Objekt ist oder nicht?! Die Kugeln sehen jetzt auch verschieden aus. Allerdings nur in Graustufen und nicht in den Farben. Wenn ich sie einzeln auswähle und mir die Farbeigenschaften ansehe, dann kommt da immer das Standardgrau. Bin für jeden Rat dankbar! Andre Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
katterfe Mitglied
Beiträge: 12 Registriert: 31.10.2001
|
erstellt am: 08. Nov. 2007 10:17 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt nochmal genauer die Farben untersucht. Es gibt ja Feature-, Flächen- und Körperfarben. Also die Körperfarben sind verändert. Es muss also die Body-Eigenschaft sein, die ich anspreche. Allerdings scheint der Array vMatProp die Eigenschaften nicht in der gewünschten Reihenfolge zu übergeben. Komischer Weise ändere ich nur die Eigenschaften Umgebung, Diffusion und Spiegeleffekt. Alle anderen Eigenschaften sind 0 (daher auch die Graustufen). Gelten für den Body andere Parameter für vMatProp? Danke & Grüße! Andre Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 08. Nov. 2007 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für katterfe
Zitat: Original erstellt von katterfe: ... Alle anderen Eigenschaften sind 0 (daher auch die Graustufen).
ich hoffe doch, daß du deinen Variablen col1 ... col3 auch die entsprechenden Werte zugewiesen hast ... Hast du mal "debuggt", ob die Werte beim Aufruf der Methode auch gesetzt sind? 3x 0 müßte allerdings schwarz sein ... ------------------ mfg uc [Diese Nachricht wurde von u.clemens am 08. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
katterfe Mitglied
Beiträge: 12 Registriert: 31.10.2001
|
erstellt am: 08. Nov. 2007 11:45 <-- editieren / zitieren --> Unities abgeben:
Habt vielen Dank Ihr alle! Hab das Problem gelöst. Es lag am Safearray. Code sieht nun so aus: Dim MatProp(9) as Double Dim vMatProp as Variant boolstatus = Part.Extension.SelectByID2("", "SOLIDBODY", X, Y, Z, False, 1, Nothing, 0) Set obj = Part.SelectionManager.GetSelectedObject5(1) MatProp(0) = col1 MatProp(1) = col2 MatProp(2) = col3 MatProp(3) = 0 MatProp(4) = 1 MatProp(5) = 1 MatProp(6) = 1 MatProp(7) = 0.31 MatProp(8) = 0 vMatProp = MatProp obj.MaterialPropertyValues2 = (vMatProp) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |