SketchUp  Ruby API Reference 

Class Index

Method Index

Developers Guide

Examples

PickHelper class

The PickHelper class is used to pick entities that reside under the current cursor location. PickHelper and InputPoint are similar, but InputPoint also uses inferencing. You can retrieve a PickHelper object using the pick_helper method on a View object.
 
Entities that are picked (found under the cursor when a mouse or keyboard event occurs), are called Pick Records and are placed in an indexed list.

Parent: Object

Methods: all_picked, best_picked, count, depth_at, do_pick, element_at, init, leaf_at, path_at, pick_segment, picked_edge, picked_element, picked_face, test_point, transformation_at, view

Example Code: pickhelpertooltests.rb

Instance Methods


all_picked

The all_picked method retrieves an array of everything that was picked (all entities under the cursor when a mouse or keyboard event occurred).

Syntax

picked = pickhelper.all_picked 

Return Value

picked - an array of entities picked

Comments

You must have called do_pick before calling this method.

Example

ph = view.pick_helper
ph.do_pick x,y
picked = ph.all_picked

 

 


best_picked 

The best_picked method is used to retrieve the "best" entity picked (entity that you would have picked if you were using the select tool).

Syntax

entity = pickhelper.best_picked 

Return Value

entity - the best picked entity

Comments

You must have called do_pick prior to calling this method.

Example

ph = view.pick_helper
ph.do_pick x,y
best = ph.best_picked

 

 


count 

The count method is used to count the number of entities picked (number of pick records)

Syntax

number = pickhelper.count 

Return Value

number - the number of entities picked

Example 

ph = view.pick_helper
ph.do_pick x,y
num = ph.count

 

 


depth_at 

The depth_at method retrieves the depth of one of the currently picked entities in the list of pick records.

Syntax

depth = pickhelper.depth_at index

Arguments

index - a number from 1 to number of items picked

Return Value

depth - the depth of the entity if successful

Comments

Returns 1 if element is outside a component or group.

Example

ph = view.pick_helper
ph.do_pick x,y
depth = ph.depth_at 1

 

 


do_pick 

The do_pick method is used to perform the initial pick. This method is generally called before any other methods in the PickHelper class.

Syntax

numpicked = pickhelper.do_pick x, y 

Arguments

x - x screen coordinate for the pick

y - y screen coordinate for the pick

Return Value

numpicked - the number of entities picked

Comments

Returns the number of entities picked. The x and y values are the screen coordinates of the point at which would want to do a pick.

Example

ph = view.pick_helpernum =  ph.do_pick x,y

 

 


element_at 

The element_at method is used to retrieve a specific entity in the list of picked elements.

Syntax

entity = pickhelper.element_at index

Arguments

index - a number from 0 to number of items picked

Return Value

entity - the entity at the index position in the list of picked entities.

Example

ph = view.pick_helper
ph.do_pick x,y
# Returns the element at a specific spot in the list of
# elements picked.
element = ph.element_at 0    

 

 


init 

The init method is used to initialize the PickHelper for testing points.

Syntax

pickhelper = pickhelper.init x, y

pickhelper = ph.init x, y, aperture

Arguments

 x - x screen coordinate for the pick

y - y screen coordinate for the pick                  

aperture -

Return Value

pickhelper - a PickHelper object

Comments

You do not normally need to call this method, but you can use this if you want to call test_point on a lot of points.

If the optional aperture is given, it is given in pixels.

Example

ph = view.pick_helper
phnew = ph.init x, y

 

 


leaf_at 

The leaf_at method retrieves the deepest thing in a pick path.  

Syntax

entity = pickhelper.leaf_at index

Arguments

index - a number from 1 to number of items picked

Return Value

entity - the leaf entity

Comments

For example, if you have a face that is within a component that is within another component, leaf_at returns the face.

Example

ph = view.pick_helper
# Returns nil
phnew = ph.leaf_at 1

 

 


path_at 

The path_at method is used to retrieve the entire path for an entity in the pick list (as an array).

Syntax

array = pickhelper.path_at index

Arguments

index - a number from 1 to number of items picked

Return Value

array - an array of entities including the leaf

Example

ph = view.pick_helper
# Returns nil
path = ph.path_at 1

 

 


pick_segment 

The pick_segment method is used to pick a segment of a polyline curve that is defined by an array of points.

Syntax

index = pickhelper.pick_segment point1, point2, ... <apature>
index = pickhelper.pick_sgement [point1, point2, ...] <apature>

Arguments

point1, point2, ... - a series of Point3d objects in the polyline

[point1, point2, ...] - an array of Point3d objects in the polyline

Return Value

index - an index of the point in the array if you clicked on a point or an index of a segment if you clicked on a segment (if successful)

Comments

See bezier.rb

If you click on a point in a polyline curve, the index of the point in the curve is returned (starting at 0). If you click on a segment in the polyline curve, the index of the segment is returned. Segments start at index -1 (for the segment connecting the first two points) and increase by a factor of -1 (for example, the segment connecting second and third point is -2).

Example

point1 = Geom::Point3d.new 0,0,0
point2 = Geom::Point3d.new 10,0,0
ph = view.pick_helper
# Returns -1 or 0
path = ph.pick_segment point1, point2

 

 


picked_edge 

The picked_edge method is used to retrieve the "best" Edge picked

Syntax

edge =pickhelper.picked_edge 

Return Value

edge - an Edge object if successful

Example 

ph = view.pick_helper
ph.do_pick x,y
best = ph.picked_edge

 

 


picked_element 

The picked_element method retrieves the best drawing element, that is not an edge or a face, picked.

Syntax

element =pickhelper.picked_element 

Return Value

element - a drawing element that is not an edge or face if successful

Comments

Returns nil if there was nothing picked.

You must have called do_pick before calling this method.

Example

ph = view.pick_helper
ph.do_pick x,y
best = ph.picked_element

 

 


picked_face 

The picked_face method is used to retrieve the best face picked.

Syntax

face =pickhelper.picked_face 

Return Value

face - a Face object if successful.

Comments

Returns nil if there were no faces picked.

You must have called do_pick before calling this method.

Example

ph = view.pick_helper
ph.do_pick x,y
best = ph.picked_face

 

 


test_point 

The test_point method is used to test a point to see if it would be selected using the default or given pick aperture.

Syntax

ok = pickhelper.test_point(pt) 
ok = pickhelper.test_point point, x, y 
ok = pickhelper.test_point point, x, y, aperture 

Comments

In the first form, you must have initialized the PickHelper using the init method. This is more efficient if you want to test a lot of points using the same screen point.

In the second and third forms, it initializes the PickHelper using a screen point and an optional pick aperture.

Example

point = Geom::Point3d.new 0,0,0
ph = view.pick_helper
ph.do_pick x,y
# returns nil
status = ph.test_point point

 

 


transformation_at 

The transformation_at method is used to get a transformation at a specific index in the pick helper.

Syntax

transformation = pickhelper.transformation_at index

Arguments

index - the index where the transformation should be retrieved.

Return Value

transformation - the transformation found

Comments

The index represents the depth (whether the transformation is encapsulated in a component or group). A depth of 1 represents no encapsulation.

Example

ph = view.pick_helper
ph.do_pick x,y
t = ph.transformation_at 1

 

 


view 

The view method is used to retrieve the View that this PickHelper is associated with.

Syntax

view = pickhelper.view

Return Value

view - the current View object associated with the pick helper

Example

ph = view.pick_helper
ph.do_pick x,y
v = ph.view