🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now
Error: #<NameError: undefined local variable or method
-
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
-
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
-
Thank you, Dan, it works OK now!
Advertisement