# Copyright 2005, @Last Software, Inc. # This software is provided as an example of using the Ruby interface # to SketchUp. # Permission to use, copy, modify, and distribute this software for # any purpose and without fee is hereby granted, provided that the above # copyright notice appear in all copies. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #----------------------------------------------------------------------------- require 'sketchup.rb' #----------------------------------------------------------------------------- def crossArrayTest vector = Geom::Vector3d.new 0,1,0 a = [1,0,0] v = a.cross vector if (v) UI.messagebox v else UI.messagebox "Failure" end end def distanceArrayTest point1 = Geom::Point3d.new 10,10,10 a = [1,1,1] distance = a.distance point1 if (distance) UI.messagebox (distance) else "Failure" end end def distanceToLineArrayTest line = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] distance = a.distance_to_line line if (distance) UI.messagebox (distance) else "Failure" end end def distanceToPlaneArrayTest plane = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] distance = a.distance_to_plane plane if (distance) UI.messagebox (distance) else "Failure" end end def dotArrayTest vector = Geom::Vector3d.new 0,1,0 a = [1,0,0] d = a.dot vector if (d) UI.messagebox d else UI.messagebox "Failure" end end def normalizeArrayTest a = [0,0,1] v = a.normalize if (v) UI.messagebox v else UI.messagebox "Failure" end end def normalizeBangArrayTest a = [0,0,1] v = a.normalize! if (v) UI.messagebox v else UI.messagebox "Failure" end end def offsetArrayTest a =[10,10,10] vector = Geom::Vector3d.new(0,0,1) point2 = a.offset vector if (point2) UI.messagebox (point2) else "Failure" end end def offsetBangArrayTest a = [10,10,10] vector = Geom::Vector3d.new(0,0,1) point2 = a.offset! vector if (point2) UI.messagebox (point2) else "Failure" end end def onLineArrayTest line = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] status = a.on_line? line if (status) UI.messagebox (distance) else "Failure" end end def onPlaneArrayTest plane = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] status = a.on_plane? plane if (status) UI.messagebox (status) else "Failure" end end def projectToLineArrayTest line = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] pointonline = a.project_to_line line if (pointonline) UI.messagebox (pointonline) else "Failure" end end def projectToPlaneArrayTest plane = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)] a = [10,10,10] pointonplane = a.project_to_plane plane if (pointonplane) UI.messagebox (pointonplane) else "Failure" end end def transformArrayTest point2 = Geom::Point3d.new 100,200,300 transform = Geom::Transformation.new(point2) a = [10,10,10] point3 = a.transform transform if (point3) UI.messagebox point3 else UI.messagebox "Failure" end end def transformBangArrayTest point2 = Geom::Point3d.new 100,200,300 transform = Geom::Transformation.new(point2) a = [10,10,10] point3 = a.transform! transform if (point3) UI.messagebox point3 else UI.messagebox "Failure" end end def vectorToArrayTest point2 = Geom::Point3d.new 100,200,300 a = [10,10,10] vector = a.vector_to point2 if (vector) UI.messagebox vector else UI.messagebox "Failure" end end def xArrayTest a = [1,2,3] x = a.x if (x) UI.messagebox x else UI.messagebox "Failure" end end def xEqualsArrayTest a = [1,2,3] x = a.x=2 if (x) UI.messagebox x else UI.messagebox "Failure" end end def yArrayTest a = [1,2,3] y = a.y if (y) UI.messagebox y else UI.messagebox "Failure" end end def yEqualsArrayTest a = [1,2,3] y = a.y=2 if (y) UI.messagebox y else UI.messagebox "Failure" end end def zArrayTest a = [1,2,3] # Returns 3 while Point3d.z returns 3" z = a.z if (z) UI.messagebox z else UI.messagebox "Failure" end end def zEqualsArrayTest a = [1,2,3] z = a.z=2 if (z) UI.messagebox z else UI.messagebox "Failure" end end if( not file_loaded?("arraytests.rb") ) # This will add a separator to the menu, but only once add_separator_to_menu("Plugins") plugins_menu = UI.menu("Plugins") Array_menu = plugins_menu.add_submenu("Array Tests") Array_menu.add_item("Array.cross") { crossArrayTest } Array_menu.add_item("Array.distance") { distanceArrayTest } Array_menu.add_item("Array.distance_to_line") { distanceToLineArrayTest } Array_menu.add_item("Array.distance_to_plane") { distanceToPlaneArrayTest } Array_menu.add_item("Array.dot") { dotArrayTest } Array_menu.add_item("Array.normalize") { normalizeArrayTest } Array_menu.add_item("Array.normalize!") { normalizeBangArrayTest } Array_menu.add_item("Array.offset") { offsetArrayTest } Array_menu.add_item("Array.offset!") { offsetBangArrayTest } Array_menu.add_item("Array.on_line?") { onLineArrayTest } Array_menu.add_item("Array.on_plane?") { onPlaneArrayTest } Array_menu.add_item("Array.project_to_line") { projectToLineArrayTest } Array_menu.add_item("Array.project_to_plane") { projectToPlaneArrayTest } Array_menu.add_item("Array.transform") { transformArrayTest } Array_menu.add_item("Array.transform!") { transformBangArrayTest } Array_menu.add_item("Array.vector_to") { vectorToArrayTest } Array_menu.add_item("Array.x") { xArrayTest } Array_menu.add_item("Array.x=") { xEqualsArrayTest } Array_menu.add_item("Array.y") { yArrayTest } Array_menu.add_item("Array.y=") { yEqualsArrayTest } Array_menu.add_item("Array.z") { zArrayTest } Array_menu.add_item("Array.z=") { zEqualsArrayTest } end #----------------------------------------------------------------------------- file_loaded("arraytests.rb")