NEW: Welcome to the Rhino 6 version of this page! Looking for the older Rhino 5 version?

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()