Select Dimensions by Style
Windows only
Demonstrates how to select an objects (dimensions) by their dimension style using RhinoScript.
Sub SelDimStyle
' Declare local constants and variables
Const rhAnnotation = 512
Dim strStyle, arrObjects, strObject
' Prompt the user to enter the name of the dimension style
strStyle = Rhino.GetString("Dimension style to select", Rhino.CurrentDimStyle)
If IsNull(strStyle) Then Exit Sub
If Not Rhino.IsDimStyle(strStyle) Then Exit Sub
' Create an array of all annotation objects
arrObjects = Rhino.ObjectsByType(rhAnnotation)
If Not IsArray(arrObjects) Then Exit Sub
Rhino.EnableRedraw False
' Process each annotation object
For Each strObject In arrObjects
If Rhino.IsDimension(strObject) Then
If StrComp(Rhino.DimensionStyle(strObject), strStyle, 1) = 0 Then
Rhino.SelectObject strObject
End If
End If
Next
Rhino.EnableRedraw True
End Sub
This one allows selection of a dimension style from a list…
Sub SelDimStyleList
' Declare local constants and variables
Const rhAnnotation = 512
Dim strStyle, arrObjects, strObject, arrStyles
'get the existing styles
arrStyles = Rhino.DimStyleNames ()
' Prompt the user to select the name of the dimension style
strStyle = Rhino.ListBox(arrStyles, "Dimension style to select", "Dimension styles")
If IsNull(strStyle) Then Exit Sub
If Not Rhino.IsDimStyle(strStyle) Then Exit Sub
' Create an array of all annotation objects
arrObjects = Rhino.ObjectsByType(rhAnnotation)
If Not IsArray(arrObjects) Then Exit Sub
Rhino.EnableRedraw False
' Process each annotation object
For Each strObject In arrObjects
If Rhino.IsDimension(strObject) Then
If StrComp(Rhino.DimensionStyle(strObject), strStyle, 1) = 0 Then
Rhino.SelectObject strObject
End If
End If
Next
Rhino.EnableRedraw True
End Sub
This one selects dimensions matching the styles of selected dimensions…
Sub SelDimStyleMatch
' Declare local constants and variables
Const rhAnnotation = 512
Dim sStyle, aDims, sDim, strObject, aStyles(),aStyles1, aSel, sSel, i
' Create an array of all annotation objects
aDims = Rhino.ObjectsByType(rhAnnotation)
If Not IsArray(aDims) Then Exit Sub
'Get the selected dimensions to match
aSel = Rhino.GetObjects("Select dimensions",rhAnnotation,True,True,True,aDims)
'create an array of the selcted dimension styles
If isarray(aSel) Then
For Each sSel In aSel
ReDim Preserve aStyles(i)
aStyles(i) = Rhino.DimensionStyle(sSel)
i = i + 1
Next
Else Exit Sub
End If
'cull duplicate styles from the array
aStyles1 = Rhino.CullDuplicateStrings(aStyles)
Rhino.EnableRedraw False
' Process each annotation object with each selected dim stlye
For Each sDim In aDims
For Each sStyle In aStyles1
If StrComp(Rhino.DimensionStyle(sDim), sStyle, 1) = 0 Then
Rhino.SelectObject sDim
End If
Next
Next
Rhino.EnableRedraw True
End Sub