Module: TT::Cursor

Defined in:
TT_Lib2/cursor.rb

Overview

Since:

  • 2.4.0

Constant Summary

PATH =

Path to the cursor resources.

Since:

  • 2.4.0

File.join( TT::Lib.path, 'cursors')

Class Method Summary collapse

Class Method Details

.get_id(id) ⇒ Integer?

Creates cursor ids for the requested cursor id. Cursors are created on demand and reused to save resources.

Valid id arguments

  • :default

  • :invalid (2.7.0)

  • :hand (2.7.0)

  • :hand_invalid (2.7.0)

  • :link (2.7.0)

  • :erase (2.7.0)

  • :pencil (2.7.0)

  • :freehand (2.7.0)

  • :arc_1 (2.7.0)

  • :arc_2 (2.7.0)

  • :arc_3 (2.7.0)

  • :man (2.7.0)

  • :position_camera_3d (2.7.0)

  • :orbit (2.7.0)

  • :orbit_3d (2.7.0)

  • :pan_2d (2.7.0)

  • :pan (2.7.0)

  • :walk (2.7.0)

  • :walk_3d (2.7.0)

  • :look_around (2.7.0)

  • :look_around_903 (2.7.0)

  • :zoom (2.7.0)

  • :zoom_region (2.7.0)

  • :zoom_3d (2.7.0)

  • :zoom_2d (2.7.0)

  • :zoom_2d_region (2.7.0)

  • :offset

  • :offset_invalid

  • :dropper

  • :dropper_texture (2.7.0)

  • :dropper_invalid

  • :paint (2.7.0)

  • :paint_same (2.7.0)

  • :paint_object (2.7.0)

  • :paint_connected (2.7.0)

  • :paint_invalid (2.7.0)

  • :text (2.7.0)

  • :follow (2.7.0)

  • :follow_me (2.7.0)

  • :pushpull (2.7.0)

  • :pushpull_add (2.7.0)

  • :pushpull_invalid (2.7.0)

  • :tape (2.7.0)

  • :tape_add (2.7.0)

  • :select

  • :select_add

  • :select_remove

  • :select_toggle

  • :select_step_1 (2.7.0)

  • :select_step_2 (2.7.0)

  • :select_invalid (2.7.0)

  • :vertex (2.5.0)

  • :vertex_add (2.5.0)

  • :vertex_remove (2.5.0)

  • :vertex_toggle (2.5.0)

  • :rectangle (2.6.0)

  • :move (2.6.0)

  • :move_copy (2.7.0)

  • :move_fold (2.7.0)

  • :move_invalid (2.7.0)

  • :position (2.7.0)

  • :position_invalid (2.7.0)

  • :rotate (2.6.0)

  • :rotate_copy (2.6.0)

  • :rotate_invalid (2.7.0)

  • :scale (2.6.0)

  • :scale_invalid (2.7.0)

  • :scale_n_s (2.7.0)

  • :scale_n_ne (2.7.0)

  • :scale_ne (2.7.0)

  • :scale_ne_e (2.7.0)

  • :scale_w_e (2.7.0)

  • :scale_n_nw (2.7.0)

  • :scale_nw (2.7.0)

  • :scale_nw_w (2.7.0)

Parameters:

  • id (Symbol)

Returns:

  • (Integer, nil)

    Integer of a cursor resource uon success, nil upon failure.

Since:

  • 2.4.0



181
182
183
184
185
186
187
188
189
190
# File 'TT_Lib2/cursor.rb', line 181

def self.get_id(id)
  return nil unless @cursors.key?(id)
  # Load cursors on demand
  if @cursors[id].is_a?(Array)
    cursor_file, x, y = @cursors[id]
    filename = File.join( TT::Cursor::PATH, cursor_file )
    @cursors[id] = UI.create_cursor( filename, x, y )
  end
  return @cursors[id]
end

.get_vector2d_cursor(screen_vector, view) ⇒ Integer?

Returns a cursor ID to a scaling direction cursor based on a 2D vector in screen space.

Parameters:

  • screen_vector (Geom::Vector3d)
  • view (Sketchup::View)

Returns:

  • (Integer, nil)

    Integer of a cursor resource uon success, nil upon failure.

Since:

  • 2.7.0



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'TT_Lib2/cursor.rb', line 200

def self.get_vector2d_cursor( screen_vector, view )
  cursors = self.scale_handles
  cursor_id = nil
  nearest_angle = nil
  for vector, cursor in cursors
    a1 = vector.angle_between( screen_vector ).abs
    a2 = vector.angle_between( screen_vector.reverse ).abs
    angle = [ a1, a2 ].min
    if nearest_angle.nil? || angle < nearest_angle
      nearest_angle = angle
      cursor_id = cursor
    end
  end
  cursor_id
end

.get_vector3d_cursor(vector, view) ⇒ Integer?

Returns a cursor ID to a scaling direction cursor based on a 3D vector in model space.

Parameters:

  • vector (Geom::Vector3d)
  • view (Sketchup::View)

Returns:

  • (Integer, nil)

    Integer of a cursor resource uon success, nil upon failure.

Since:

  • 2.7.0



224
225
226
227
228
229
230
231
232
233
# File 'TT_Lib2/cursor.rb', line 224

def self.get_vector3d_cursor( vector, view )
  pt1 = ORIGIN
  pt2 = ORIGIN.offset( vector )
  spt1 = view.screen_coords( pt1 )
  spt2 = view.screen_coords( pt2 )
  spt1.z = 0
  spt2.z = 0
  screen_vector = spt1.vector_to( spt2 )
  self.get_vector2d_cursor( screen_vector, view )
end

.scale_handlesHash

Returns:

  • (Hash)

Since:

  • 2.7.0



237
238
239
240
# File 'TT_Lib2/cursor.rb', line 237

def self.scale_handles
  @scale_handles ||= self.compute_scale_handles
  @scale_handles
end