Method: Autocad::Drawing#get_point

Defined in:
lib/autocad/drawing.rb

#get_point(prompt: "Get point", base_point: nil) ⇒ Point3d

Note:

If base_point is provided, a stretched line is drawn from the base point

Prompt the user for a point in the drawing

Examples:

Get start and end points for a line

start = drawing.get_point(prompt: "Select start point:")
end_pt = drawing.get_point(prompt: "Select end point:", base_point: start)
drawing.model.add_line(start, end_pt)

Parameters:

  • prompt (String) (defaults to: "Get point")

    The prompt string to display

  • base_point (Array, Point3d, nil) (defaults to: nil)

    Optional base point for rubber-band line

Returns:

Raises:



790
791
792
793
794
795
796
797
798
799
800
801
802
# File 'lib/autocad/drawing.rb', line 790

def get_point(prompt: "Get point", base_point: nil)
  if base_point
    array_pt = base_point.to_ary.map { |x| x.to_f } unless base_point.nil?
    base_point = WIN32OLE_VARIANT.array([3], WIN32OLE::VARIANT::VT_R8)
    base_point[0] = array_pt[0]
    base_point[1] = array_pt[1]
    base_point[2] = array_pt[2]
  end
  pt = utility.GetPoint(base_point, prompt)
  Point3d.new(pt[0], pt[1], pt[2])
rescue => ex
  raise Autocad::Error.new("Error getting point input from user #{ex}")
end