This class contains methods to manipulate the current point of view of the
model. The drawing methods here (draw_line, draw_polyline, etc) are meant to
be invoked within a tool's Tool.draw method. Calling them outside Tool.draw
will have no effect.
You access the View by calling the Model.active_view method.
view = Sketchup.active_model.active_view
The add_observer method is used to add an observer to the current object.
Arguments:
Returns:
view = Sketchup.active_model.active_view status = view.add_observer observer
The animation= method is used to set an animation that is displayed for a view. See Animation for details on how to create an animation object.
Arguments:
Returns:
animation = ViewSpinner.new model = Sketchup.active_model view = model.active_view anim = view.animation=animation if (anim) UI.messagebox anim else UI.messagebox "Failure" end
The average_refresh_time is used to set the average time used to refresh the current model in the view. This can be used to estimate the frame rate for an animation.
Returns:
model = Sketchup.active_model view = model.active_view time = view.average_refresh_time
The camera method is used to retrieve the camera for the view.
Returns:
camera = view.camera
The camera= method is used to set the camera for the view. If a transition time is given, then it will animate the transition from the current camera to the new one.
Arguments:
Returns:
camera2 = Sketchup.Camera.new model = Sketchup.active_model view = model.active_view status = view.camera=camera2
The center method is used to retrieve the coordinates of the center of the view in pixels. It is returned as an array of 2 values for x and y.
Returns:
model = Sketchup.active_model view = model.active_view c = view.center
The corner method is used to retrieve the coordinates of one of the corners
of the view. The argument is an index between 0 and 3 that identifies which
corner you want. This method returns an array with two integers which are
the coordinates of the corner of the view in the view space. If the view
uses a Camera with a fixed aspect ratio, then the corners are the corners of
the viewing are of the camera which might be different than the actual
corners of the view itself.
The index numbers are as follows:
Arguments:
Returns:
point = view.corner index
The draw method is used to do basic drawing. This method can only be called
from within the draw method of a tool that you implement in Ruby.
The following constants are all OpenGL terms and have been externalized to
Ruby. Here is a summary of their meanings:
GL_POINTS:
Treats each vertex as a single point. Vertex n defines point n. N
points are drawn.
GL_LINES:
Treats each pair of vertices as
an independent line segment. Vertices 2n-1 and 2n define line n. N/2 lines
are drawn.
GL_LINE_STRIP:
Draws a connected group of line
segments from the first vertex to the last. Vertices n and n+1 define line
n. N-1 lines are drawn.
GL_LINE_LOOP:
Draws a
connected group of line segments from the first vertex to the last, then
back to the first. Vertices n and n+1 define line n. The last line, however,
is defined by vertices N and 1. N lines are drawn.
GL_TRIANGLES:
Treats each triplet of vertices as an independent
triangle. Vertices 3n-2, 3n-1, and 3n define triangle n. N/3 triangles are
drawn.
GL_TRIANGLE_STRIP:
Draws a connected group of
triangles. One triangle is defined for each vertex presented after the first
two vertices. For odd n, vertices n, n+1, and n+2 define triangle n. For
even n, vertices n+1, n, and n+2 define triangle n. N-2 triangles are
drawn.
GL_TRIANGLE_FAN:
Draws a connected group of triangles.
One triangle is defined for each vertex presented after the first two
vertices. Vertices 1, n+1, and n+2 define triangle n. N-2 triangles are
drawn.
GL_QUADS:
Treats each group of four vertices as an
independent quadrilateral. Vertices 4n-3, 4n-2, 4n-1, and 4n define
quadrilateral n. N/4 quadrilaterals are drawn.
GL_QUAD_STRIP:
Draws a connected group of quadrilaterals. One quadrilateral is
defined for each pair of vertices presented after the first pair.
Vertices 2n-1, 2n, 2n+2, and 2n+1 define quadrilateral n. N/2-1
quadrilaterals are drawn. Note that the order in which vertices are used to
construct a quadrilateral from strip data is different from that used with
independent data.
GL_POLYGON:
Draws a single, convex polygon. Vertices 1
through N define this polygon.
Arguments:
Returns:
view = view.draw GL_LINES, pts
The draw2d method is used to draw in screen space (using 2D screen
coordinates) instead of 3D space.
The second parameter is an Array of Point3d objects (or several individual
Point3d objects). These Point3d objects are in screen space, not 3D space.
The X value corresponds to the number of pixels from the left edge of the
drawing area. The Y value corresponds to the number of pixels down from
the top of the drawing area. The Z value is not used.
Arguments:
Returns:
view = view.draw2d openglenum, points
The draw_line method is used to draw disconnected lines. This is an alias
for draw_lines.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
view = view.draw_line point1, point2, point3, point4
The draw_lines method is used to draw disconnected lines.
You must have an even number of points. This method is usually invoked
within the draw method of a tool.
Arguments:
Returns:
point4 = Geom::Point3d.new 0,0,0 point5 = Geom::Point3d.new 100,100,100 # returns a view status = view.drawing_color="red" status = view.draw_lines point4, point5
This method is used to draw points.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
point3 = Geom::Point3d.new 0,0,0 # returns a view status = view.draw_points point3, 10, 1, "red"
The draw_polyline method is used to draw a series of connected line segments
from pt1 to pt2 to pt3, and so on.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
point12 = Geom::Point3d.new 0,0,0 point13 = Geom::Point3d.new 10,10,10 point14 = Geom::Point3d.new 20,20,20 point15 = Geom::Point3d.new 30,30,30 status = view.draw_polyline point12, point13, point14, point15
This method is used to draw text on the screen.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
point16 = Geom::Point3d.new 0,0,0 status = view.draw_text point16, "This is a test"
The drawing_color method is used to set the color that is used for drawing
to the view.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
view = view.drawing_color = color
The dynamic= method allows you to degrade visual quality while improving
performance when a model is large and view refresh time is slow. For
example, if you were using a Ruby script to animate the camera through
a large scene, you may want to set dynamic to true during that time.
See also camera.rb which is part of the film and stage ruby
scripts.
Arguments:
Returns:
view.dynamic = true
The field_of_view method is used get the view's field of view setting, in degrees.
Returns:
fov = Sketchup.active_model.active_view.field_of_view
The field_of_view= method is used set the view's field of view setting, in degrees.
Arguments:
Returns:
my_view = Sketchup.active_model.active_view my_view.field_of_view = 45 my_view.invalidate
The guess_target method is used to guess at what the user is looking at when
you have a perspective view.
This method is useful when writing a viewing tool. See also camera.rb which
is part of the film and stage ruby scripts.
Returns:
target = view.guess_target
The inference_locked? method is used to determine if inference locking is on for the view.
Returns:
model = Sketchup.active_model view = model.active_view status = view.inference_locked
The inputpoint method is used to retrieve an input point.
This will normally be used inside one of the mouse event handling methods in
a tool. Usually, it is preferable to create the InputPoint first and then
use the pick method on it.
Arguments:
Returns:
inputpoint = view.inputpoint x, y, inputpoint1
The invalidate method is used to refresh the view.
Returns:
model = Sketchup.active_model view = model.active_view invalidated_view = view.invalidate
The last_refresh_time method is used to retrieve the time for the last full view refresh.
Returns:
time = view.last_refresh_time
The line_stipple= method is used to set the line pattern to use for drawing.
The stipple pattern is given as a string.
Valid strings are:
"." (Dotted Line),
"-" (Short Dashes Line),
"_" (Long Dashes Line),
"-.-" (Dash Dot Dash Line),
"" (Solid Line).
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
point8 = Geom::Point3d.new 0,0,0 point9 = Geom::Point3d.new 100,100,100 view.line_stipple = "-.-" view = view.draw_lines point8, point9
The line_width= method is used to set the line width to use for drawing. The
value is a Double indicating the desired width in pixels.
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
view.line_width = width
The lock_inference method is used to lock or unlock an inference.
This method will typically be called from inside a tool class when the user
presses the shift key.
With no arguments it unlocks all inferences. With one or two arguments, it
locks the inference based on the given InputPoint(s).
Arguments:
Returns:
view = view.lock_inference view = view.lock_inference inputpoint view = view.lock_inference inputpoint1, inputpoint2
The model method is used to retrieve the model for the current view.
Returns:
model = view.model
The pick_helper method is used to retrieve a pick helper for the view. See
the PickHelper class for information on pick helpers.
This call returns an initialized PickHelper.
Returns:
model = Sketchup.active_model view = model.active_view ph = view.pick_helper
The pickray method is used to retrieve a ray passing through a given screen position in the viewing direction.
Returns:
ray = view.pickray x, y
The pixels_to_model method is used to compute a model size from a pixel size
at a given point.
This method is useful for deciding how big to draw something based on a
desired size in pixels.
Arguments:
Returns:
size = view.pixels_to_model pixels, point
The refresh method is used to immediately refresh the view.
Returns:
model = Sketchup.active_model view = model.active_view refreshed_view = view.refresh
The remove_observer method is used to remove an observer from the current object.
Arguments:
Returns:
view = Sketchup.active_model.active_view status = view.remove_observer observer
The screen_coords method is used to retrieve the screen coordinates of the
given point on the screen.
The x and y values returned correspond to the x and y screen coordinates.
Ignore the z values. If the referenced point is not in the current
viewport, the x and/or y value may be negative.
Arguments:
Returns:
point = view.screen_coords(ORIGIN)
Set the drawing color for the view based on the direction of a line that you
want to draw. These colors will match the axes colors in the SketchUp model
(typically blue for straight up and down, etc.)
This method is usually invoked within the draw method of a tool.
Arguments:
Returns:
view = view.set_color_from_line point1, point2
The show_frame method is used to show a frame of an Animation object in the
current view.
You can supply an optional delay in seconds to wait before showing the next
frame. This can be useful to control the speed at which the animation runs.
Arguments:
Returns:
status = view.show_frame <delay
Set a tooltip to display in the view. This is useful for displaying tooltips in a tool that you write in Ruby.
Arguments:
Returns:
tooltip = view.tooltip = string
The vpheight method is used to retrieve the height of the viewport for the view.
Returns:
model = Sketchup.active_model view = model.active_view height = view.vpheight
The vpwidth method is used to retrieve the width of the viewport for the view.
Returns:
width = view.vpwidth
The write_image method is used to write the current view to an image file.
All arguments except for the filename are optional.
If antialias is specified, it should be either true or false.
If a hash is passed as the first parameter, then the contents of that hash
define how the image is exported.
The keys are:
Arguments:
Returns:
depth = 100 width = 100 model = Sketchup.active_model entities = model.active_entities pts = [] pts[0] = [0, 0, 0] pts[1] = [width, 0, 0] pts[2] = [width, depth, 0] pts[3] = [0, depth, 0] # Add the face to the entities in the model face = entities.add_face pts UI.messagebox "Now Lets Write the Image" view = model.active_view # Puts in SketchUp install directory by default status = view.write_image "test.jpg" keys = { :filename => "c:/tmp/write_image.png", :width => 640, :height => 480, :antialias => false, :compression => 0.9, :transparent => true } model = Sketchup.active_model view = model.active_view view.write_image keys
The zoom method is used to zoom in or out by some zoom factor.
Arguments:
Returns:
view = view.zoom factor view = view.zoom selection view = view.zoom entity view = view.zoom array_of_entities
The zoom_extents method is used to zoom to the extents about the entire model, as if the user has selected the zoom extents command from the menu.
Returns:
view = Sketchup.active_model.active_view new_view = view.zoom_extents