Перетвори свою збірку в SolidWorks’і на веселку. Готовий макрос для розфарбовування


Джерело
Кілька місяців тому ми просили допомогти в карколомному розфарбовуванні деталей у SolidWorks. На жаль, доки не з’явиться програма, що дає змогу застосувати випадковий колір до деталі, яку Ви вставляєте в збірку, вони всі матимуть, напрочуд, одноманітний тьмяний колір. Що ж це за диверсія з боку світу тривимірного моделювання, в якому ми хочемо жити. Чом так? Ми хочемо Колірів!

clip_image002

Ми отримали багато чудових варіантів. Однак найкращий варіант належить Guilherme C. Webster, він надіслав варіант, у якому можна додавати кольори не тільки до компонентів збірки, а й до тіл у багатотільній деталі. Rock’n’ROLL.

Чудово Guilherme, і величезне спасибі всім, хто взяв участь в обговоренні. Якщо Ви з якоїсь причини пропустили все дійство, що розгорнулося в коментарях до першого допису, і є прикладом чудової майстерності в складанні макросів (macro hackin’ fun), не впадайте у відчай. Нижче Ви можете подивитися приклад роботи макроса і власне сам макрос, який Ви можете завантажити і програти (запустити) самостійно. Як Ви можете бачити, він працює навіть із віртуальними компонентами. каааайф. 😉

clip_image003

Збірка з віртуальними компонентами до застосування макросу. (Ви можете подивитися повний варіант зображення)

clip_image004

Збірка з віртуальними компонентами після застосування прикрашального макроса.

clip_image005

Багаточисельна деталь перед застосуванням макросу.

clip_image006

Багаточисельна деталь після застосування розфарбовувального макросу.

Нижче подано код, якщо Вам більше подобається копіпаст.

Sub main()
Dim swApp As SldWorks.SldWorksDim swModel As SldWorks.ModelDoc2Dim swElement As ObjectDim vElementArr As VariantDim vElement As VariantDim vMatProp As Variant
Set swApp = Application.SldWorksSet swModel = swApp.ActiveDoc
vMatProp = swModel.MaterialPropertyValues
'Get all elementsIf swModel.GetType = swDocPART ThenvElementArr = swModel.GetBodies2(swAllBodies, False)
For Each vElement In vElementArrSet swElement = vElementRandomizevMatProp(0) = Rnd 'RedvMatProp(1) = Rnd 'GreenvMatProp(2) = Rnd 'BluevMatProp(3) = Rnd / 2 + 0.5 'AmbientvMatProp(4) = Rnd / 2 + 0.5 'DiffusevMatProp(5) = Rnd 'SpecularvMatProp(6) = Rnd * 0.9 + 0.1 'ShininessswElement.MaterialPropertyValues2 = vMatPropNext
ElseIf swModel.GetType = swDocASSEMBLY ThenvElementArr = swModel.GetComponents(False)
For Each vElement In vElementArrSet swElement = vElementRandomizevMatProp(0) = Rnd 'RedvMatProp(1) = Rnd 'GreenvMatProp(2) = Rnd 'BluevMatProp(3) = Rnd / 2 + 0.5 'AmbientvMatProp(4) = Rnd / 2 + 0.5 'DiffusevMatProp(5) = Rnd 'SpecularvMatProp(6) = Rnd * 0.9 + 0.1 'ShininessswElement.MaterialPropertyValues = vMatPropNext
ElseIf swModel.GetType = swDocDRAWING ThenMsgBox ("You can only apply random colors to part bodies or assembly components.")Exit Sub
End If
'Redraw to see new colorswModel.GraphicsRedraw2
End Sub

Ну і якщо Вам більше подобається завантажувати, нижче є посилання (посилання на вихідний сайт). Просто скачайте, розпакуйте і запустіть на виконання через панель інструментів для макросів (macro toolbar) у Вашому SolidWorks, виконувати макрос потрібно або за відкритої збірки, або в багаточисельності деталі …
multi-color.zip

Ще раз спасибі всім! Якщо хочете щось додати – пишіть у коментах!

,

Одна відповідь до “Перетвори свою збірку в SolidWorks’і на веселку. Готовий макрос для розфарбовування”

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *