require 'sketchup.rb' class MyEntityObserver1 < Sketchup::EntityObserver def onChangeEntity(entity) model=Sketchup.active_model entities=model.active_entities layers = model.layers layers["grille"].visible=false layers["grille_vue"].visible=true end end class MyEntityObserver2 < Sketchup::EntityObserver def onChangeEntity(entity) model=Sketchup.active_model entities=model.active_entities layers = model.layers layers["grille"].visible=true layers["grille_vue"].visible=false end end def peps_01_02 model=Sketchup.active_model entities=model.active_entities sel=model.selection layers = model.layers status=model.start_operation("Grille") titre=["Hauteur ","Largeur ","Espacement "] valeurs=[300.mm,210.mm,5.mm] resultats = inputbox titre,valeurs,"Paramètres de la Grille" hauteur=resultats[0] largeur=resultats[1] n=resultats[2] groupe=entities.add_group ent_groupe=groupe.entities groupe.name="grille" g1=entities.add_group ent_g1=g1.entities g1.name="b1" g2=entities.add_group ent_g2=g2.entities g2.name="b2" nouveau_calq1 = layers.add "grille" nouveau_calq2=layers.add "grille_vue" calq_actif = model.active_layer old_lay=calq_actif.name depth = 10.mm width = 10.mm pts = [] model.active_layer = layers["grille_vue"] pts[0] = [-width, 0, 0] pts[1] = [0, 0, 0] pts[2] = [0, depth, 0] pts[3] = [-width, depth, 0] face2 = ent_g2.add_face pts g2.material="red" model.active_layer = layers["grille"] lay=layers["grille_vue"] lay.visible=false for i in 1..largeur/n point1 = Geom::Point3d.new (n*i,0,0) point2 = Geom::Point3d.new (n*i,hauteur,0) constline = ent_groupe.add_cline point1,point2 end for i in 1..hauteur/n point1 = Geom::Point3d.new (0,n*i,0) point2 = Geom::Point3d.new (largeur,n*i,0) constline = ent_groupe.add_cline point1,point2 end pts[0] = [0, -depth, 0] pts[1] = [width, -depth, 0] pts[2] = [width, 0, 0] pts[3] = [0, 0, 0] face1 = ent_g1.add_face pts g1.material="green" model.commit_operation() entities.each{|e| if e.typename=="Group" if e.name=="b2" e.add_observer(MyEntityObserver2.new) end if e.name=="b1" e.add_observer(MyEntityObserver1.new) end end } model.active_layer = layers[old_lay] Sketchup.send_action "viewZoomExtents:" end if( not file_loaded?("peps_01_02.rb") ) add_separator_to_menu("Plugins") UI.menu("Plugins").add_item("peps_01_02") {peps_01_02} end