• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Error: #<NameError: undefined local variable or method

Scheduled Pinned Locked Moved Developers' Forum
3 Posts 2 Posters 951 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.
  • M Offline
    martinspixis
    last edited by 2 Dec 2013, 19:53

    Hello, can anyone explain to me why I get error msg.: ***Error: #<NameError: undefined local variable or method `field_build' for Visual::Plugin_A:Module>***on this code:

    
    require("visual_visual_mod.rb")
    require("sketchup.rb")
    
    module Visual;;Plugin_A
    
    # module methods, module vars, etc.
    
      unless file_loaded?(File.basename(__FILE__))
      
      Visual;;SUBMENU_VisDose.add_item ("VisDose 3D") {
    
    
    field_build
    
    }
    
    def field_build
    
    
    model=Sketchup.active_model
    entities=model.active_entities
    mod = Sketchup.active_model # Open model
    entities = mod.entities # All entities in model
    status = entities.clear! #clear current model
    
    
    
    path = UI.openpanel "Open Data File", "d;\\", "*.txt"
    
     prompts = ["Alpha; "]
     defaults = ["0.5"]
     alpha = UI.inputbox prompts, defaults, "Please set transparency."
    
    
    File.open(path).each_line {|line|
    
    values=line.split(' ')
    
    	x1=values[0].to_f
    	y1=values[1].to_f
    	z1=values[2].to_f
    	color=values[3].to_f
    	size=1
    
    	x2=(x1+1)
    	y2=(y1+1)
    
    
    
        pt1 = [x1, y1, z1]
        pt2 = [x2, y1, z1]
        pt3 = [x2, y2, z1]
        pt4 = [x1, y2, z1]
    
    
    case color
    
    	when 8..1000 then
    		face1=entities.add_face pt1, pt2, pt3, pt4
    		face1.material=[255,0,0]
    		face1.material.alpha=alpha[0].to_f
    		face1.back_material=[255,0,0]
    		face1.back_material.alpha=alpha[0].to_f
    		face1.pushpull size, true
    
    	when 7..7.99 then
    		face2=entities.add_face pt1, pt2, pt3, pt4
    		face2.material=[255,86,25]
    		face2.material.alpha=alpha[0].to_f
    		face2.back_material=[255,86,25]
    		face2.back_material.alpha=alpha[0].to_f
    		face2.pushpull size, true
    
    	when 6..6.99 then
    		face3=entities.add_face pt1, pt2, pt3, pt4
    		face3.material=[255,220,25]
    		face3.material.alpha=alpha[0].to_f
    		face3.back_material=[255,220,25]
    		face3.back_material.alpha=alpha[0].to_f
    		face3.pushpull size, true
    
    	when 5..5.99 then
    		face4=entities.add_face pt1, pt2, pt3, pt4
    		face4.material=[254,254,76]
    		face4.material.alpha=alpha[0].to_f
    		face4.back_material=[254,254,76]
    		face4.back_material.alpha=alpha[0].to_f
    		face4.pushpull size, true
    
    	when 4..4.99 then
    		face5=entities.add_face pt1, pt2, pt3, pt4
    		face5.material=[128,255,0]
    		face5.material.alpha=alpha[0].to_f
    		face5.back_material=[128,255,0]
    		face5.back_material.alpha=alpha[0].to_f
    		face5.pushpull size, true
    
    	when 3..3.99 then
    		face6=entities.add_face pt1, pt2, pt3, pt4
    		face6.material=[0,255,0]
    		face6.material.alpha=alpha[0].to_f
    		face6.back_material=[0,255,0]
    		face6.back_material.alpha=alpha[0].to_f
    		face6.pushpull size, true
    
    	when 2.5..2.99 then
    		face7=entities.add_face pt1, pt2, pt3, pt4
    		face7.material=[0,160,177]
    		face7.material.alpha=alpha[0].to_f
    		face7.back_material=[0,160,177]
    		face7.back_material.alpha=alpha[0].to_f
    		face7.pushpull size, true
    
    	when 2..2.49 then
    		face8=entities.add_face pt1, pt2, pt3, pt4
    		face8.material=[0,86,255]
    		face8.material.alpha=alpha[0].to_f
    		face8.back_material=[0,86,255]
    		face8.back_material.alpha=alpha[0].to_f
    		face8.pushpull size, true
    
    	when 0..2 then
    		face9=entities.add_face pt1, pt2, pt3, pt4
    		face9.material=[0,86,255]
    		face9.material.alpha=alpha[0].to_f
    		face9.back_material=[0,86,255]
    		face9.back_material.alpha=alpha[0].to_f
    		face9.pushpull size, true
    	else
    
    		face10=entities.add_face pt1, pt2, pt3, pt4
    		face10.material=[0,0,255]
    		face10.material.alpha=alpha[0].to_f
    		face10.back_material=[0,0,255]
    		face10.back_material.alpha=alpha[0].to_f
    		face10.pushpull size, true
    
    end
    
    
     
    }
     styles = Sketchup.active_model.styles
     status = styles.add_style "D;\\xray.style", true
    
    
    end
    
    	
        file_loaded(File.basename(__FILE__))
    	
    end	
    end
    

    Thank's

    1 Reply Last reply Reply Quote 0
    • Dan RathbunD Offline
      Dan Rathbun
      last edited by 2 Dec 2013, 21:58

      Ignoring other errors ...

      If you wish to make unqualified method calls, from within the module, then the methods must be defined within an anonymous proxy class block.

      This also allows you to make qualified method calls from outside the module, like:
      Visual::Plugin_A.field_build()

      require("visual_visual_mod.rb")
      require("sketchup.rb")
      
      module Visual;;Plugin_A
      
        ### CONSTANTS
        #
      
      
        ### MODULE VARS
        #
      
      
        #{# ANONYMOUS SINGLETON PROXY CLASS INSTANCE
        #
        class << self # this module itself is the proxy object
        
          ### INSTANCE VARS
          #
      
      
          ### METHODS
          #
      
          def field_build()
      
            model=Sketchup.active_model
            entities=model.active_entities
            mod = Sketchup.active_model # Open model
            entities = mod.entities # All entities in model
            status = entities.clear! #clear current model
      
      
      
            path = UI.openpanel "Open Data File", "d;\\", "*.txt"
      
            prompts = ["Alpha; "]
            defaults = ["0.5"]
            alpha = UI.inputbox prompts, defaults, "Please set transparency."
      
      
            File.open(path).each_line {|line|
      
              values=line.split(' ')
      
              x1=values[0].to_f
              y1=values[1].to_f
              z1=values[2].to_f
              color=values[3].to_f
              size=1
      
              x2=(x1+1)
              y2=(y1+1)
      
      
      
              pt1 = [x1, y1, z1]
              pt2 = [x2, y1, z1]
              pt3 = [x2, y2, z1]
              pt4 = [x1, y2, z1]
      
      
              case color
      
              when 8..1000 then
                face1=entities.add_face pt1, pt2, pt3, pt4
                face1.material=[255,0,0]
                face1.material.alpha=alpha[0].to_f
                face1.back_material=[255,0,0]
                face1.back_material.alpha=alpha[0].to_f
                face1.pushpull size, true
      
              when 7..7.99 then
                face2=entities.add_face pt1, pt2, pt3, pt4
                face2.material=[255,86,25]
                face2.material.alpha=alpha[0].to_f
                face2.back_material=[255,86,25]
                face2.back_material.alpha=alpha[0].to_f
                face2.pushpull size, true
      
              when 6..6.99 then
                face3=entities.add_face pt1, pt2, pt3, pt4
                face3.material=[255,220,25]
                face3.material.alpha=alpha[0].to_f
                face3.back_material=[255,220,25]
                face3.back_material.alpha=alpha[0].to_f
                face3.pushpull size, true
      
              when 5..5.99 then
                face4=entities.add_face pt1, pt2, pt3, pt4
                face4.material=[254,254,76]
                face4.material.alpha=alpha[0].to_f
                face4.back_material=[254,254,76]
                face4.back_material.alpha=alpha[0].to_f
                face4.pushpull size, true
      
              when 4..4.99 then
                face5=entities.add_face pt1, pt2, pt3, pt4
                face5.material=[128,255,0]
                face5.material.alpha=alpha[0].to_f
                face5.back_material=[128,255,0]
                face5.back_material.alpha=alpha[0].to_f
                face5.pushpull size, true
      
              when 3..3.99 then
                face6=entities.add_face pt1, pt2, pt3, pt4
                face6.material=[0,255,0]
                face6.material.alpha=alpha[0].to_f
                face6.back_material=[0,255,0]
                face6.back_material.alpha=alpha[0].to_f
                face6.pushpull size, true
      
              when 2.5..2.99 then
                face7=entities.add_face pt1, pt2, pt3, pt4
                face7.material=[0,160,177]
                face7.material.alpha=alpha[0].to_f
                face7.back_material=[0,160,177]
                face7.back_material.alpha=alpha[0].to_f
                face7.pushpull size, true
      
              when 2..2.49 then
                face8=entities.add_face pt1, pt2, pt3, pt4
                face8.material=[0,86,255]
                face8.material.alpha=alpha[0].to_f
                face8.back_material=[0,86,255]
                face8.back_material.alpha=alpha[0].to_f
                face8.pushpull size, true
      
              when 0..2 then
                face9=entities.add_face pt1, pt2, pt3, pt4
                face9.material=[0,86,255]
                face9.material.alpha=alpha[0].to_f
                face9.back_material=[0,86,255]
                face9.back_material.alpha=alpha[0].to_f
                face9.pushpull size, true
      
              else
                face10=entities.add_face pt1, pt2, pt3, pt4
                face10.material=[0,0,255]
                face10.material.alpha=alpha[0].to_f
                face10.back_material=[0,0,255]
                face10.back_material.alpha=alpha[0].to_f
                face10.pushpull size, true
      
              end # case
      
            } # file each line
        
            styles = Sketchup.active_model.styles
            status = styles.add_style "D;\\xray.style", true
      
      
          end # def
      
      
        end #}# proxy class
      
      
        #{# RUN ONCE PER SESSION
        #
        unless file_loaded?(File.basename(__FILE__))
        
          Visual;;SUBMENU_VisDose.add_item ("VisDose 3D") {
            field_build()
          }
      
      
          file_loaded(File.basename(__FILE__))
      
        end #}# unless file already loaded
      
      
      end # module
      

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • M Offline
        martinspixis
        last edited by 4 Dec 2013, 19:01

        Thank you, Dan, it works OK now!

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        1 / 1
        • First post
          1/3
          Last post
        Buy SketchPlus
        Buy SUbD
        Buy WrapR
        Buy eBook
        Buy Modelur
        Buy Vertex Tools
        Buy SketchCuisine
        Buy FormFonts

        Advertisement