For blot en måned siden spurgte vi jer, hvordan de skulle gøre klaskende farve på tværs af dele i SolidWorks. Medmindre du har et program til at anvende en tilfældig farve på en del, når du sætter den i en samling, har de alle den samme mærkeligt triste farve. Det er ikke den mangfoldige form for 3D-modelleringsverden, vi ønsker at leve i, er det nu? Vi har brug for farve.

Så du svarede med en masse gode muligheder og Guilherme C. Webster sendt i en, der ikke kun tilføjede farve til dele i en samling, men også tilføjede farve til multibodies i en del. Klippe. og. RULLE.

Rigtig sød Guilherme, og en kæmpe tak til alle der har bidraget til samtalen. Hvis du gik glip af det, er der noget fantastisk macro hackin' sjov i kommentarerne for randomiseret farve. Her er de resultater, du får med makroen og makroen til at downloade og lege med dig selv. Som du ser, fungerer det endda med virtuelle dele. Åh ja.

Samlingen med virtuelle dele før flerfarvet makro. (Klik for at forstørre)
Samlingen med virtuelle dele før flerfarvet makro. (Klik for at forstørre)
Samlingen med virtuelle dele efter flerfarvemakroen bruges. (Klik for at forstørre)
Samlingen med virtuelle dele efter flerfarvemakroen bruges. (Klik for at forstørre)
En del med multibodies før flerfarvemakroen. (Klik for at forstørre)
En del med multibodies før flerfarvemakroen. (Klik for at forstørre)
En del med multibodies efter flerfarvemakroen bruges. (Klik for at forstørre)
En del med multibodies efter flerfarvemakroen bruges. (Klik for at forstørre)

Her er koden, hvis du gerne vil cutte og indsætte.


Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swElement As Object
Dim vElementArr As Variant
Dim vElement As Variant
Dim vMatProp As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
vMatProp = swModel.MaterialPropertyValues
'Get all elements
If swModel.GetType = swDocPART Then
vElementArr = swModel.GetBodies2(swAllBodies, False)
For Each vElement In vElementArr
Set swElement = vElement
Randomize
vMatProp(0) = Rnd 'Red
vMatProp(1) = Rnd 'Green
vMatProp(2) = Rnd 'Blue
vMatProp(3) = Rnd / 2 + 0.5 'Ambient
vMatProp(4) = Rnd / 2 + 0.5 'Diffuse
vMatProp(5) = Rnd 'Specular
vMatProp(6) = Rnd * 0.9 + 0.1 'Shininess
swElement.MaterialPropertyValues2 = vMatProp
Next
ElseIf swModel.GetType = swDocASSEMBLY Then
vElementArr = swModel.GetComponents(False)
For Each vElement In vElementArr
Set swElement = vElement
Randomize
vMatProp(0) = Rnd 'Red
vMatProp(1) = Rnd 'Green
vMatProp(2) = Rnd 'Blue
vMatProp(3) = Rnd / 2 + 0.5 'Ambient
vMatProp(4) = Rnd / 2 + 0.5 'Diffuse
vMatProp(5) = Rnd 'Specular
vMatProp(6) = Rnd * 0.9 + 0.1 'Shininess
swElement.MaterialPropertyValues = vMatProp
Next
ElseIf swModel.GetType = swDocDRAWING Then
MsgBox ("You can only apply random colors to part bodies or assembly components.")
Exit Sub
End If
'Redraw to see new color
swModel.GraphicsRedraw2
End Sub

Her er makro download. Bare download, udpak og afspil makroen via din makroværktøjslinje i SolidWorks med en assembly eller del (med multibodies) åben...
grøn pilmulti-color.zip

Tak igen alle sammen! Hvis du har noget, du gerne vil tilføje til dette, så tryk på kommentarerne!

Forfatter

Josh er grundlægger og redaktør på SolidSmack.com, grundlægger af Aimsift Inc. og medstifter af EvD Media. Han er involveret i teknik, design, visualisering, teknologien der får det til at ske, og indholdet udviklet omkring det. Han er en SolidWorks -certificeret professionel og udmærker sig ved at falde akavet.