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

    Trouble finding faces

    Scheduled Pinned Locked Moved Developers' Forum
    2 Posts 2 Posters 524 Views 2 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.
    • D Offline
      davesexcel
      last edited by

      I am using an If else statement, I got it to work earlier in the code, but now I am having an issue grouping a new entity and finding it's face, it has to do with adding an arc and not adding an arc.

      How would one name a group and find the faces in this situation?
      Arc and no Arc

       ents=Sketchup.active_model.active_entities
       
       
       
      		prompts = ["Stair Width", "Travel","Tread Thickness","Total Height","Riser Thickness","Stringer Width","Stringer Thickness","Top Hanger Thickness","Customer","Customer Address","Top Hanger Nose","Round Nose","Flight","No Nose"]
          defaults = [36.0,51.5,1.5,46.5,0.5,11.25,1.25,0.5,"My Builder", "234 Jimmys street","Yes","Yes","Main","Yes"]
      	list=["","","","","","","","","","", "Yes|No","Yes|No","Main","Yes|No"]
      	
          input = UI.inputbox prompts, defaults,list, "Stair Info"
              a,b,c,d,e,f,g,h,i,j,k,l,m,n=input
      		cst=i.to_s
      		adr=j.to_s
      ent = Sketchup.active_model.entities
      	tr=(d/8.0).ceil
      	rise=d/tr
      	run=((b-(1+h))/(tr-1))
      wdth=a-2.5
      	
      			prompts = ["Stair Width", "Number if Rises","Height","Travel","Hanger"]
          defaults = [36.0,tr,d,b,h]
      	list=[""]
      	
          input = UI.inputbox prompts, defaults,list, "Rise and Run"
              wth,rs,b,d,h=input
      		cst=i.to_s
      		adr=j.to_s
      ent = Sketchup.active_model.entities
      l
      	rise=b/rs
      	run=((d-(1+h))/(rs-1))
      	
      		#---------Clear All
      Sketchup.active_model.entities.clear!		
      		#----------------Make 1st tread
      ent.add_line [0,(run+1)+0*run-1.5,rise-c], [0,(1.5+0*run)-1.5,rise-c]  
      ent.add_line [0,1.5+0*run-1.5,rise-c+0.1875], [0,1.5+0*run-1.5,rise-c]
      ent.add_line [0,1.5+0*run-1.5,rise-c+0.1875], [0,1+0*run-1.5,rise-c+0.1875]
      ent.add_line [0,1+0*run-1.5,rise-c+0.1875], [0,1+0*run-1.5,rise-c]
      #Nose Yes/No<<<<<
      if n=="Yes"
      ns=1
      else 
      ns=0
      end
      puts ns
      puts d
      #End add nose<<<
      #ROUND Nose Yes/No<<<<<<
      if l=="Yes"
         puts "Round Nose"
      #add arc<<<<<<
      edg = ent.add_line [0,1+0*run-1.5,rise-c],[0,e+0*run-1.5,rise-c];vrt1=edg.end
      ent.add_arc [0,0.5+0*run-1.5,-c/2.0+(rise)],[0,0,-1],[-1,0,0],c/2.0,0,180.degrees,12
       edg = ent.add_line [0,1+run-1.5,rise],[0,0.5-1.5,rise];vrt2=edg.start
      #end Add Arc<<<<<
      else
      edg = ent.add_line [0,1+0*run-(1+0.5),rise-c],[0,e+0*run-(ns+1),rise-c]
      edg = ent.add_line [0,e+0*run-(ns+1),rise-c],[0,e+0*run-(ns+1),rise]
      edg = ent.add_line [0,e+0*run-(ns+1),rise],[0,(run+1)+0*run-1.5,rise]
      puts "SQUARE NOSE"
      end
      
      
       
        edg=ent.add_line [0,1+run-1.5,rise],[0,1+run-1.5,rise-c]
              edg.find_faces; face=edg.faces[0]
                face.pushpull wdth
      		  if l=="Yes" 
      		 edgs=vrt1.edges.reject!{|e| e.length<wdth};edgs[0].soft=true
               edgs=vrt2.edges.reject!{|e| e.length<wdth};edgs[0].soft=true
      		 else
      		 end
      		  group1 = ent.add_group face.all_connected ;group1.name="Tread"
      		  group1.description="Tread"
      for i in 1..tr-2
        group2 = group1.copy
        tran = Geom;;Transformation.translation [0, run*i, rise*i]
      group2.transform! tran
        end
        ents=Sketchup.active_model.active_entities
       
       
      
        #---Good
         group = ent.add_group(); group.name="Bottom riser"
       
      ent2 = group.entities
       pts = []
       pts[0] = [0, 0, 0]
       pts[1] = [0,-e,0]
       pts[2] = [0, -e,rise-c+0.1875]
       pts[3] = [0, 0, rise-c+0.1875]
       # Add the face to the entities in the model
      face = ent2.add_face pts
       face.pushpull wdth
       group.description = "Bottom riser"
       #---good
       group = ent.add_group(); group.name="Riser"
      ent3 = group.entities
       pts = []
      pts[0] = [0, run, rise-c]
      pts[1] = [0,run-e,rise-c]
       pts[2] = [0, run-e,2*rise-c+0.1875]
       pts[3] = [0, run, 2*rise-c+0.1875]
       # Add the face to the entities in the model
      face = ent3.add_face pts
       face.pushpull wdth
      group.description = "Riser"
      
      for i in 1..rs-3
        group2 = group.copy
        tran = Geom;;Transformation.translation [0, run*i, rise*i]
        group2.transform! tran
        end
        #----good
      
      #<<<<<<Top Hanger
        group = ent.add_group(); group.name="Top riser"
       
         ent5 = group.entities
       ent5.add_line [0,b+3,b-c], [0,b+3,b-15] 
        ent5.add_line [0,b+3,b-15], [0,b+3+h,b-15]
          ent5.add_line [0,b+3+h,b-15], [0,b+3+h,b]
      	#ROUND Nose Yes/No<<<<<<
      	if l=="Yes"
      	puts "top hanger round nose"
      	  #add arc<<<<<<
      	edg = ent5.add_line [0,b+3,b-c], [0,b+3-0.5,b-c] ;vrt1=edg.end
      
      		ent5.add_arc [0,b+3-0.5,b-(c/2)],[0,0,b+3-1],[-1,0,0],-c/2.0,0,180.degrees,12
      			  edg =  ent5.add_line [0,b+3+h,b], [0,b+2.5,b];vrt2=edg.start
      	#end Add Arc<<<<<	
      else
      puts "top hanger square nose"
       ent5.add_line [0,b+3,b-c], [0,b+3-1,b-c]
       ent5.add_line [0,b+3-1,b-c], [0,b+3-1,b] 
        ent5.add_line [0,b+3-1,b] , [0,b+3+h,b] 
      end
      	
      
             #add the face to the entities in the model
       
            edg.find_faces; face=edg.faces[0]
                face.pushpull -wdth
      
       
       
       
      
      1 Reply Last reply Reply Quote 0
      • sdmitchS Offline
        sdmitch
        last edited by

        @davesexcel said:

        I am using an If else statement, I got it to work earlier in the code, but now I am having an issue grouping a new entity and finding it's face, it has to do with adding an arc and not adding an arc.

        It seems to me that you define 'edg' twice if l=="Yes" but don't define it at all if l=='No'.

        #ROUND Nose Yes/No<<<<<<
        if l=="Yes"
          puts "top hanger round nose"
          #add arc<<<<<<
          edg = ent5.add_line [0,b+3,b-c], [0,b+3-0.5,b-c] ;vrt1=edg.end
          ent5.add_arc [0,b+3-0.5,b-(c/2)],[0,0,b+3-1],[-1,0,0],-c/2.0,0,180.degrees,12
          edg =  ent5.add_line [0,b+3+h,b], [0,b+2.5,b];vrt2=edg.start
          #end Add Arc<<<<<
        else
          puts "top hanger square nose"
          edg=ent5.add_line [0,b+3,b-c], [0,b+3-1,b-c]#<<<< edg
          ent5.add_line [0,b+3-1,b-c], [0,b+3-1,b]
          ent5.add_line [0,b+3-1,b] , [0,b+3+h,b]
        end
        #add the face to the entities in the model
        edg.find_faces; face=edg.faces[0]
        face.pushpull wdth
        
        

        Stairs.gif

        Nothing is worthless, it can always be used as a bad example.

        http://sdmitch.blogspot.com/

        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