Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations MintJulep on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Solidworks API change Part transparency

Status
Not open for further replies.

ztraina1

Mechanical
Jul 16, 2010
1
Hi All -

I'm trying to make a macro to toggle the transparency of a part.

I'm having trouble editing Solidworks' example:


This example is great, except:

() I want to leave the colors of the faces alone instead of setting them all to an explicit value.
() I'd like the macro to toggle transparency between two values (say, 0% and 50%) when I run it.

Help??

Code Below:

This example shows how to make a part transparent.



'----------------------------------------------------

'

' Preconditions: Part is open.

'

' Postconditions: Part is now transparent.

'

'-----------------------------------------------------

Option Explicit

Public Enum swUserPreferenceIntegerValue_e

swDocumentColorShading = 185

End Enum

Public Enum swBodyType_e

swAllBodies = -1

swSolidBody = 0

swSheetBody = 1

swWireBody = 2

swMinimumBody = 3

swGeneralBody = 4

swEmptyBody = 5

End Enum

Function GetRValue(MyColour As Long) As Long

GetRValue = MyColour Mod 256

End Function

Function GetGValue(MyColour As Long) As Long

GetGValue = (MyColour \ 256) Mod 256

End Function

Function GetBValue(MyColour As Long) As Long

GetBValue = (MyColour \ 65536) Mod 256

End Function

Sub main()

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swPart As SldWorks.PartDoc

Dim nDefaultColour As Long

Dim vBodyArr As Variant

Dim vBody As Variant

Dim swBody As SldWorks.body2

Dim swFace As SldWorks.face2

Dim nMatProp(9) As Double

Dim vMatProp As Variant

Dim bRet As Boolean



Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swPart = swModel



nDefaultColour = swModel.GetUserPreferenceIntegerValue(swDocumentColorShading)



Debug.Print "File = " & swModel.GetPathName

Debug.Print " Default Colour = RGB(" & GetRValue(nDefaultColour) & ", " & GetGValue(nDefaultColour) & ", " & GetBValue(nDefaultColour) & ")"



' Set to sensible defaults

' Grey for default colour

nMatProp(0) = GetRValue(nDefaultColour) / 255# ' red

nMatProp(1) = GetRValue(nDefaultColour) / 255# ' green

nMatProp(2) = GetRValue(nDefaultColour) / 255# ' blue



nMatProp(3) = 1# ' Ambient

nMatProp(4) = 1# ' Diffuse

nMatProp(5) = 1# ' Specular

nMatProp(6) = 0.31 ' Shininess



' Increase transparency

nMatProp(7) = 0.95 ' Transparency



nMatProp(8) = 0# ' Emmission



vMatProp = nMatProp





vBodyArr = swPart.GetBodies2(swAllBodies, True)

For Each vBody In vBodyArr

Set swBody = vBody



Set swFace = swBody.GetFirstFace

While Not swFace Is Nothing

swFace.MaterialPropertyValues = vMatProp



Set swFace = swFace.GetNextFace

Wend

Next



' Redraw to see new transparency

swModel.GraphicsRedraw2

End Sub

'----------------------------------------------------
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor