Replace Hatch Pattern
Demonstrates how to replace an object's hatch pattern.
partial class Examples
{
public static Result ReplaceHatchPattern(RhinoDoc doc)
{
ObjRef[] obj_refs;
var rc = RhinoGet.GetMultipleObjects("Select hatches to replace", false, ObjectType.Hatch, out obj_refs);
if (rc != Result.Success || obj_refs == null)
return rc;
var gs = new GetString();
gs.SetCommandPrompt("Name of replacement hatch pattern");
gs.AcceptNothing(false);
gs.Get();
if (gs.CommandResult() != Result.Success)
return gs.CommandResult();
var hatch_name = gs.StringResult();
var pattern_index = doc.HatchPatterns.Find(hatch_name, true);
if (pattern_index < 0)
{
RhinoApp.WriteLine("The hatch pattern \"{0}\" not found in the document.", hatch_name);
return Result.Nothing;
}
foreach (var obj_ref in obj_refs)
{
var hatch_object = obj_ref.Object() as HatchObject;
if (hatch_object.HatchGeometry.PatternIndex != pattern_index)
{
hatch_object.HatchGeometry.PatternIndex = pattern_index;
hatch_object.CommitChanges();
}
}
doc.Views.Redraw();
return Result.Success;
}
}
Partial Friend Class Examples
Public Shared Function ReplaceHatchPattern(ByVal doc As RhinoDoc) As Result
Dim obj_refs() As ObjRef = Nothing
Dim rc = RhinoGet.GetMultipleObjects("Select hatches to replace", False, ObjectType.Hatch, obj_refs)
If rc IsNot Result.Success OrElse obj_refs Is Nothing Then
Return rc
End If
Dim gs = New GetString()
gs.SetCommandPrompt("Name of replacement hatch pattern")
gs.AcceptNothing(False)
gs.Get()
If gs.CommandResult() <> Result.Success Then
Return gs.CommandResult()
End If
Dim hatch_name = gs.StringResult()
Dim pattern_index = doc.HatchPatterns.Find(hatch_name, True)
If pattern_index < 0 Then
RhinoApp.WriteLine("The hatch pattern ""{0}"" not found in the document.", hatch_name)
Return Result.Nothing
End If
For Each obj_ref In obj_refs
Dim hatch_object = TryCast(obj_ref.Object(), HatchObject)
If hatch_object.HatchGeometry.PatternIndex IsNot pattern_index Then
hatch_object.HatchGeometry.PatternIndex = pattern_index
hatch_object.CommitChanges()
End If
Next obj_ref
doc.Views.Redraw()
Return Result.Success
End Function
End Class
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from Rhino.Input import *
from Rhino.Input.Custom import *
from scriptcontext import doc
def RunCommand():
rc, obj_refs = RhinoGet.GetMultipleObjects("Select hatches to replace", False, ObjectType.Hatch)
if rc != Result.Success or obj_refs == None:
return rc
gs = GetString()
gs.SetCommandPrompt("Name of replacement hatch pattern")
gs.AcceptNothing(False)
gs.Get()
if gs.CommandResult() != Result.Success:
return gs.CommandResult()
hatch_name = gs.StringResult()
pattern_index = doc.HatchPatterns.Find(hatch_name, True)
if pattern_index < 0:
RhinoApp.WriteLine("The hatch pattern \"{0}\" not found in the document.", hatch_name)
return Result.Nothing
for obj_ref in obj_refs:
hatch_object = obj_ref.Object()
if hatch_object.HatchGeometry.PatternIndex != pattern_index:
hatch_object.HatchGeometry.PatternIndex = pattern_index
hatch_object.CommitChanges()
doc.Views.Redraw()
return Result.Success
if __name__ == "__main__":
RunCommand()