sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    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

      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

        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

          Thank you, Dan, it works OK now!

          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