| McNeel Wiki | |||||
| edit · print · help · all topics | |||||
Main Pages
Languages
| QuestionI have a number of point objects in my model. I would like to replace them with a block so they appear as markers. How can I do this without running the Insert command a bunch of times? AnswerThe following sample code demonstrates how to replace point objects with block objects using RhinoScript. To use this script:
See the introduction section of the RhinoScript help file for more details on loading and running scripts.
' Replaces points with blocks
Sub ReplacePointsWithBlocks
' Select points to replace with a block
Dim arrObjects
arrObjects = Rhino.GetObjects("Select points to replace with a block", 1, True, True)
If Not IsArray(arrObjects) Then Exit Sub
' Get the names of all block definitions in the document
Dim arrBlocks
arrBlocks = Rhino.BlockNames(True)
If Not IsArray(arrBlocks) Then
Rhino.Print "No block definitions found in the document."
Exit Sub
End If
' Select a block name from a list
Dim strBlock
strBlock = Rhino.ListBox(arrBlocks, "Select block", "Replace Points")
If IsNull(strBlock) Then Exit Sub
' Turn off redrawing (faster)
Rhino.EnableRedraw True
' Process each selected point object
Dim strObject, arrPoint
For Each strObject In arrObjects
' Get the point object's coordinates
arrPoint = Rhino.PointCoordinates(strObject)
' Insert the block at that location
Rhino.InsertBlock strBlock, arrPoint
Next
' Delete all of the point objects
Rhino.DeleteObjects arrObjects
' Turn redrawing back on
Rhino.EnableRedraw True
End Sub
Also, the following script will do just the opposite - it will replace block objects with point objects.
' Replaces blocks with points
Sub ReplaceBlocksWithPoints
' Select blocks to replace with points
Dim arrObjects
arrObjects = Rhino.GetObjects("Select blocks to replace with points", 4096, True, True)
If Not IsArray(arrObjects) Then Exit Sub
' Turn off redrawing (faster)
Rhino.EnableRedraw True
' Process each selected block object
Dim strObject, arrPoint
For Each strObject In arrObjects
' Get the block's insertion point
arrPoint = Rhino.BlockInstanceInsertPoint(strObject)
' Add a point object at that location
Rhino.AddPoint arrPoint
Next
' Delete all of the block objects
Rhino.DeleteObjects arrObjects
' Turn redrawing back on
Rhino.EnableRedraw True
End Sub
| ||||
| rename · changes · history · subscriptions · lost and found · references · file upload | |||||