Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:scriptsamples:setrendercolor [2015/09/14] (current)
Line 1: Line 1:
 +====== Set Material Colors from Object Colors ======
 +> **Developer:​** //​[[developer:​rhinoscript|RhinoScript]]//​
 +> **Summary:​** //​Demonstrates how to modify an object'​s material color to match it's display color.//
 +
 +===== Example =====
 +The following [[developer:​rhinoscript|RhinoScript]] demonstrates how to modify an object'​s material color so it matches it's display color. For objects who get their display color from their layer, then the layer'​s material color is modified to match the layer color. In doing this, objects will render with the same colors as they show up in Rhino when viewing in either wireframe or shaded mode.
 +
 +See the [[developer:​rhinoscript|RhinoScript]] help file for details on loading and running scripts.
 +
 +<code vb>
 + ​Option Explicit
 +
 + Sub SetMaterialColorsFromObjectColors
 +
 +  ' Constants
 +  Const rhColorByLayer = 0
 +  Const rhColorByObject = 1
 +
 +  ' Variables
 +  Dim aObjects, sObject
 +  Dim nColor, nSource
 +  Dim sLayer, nMaterial
 +
 +  ' Get all objects in the document
 +  aObjects = Rhino.AllObjects
 +  If Not IsArray(aObjects) Then Exit Sub
 +
 +  ' Process each object ​   ​
 +  For Each sObject In aObjects
 +
 +    ' Get the object'​s color and color source
 +    nColor = Rhino.ObjectColor(sObject)
 +    nSource = Rhino.ObjectColorSource(sObject)
 +    nMaterial = -1
 +
 +    ' If the object'​s color source is "by layer"
 +    ' then get the layer'​s material index. If the
 +    ' layer does not have a material, add one.    ​
 +    If (nSource = rhColorByLayer) Then
 +      sLayer = Rhino.ObjectLayer(sObject)
 +      nMaterial = Rhino.LayerMaterialIndex(sLayer)
 +      If( nMaterial < 0 ) Then
 +        nMaterial = Rhino.AddMaterialToLayer(sLayer)
 +      End If
 +
 +    ' If the object'​s color source is "by object"​
 +    ' then get the object'​s material index. If the
 +    ' object does not have a material, add one.    ​
 +    ElseIf (nSource = rhColorByObject) Then
 +      nMaterial = Rhino.ObjectMaterialIndex(sObject)
 +      If( nMaterial < 0 ) Then
 +        nMaterial = Rhino.AddMaterialToObject(sObject)
 +      End If
 +
 +    End If
 +
 +    ' Set the material color
 +    If (nMaterial >= 0) Then
 +      If (nColor <> Rhino.MaterialColor(nMaterial)) Then
 +        Rhino.MaterialColor nMaterial, nColor
 +      End If
 +    End If
 +
 +  Next
 +
 +  ' Redraw the document
 +  Rhino.Redraw
 +
 + End Sub
 +</​code>​
 +
 +\\
 +
 +{{tag>​Developer RhinoScript}}
  
developer/scriptsamples/setrendercolor.txt ยท Last modified: 2015/09/14 (external edit)