sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Offset + Thickness + Groups

    Scheduled Pinned Locked Moved Developers' Forum
    2 Posts 1 Posters 327 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • pingpinkP Offline
      pingpink
      last edited by

      Hi Everyone ,

      I'm trying to write a code to make a real glass size which I want to make all 3 functions of
      

      Glass Offset , Thickness , and Group's name of " Glass Unit " in one time. From what I can do is to make Glass Offset + Thickness. They are all faces , but I want to convert faces to separate groups at the end. How can I add groups and have a name of glass unit ?

      def face_offset
      
      	model = Sketchup.active_model
      	model.start_operation( "Face Offset" , true)
      	selection = model.selection 
      	entities = model.active_entities 
      	arr = []
      	faces = []
      	selection.each{|entity| 
      	   if entity.class == Sketchup;;Face 
      	     arr.push entity 
      	   end 
      	}
             $face_offset = 13
      	 $glass_thickness = 6
      	 prompts = ["Offset Width [mm] ", "Glass Thickness [mm] "]
      	 defaults = [$face_offset.to_s,$glass_thickness ]
      	 list = ["",""]
      	 input = UI.inputbox prompts, defaults, list, "Offset Face."
      
      	 doffset = input[0].to_f
               $face_offset = doffset
      	 berase = true
      	
      	# 1. Offset Glass + Erase outer faces
          arr_glass = []
      
          arr.each{|entity| 
      	   face  = face_offset1(entity, doffset.mm, berase)
      	   arr_glass.push face
      	} 
      
      	
      	entities.each do |e|
            faces.push e if e.is_a? Sketchup;;Face
      	  
          end
      	
      	# 2. Glass Thickness
          distance = input[1]
       
          faces.each do |e|
            e.pushpull distance.mm, true
      	  
          end
      	
      	# 3. Make all to be glass groups 
      	# faces.each do |e|(g=entities.add_group(e.all_connected)
              # g.name="GLASS UNIT")if e.valid? and e.parent==entities.parent and e.class==Sketchup;;Face
      	# end
          
       
          model.commit_operation 
      end
      

      Real_Size_Glass_Groups.jpg

      1 Reply Last reply Reply Quote 0
      • pingpinkP Offline
        pingpink
        last edited by

        I can do it now ! πŸ˜„

        def glass_groups
        
        	model = Sketchup.active_model
        	model.start_operation( "Face Offset" , true)
        	selection = model.selection 
        	entities = model.active_entities 
        	#entities = model.entities
        	arr = []
        	faces = []
        	selection.each{|entity| 
        	   if entity.class == Sketchup;;Face 
        	     arr.push entity 
        	   end 
        	}
             $face_offset = 13
        	 $glass_thickness = 6
        	 prompts = ["Offset Width [mm] ", "Glass Thickness [mm] "]
        	 defaults = [$face_offset.to_s,$glass_thickness.to_s ]
        	 list = ["",""]
        	 input = UI.inputbox prompts, defaults, list, "Offset Face."
        
        	 doffset = input[0].to_f
             $face_offset = doffset
        	 berase = true
        
        	# 1. Offset Glass + Erase outer faces
            arr_glass = []
        
            arr.each{|entity| 
        	   face  = face_offset1(entity, doffset.mm, berase)
        	   arr_glass.push face
        	} 
        
        	entities.each do |e|
              faces.push e if e.is_a? Sketchup;;Face
        	  
            end
        
        	# 2. Glass Thickness + Group's Name
            distance = input[1].to_f
         
            n='Glass unit'
            faces.each do |e|
             # e.pushpull distance.mm, true
        	   
        	   g = entities.add_group e
        	   e.pushpull(-distance.mm)
        	   g.name=n
        	   ###############
        
            end
        	
            model.commit_operation 
        end 
        
        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Buy SketchPlus
        Buy SUbD
        Buy WrapR
        Buy eBook
        Buy Modelur
        Buy Vertex Tools
        Buy SketchCuisine
        Buy FormFonts

        Advertisement