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

    VCB greyed out

    Scheduled Pinned Locked Moved Developers' Forum
    3 Posts 3 Posters 293 Views 3 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
      duke
      last edited by

      I'm making a fairly simple script called Thicken, thats basically a wrapper for JPP. My problem is that the VCB is greyed out - even after putting in enabledVCB?

      Does anything stand out here (I removed the guts between start_operation and commit_operation for debugging purposes)?

      
      ### NOTE; Dev. halted - couldnt get Measurements (VCB/Value Control Box) input working
      
      require 'sketchup.rb'
      require 'extensions.rb'
      require 'jointpushpull.rb'
      
      thickenExt = SketchupExtension.new "Thicken", "CKD_Thicken.rb"
      thickenExt.version = '1.0'
      thickenExt.description = 'Uses JPP to thicken the select face/s directly or inside the selected groups'
      Sketchup.register_extension thickenExt, true
      
      module Thicken
      
      def initialize()
          @thickness = 100.mm
      
          @model = Sketchup.active_model
          selectedEntities = model.selection
          
          thickenTool = ThickenTool.new(self)
          @model.select_tool thickenTool
      
          model.start_operation "Thicken"
      
          model.commit_operation    
      end
      
      class ThickenTool
      	def initialize(caller_class)
      		@caller = caller_class
      	end
      	
      	def activate
      		Sketchup.set_status_text "Thickness", SB_VCB_LABEL
      		Sketchup.active_model.active_view.invalidate
      	end
      	
      	def deactivate(view)
      		view.invalidate
      	end
      	
      	def onUserText(text, view)
      		UI.messagebox("what")
      	end
      	
      	def enableVCB?
      	   return true
      	end
      end #Class ThickenTool
      
      if( !$thickenLoaded )
          $ckdSubMenu.add_item("Thicken") { thicken }	
          thickenLoaded = true
      end
      
      end #Module Thicken
      
      
      1 Reply Last reply Reply Quote 0
      • thomthomT Offline
        thomthom
        last edited by

        First of all I get an error because $ckdSubMenu is not defined.

        I replace that with UI.menu('plugins') and I get a new error:
        Error: #<NameError: undefined local variable or methodthicken' for Thicken:Module>
        c:/thicken.rb:52`

        I cannot just replace thicken with Thicken.initialize because that is a private method. I replace that with def self.start_tool() and call that.

        I then get an error on selectedEntities = model.selection because model is not defined. I replace all model references with @model.

        Then, when all these errors are solved the Tool activates and the VCB works just fine.

        My question to you, did you even have the Ruby Console open when you tried your code?

        <span class="syntaxdefault"></span><span class="syntaxcomment">###&nbsp;NOTE;&nbsp;Dev.&nbsp;halted&nbsp;-&nbsp;couldnt&nbsp;get&nbsp;Measurements&nbsp;(VCB/Value&nbsp;Control&nbsp;Box)&nbsp;input&nbsp;working<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">require&nbsp;</span><span class="syntaxstring">'sketchup.rb'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">require&nbsp;</span><span class="syntaxstring">'extensions.rb'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">require&nbsp;</span><span class="syntaxstring">'jointpushpull.rb'<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">thickenExt&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">SketchupExtension</span><span class="syntaxkeyword">.new&nbsp;</span><span class="syntaxstring">"Thicken"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"CKD_Thicken.rb"<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">thickenExt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">version&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'1.0'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">thickenExt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">description&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'Uses&nbsp;JPP&nbsp;to&nbsp;thicken&nbsp;the&nbsp;select&nbsp;face/s&nbsp;directly&nbsp;or&nbsp;inside&nbsp;the&nbsp;selected&nbsp;groups'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">register_extension&nbsp;thickenExt</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">true<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;module&nbsp;Thicken<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">start_tool</span><span class="syntaxkeyword">()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">thickness&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">100.mm<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">model&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedEntities&nbsp;</span><span class="syntaxkeyword">=&nbsp;@</span><span class="syntaxdefault">model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thickenTool&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">ThickenTool</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">select_tool&nbsp;thickenTool<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxcomment">#model.start_operation&nbsp;"Thicken"<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#model.commit_operation&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">class&nbsp;</span><span class="syntaxdefault">ThickenTool<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;initialize</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">caller_class</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">caller&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">caller_class<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;activate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">set_status_text&nbsp;</span><span class="syntaxstring">"Thickness"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">SB_VCB_LABEL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">invalidate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;deactivate</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">invalidate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;onUserText</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">text</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"what"</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;enableVCB</span><span class="syntaxkeyword">?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">true<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;</span><span class="syntaxcomment">#Class&nbsp;ThickenTool<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if(&nbsp;!</span><span class="syntaxdefault">$thickenLoaded&nbsp;</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Plugins'</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Thicken"</span><span class="syntaxkeyword">)&nbsp;{&nbsp;</span><span class="syntaxdefault">Thicken</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">start_tool&nbsp;</span><span class="syntaxkeyword">}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">thickenLoaded&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">true<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;</span><span class="syntaxcomment">#Module&nbsp;Thicken<br />&nbsp;</span><span class="syntaxdefault"></span>
        

        Thomas Thomassen — SketchUp Monkey & Coding addict
        List of my plugins and link to the CookieWare fund

        1 Reply Last reply Reply Quote 0
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          Duke, ya need to get your files and folders organized (so you stop using global variables.)
          Separate the code into 3 files, thus:

          file: "Plugins/CKD_Thicken_ext.rb"

          ### #  "Plugins/CKD_Thicken_ext.rb"
           
          require('sketchup.rb')
          require('extensions.rb')
          
          module CKD
            module Thicken
          
              @@plugin = SketchupExtension.new "Thicken", "CKD/Thicken/CKD_Thicken.rb"
              @@plugin.version = '1.0'
              @@plugin.creator = 'CKD (aka "Duke")'
              @@plugin.copyright = '2012, CKD'
              @@plugin.description = 'Uses JPP to thicken the select face/s directly or inside the selected groups'
              Sketchup.register_extension( @@plugin, true )
          
            end # module Thicken
          end # module CKD
          
          

          file: "Plugins/CKD/CKD_module.rb"

          # -------------------------------------------------------------------------
          # "Plugins/CKD/CKD_module.rb"
          
          module CKD
          
            @@topmenu = UI.menu('Plugins')
            @@submenu = @@topmenu.add_submenu('CKD')
            @@menuitem = {}
            
            def self.menuitem()
              return @@menuitem
            end
          
            def self.submenu()
              return @@submenu
            end
          
            def self.topmenu()
              return @@topmenu
            end
          
          end # module CKD
          
          

          file: "Plugins/CKD/Thicken/CKD_Thicken.rb"

          # -------------------------------------------------------------------------
          #  "Plugins/CKD/Thicken/CKD_Thicken.rb"
          
          require('sketchup.rb')
          require('jointpushpull.rb')
          
          require('CKD/CKD_module.rb')
          
          module CKD;;Thicken
          
              @@tool = nil
          
          
              class ThickenTool
                  def initialize(caller_class)
                      @caller = caller_class
                      @thickness = 100.mm
                  end
                   
                  def activate
                      @model = Sketchup.active_model
                      @selected = @model.selection
                      Sketchup.set_status_text("Thickness", SB_VCB_LABEL)
                      Sketchup.active_model.active_view.invalidate
                  end
          
                  def deactivate(view)
                      view.invalidate
                      @model = nil
                      @selected = nil
                  end
          
                  def resume(view)
                      @model = Sketchup.active_model
                      @selected = @model.selection
                      Sketchup.set_status_text("Thickness", SB_VCB_LABEL)
                      Sketchup.active_model.active_view.invalidate
                  end
          
                  def suspend(view)
                      nil
                  end
          
                  def onUserText(text, view)
                      UI.messagebox("what")
                      # call method thicken() here ?
                  end
          
                  def enableVCB?
                      return true
                  end
          
                  def thicken
                      model.start_operation("Thicken")
                          #
                          # change model here
                          #
                      model.commit_operation
                  rescue Exception => e
                      model.abort_operation
                      puts("Thicken Error!\n#{e.message}")
                      puts(e.backtrace)
                  end
                  
              end #Class ThickenTool
            
              class << self # Proxy class
              
                def tool()
                    if @@tool.nil?
                        @@tool = CKD;;Thicken;;ThickenTool.new(self)
                    end
                    #
                    return @@tool
                    #
                end
              
              end # Proxy class
            
              # RUN ONCE
              unless file_loaded?( 'CKD;;Thicken' )
              
                  CKD;;menuitem["Thicken"]= CKD;;submenu.add_item("Thicken") {
                      Sketchup.active_model.select_tool( CKD;;Thicken;;tool )
                  }   
                  
                  file_loaded( 'CKD;;Thicken' )
                  
              end
            
          end # module CKD;;Thicken
          

          I'm not here much anymore.

          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