Un mese fà avemu dumandatu à tutti cumu circà culore di schiaffu attraversu e parte in SolidWorks. A menu chì ùn abbiate un prugramma per applicà un culore casuale à una parte quandu u mettite in un assemblea, anu tutti u listessu culore curiosamente scuru. Ùn hè micca u tippu diversu di mudellu di mudellazione 3D chì vulemu campà, avà hè? Avemu bisognu di culore.

Cusì, avete rispostu cun assai grandi opzioni è Guilherme C. Webster mandatu in unu chì ùn solu aghjunghjenu culore à e parte in un assemblea, ma ancu aghjunghjenu culore à multicorpi in una parte. Scogliu. è. ROLL.

Guilherme assai bellu, è un ringraziu tamantu à tutti quelli chì anu cuntribuitu à a cunversazione. Sì avete mancatu ci hè qualchì grande macro hackin 'divertente in i cumenti per u culore aleatoriu. Eccu i risultati chì uttene cù a macro e a macro per scaricà è ghjucà cun voi stessu. Cum'è a vedi travaglia ancu cù e parte virtuale. Aw iè.

L'assemblea cù parte virtuale prima di a macro multi-culore. (Cliccate per ingrandà)
L'assemblea cù parte virtuale prima di a macro multi-culore. (Cliccate per ingrandà)
L'assemblea cù e parte virtuale dopu a macro multi-culore hè aduprata. (Cliccate per ingrandà)
L'assemblea cù e parte virtuale dopu a macro multi-culore hè aduprata. (Cliccate per ingrandà)
Una parte cù multicorpi prima di a macro multicolore. (Cliccate per ingrandà)
Una parte cù multicorpi prima di a macro multicolore. (Cliccate per ingrandà)
Una parte cù multicorpi dopu a macro multi-culore hè aduprata. (Cliccate per ingrandà)
Una parte cù multicorpi dopu a macro multi-culore hè aduprata. (Cliccate per ingrandà)

Eccu u codice se vulete piace & incollà.


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

Eccu u macro download. Basta à scaricà, estrà, è attraversu a vostra macro toolbar in SolidWorks, ghjucà a macro cun un assemblea o una parte (cù multicorpi) aperta ...
freccia verdemulti-culore.zip

Grazie dinò à tutti! Se avete qualcosa chì vulete aghjunghje à questu, fate i cumenti!

Author

Josh hè fundatore è editore in SolidSmack.com, fundatore in Aimsift Inc., è cofundatore di EvD Media. Hè impegnatu in ingegneria, cuncepimentu, visualizazione, a tecnulugia chì la face accade, è u cuntenutu sviluppatu intornu. Hè un Prufessiunale Certificatu SolidWorks è eccelle à cascà goffu.