sketchucation logo sketchucation
    • Login
    1. Home
    2. scetchnscribble
    โ„น๏ธ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info
    S
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 5
    • Posts 18
    • Groups 1

    scetchnscribble

    @scetchnscribble

    10
    Reputation
    1
    Profile views
    18
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    scetchnscribble Unfollow Follow
    registered-users

    Latest posts made by scetchnscribble

    • RE: Adding more plugins to submenu?

      Dan,

      Thanks I finally got it to work using the code you provided.

      Derek

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Adding more plugins to submenu?

      TIG, what do you mean by "create them in the same module"?

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Adding more plugins to submenu?

      @chris fullmer said:

      create_submenu.add_item("PluginB")

      That should do it!

      The plugins are two separate ruby files plugina.rb & pluginb.rb. They load independently.

      plugina.rb will load first and create the "Create..." submenu under "Plugins".

      I'm just not sure how to code pluginb.rb to use the same submenu created in plugina.rb

      posted in Developers' Forum
      S
      scetchnscribble
    • Adding more plugins to submenu?

      I've developed a Plugin (PluginA) which creates a submenu called "Create..." under the main menu "Plugins"

      plugins_menu = UI.menu("PlugIns")
      create_submenu = plugins_menu.add_submenu("Create...")
      create_submenu.add_item("PluginA")

      Then I created a second separate plugin (PluginB) that I also want to place in the "Create..." submenu. I can't figure out how to place the second plugin (PluginB) in the submenu "Create...".

      Anyone have any ideas?

      Thanks
      Derek

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Right Click Edit

      thanks, great explanation. I'm guessing nothing in parametric.rb is actually specifically changed to work with windows.rb and it is the windows.rb script that utilizes the methods and variables in the parametric.rb script. i'll keep working at it

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Right Click Edit

      so my question now is if I require another script, such as, parametric.rb does that mean it loads the script and allows me to pass methods and variables back and forth between the two scripts? ๐Ÿ˜•

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Right Click Edit

      @tig said:

      which looks suspiciously like the code for a context-menu ? ๐Ÿ˜ฎ

      yeah i did another test and some how its passing the class name to parametric.rb but how? is it through the following code?
      **```
      def create_entity(model)
      #TODO; try to find existing definition matching the parameters
      @entity = model.definitions.add self.compute_name

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Right Click Edit

      @unknownuser said:

      require 'parametric.rb'
      Thanks I did check that and there was no sign of anything, I still have no clue.

      @unknownuser said:

      That code in the first post is the entire script?
      Yup thats the entire script. sure it requires sketchup.rb and parametric.rb, but a lot of scripts do.

      I downloaded it right from the google website Window Maker http://sketchup.google.com/download/rubyscripts.html

      posted in Developers' Forum
      S
      scetchnscribble
    • RE: Right Click Edit

      hey thanks I tried that and it worked... but when i look over this code I only see the context menu listed at the beginning as a comment. How does the script run it if it is only a comment? Is this script calling another external script that i am overlooking?

      **```
      #-----------------------------------------------------------------------------

      Name ; Window Maker 1.0

      Description ; A tool to create parametric Double Hung and Slider windows.

      Menu Item ; Tools->Windows

      Context Menu; Edit Window

      Usage ; Select window type and then specify the size.

      ; If the size needs to be changed after inserting into the model,

      ; right click on the window and select "Edit Window".

      Date ; 9/10/2004

      Type ; Dialog Box

      #-----------------------------------------------------------------------------

      posted in Developers' Forum
      S
      scetchnscribble
    • Right Click Edit

      Can someone explain to me what bit of code in this following script gives the user the ability to right click a component and edit its input variables? I have been looking this over for days and still can't figure it out. ๐Ÿ˜ž

      # Copyright 2004-2005, @Last Software, Inc.
      
      # This software is provided as an example of using the Ruby interface
      # to SketchUp.
      
      # Permission to use, copy, modify, and distribute this software for 
      # any purpose and without fee is hereby granted, provided that the above
      # copyright notice appear in all copies.
      
      # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
      # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
      # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
      #-----------------------------------------------------------------------------
      # Name        ;   Window Maker 1.0
      # Description ;   A tool to create parametric Double Hung and Slider windows.
      # Menu Item   ;   Tools->Windows
      # Context Menu;   Edit Window
      # Usage       ;   Select window type and then specify the size.
      #             ;   If the size needs to be changed after inserting into the model, 
      #             ;   right click on the window and select "Edit Window".
      # Date        ;   9/10/2004
      # Type        ;   Dialog Box
      #-----------------------------------------------------------------------------
      
      # Classes for creating and editing parametric windows
      
      require 'sketchup.rb'
      require 'parametric.rb'
      
      #=============================================================================
      # Define the main parametric window class
      
      class Window < Parametric
      
      # Create windows as components rather than groups
      def class_of_object
          Sketchup;;ComponentInstance
      end
      
      def create_entities(data, container)
          width = data["w"]
          height = data["h"]
          type = data["t"]
          Window.create_window(width, height, type, container)
      end
      
      def create_entity(model)
          #TODO; try to find existing definition matching the parameters
          @entity = model.definitions.add self.compute_name
          
          # Set the behavior
          behavior = @entity.behavior
          behavior.is2d = true
          behavior.snapto = 0
          behavior.cuts_opening = true
          @entity
      end
      
      @@defaults = {"w", 4.feet, "h", 5.feet, "t", 0}
      
      def default_parameters
          @@defaults.clone
      end
      
      def translate_key(key)
          prompt = key
          case( key )
              when "w"
                  prompt = "Width"
              when "h"
                  prompt = "Height"
          end
          prompt
      end
      
      # Show a dialog and get the values from the user
      # The default implementation of this in the Parametric class doesn't support
      # having a popup list.  Maybe I should consider adding something that would
      # allow doing that in a more generic way.
      def prompt(operation)
          # get the parameters
          if( @entity )
              data = self.parameters
          else
              data = self.default_parameters
          end
          if( not data )
              puts "No parameters attached to the entity"
              return nil
          end
          title = operation + " " + self.class.name
          prompts = ["Width", "Height", "Type"]
          types = ["Double Hung", "Slider"]
          values = [data["w"], data["h"], types[data["t"]]]
          popups = [nil, nil, types.join("|")]
          results = inputbox( prompts, values, popups, title )
          return nil if not results
          
          # Store the results back into data
          data["w"] = results[0]
          data["h"] = results[1]
          t = types.index(results[2])
          data["t"] = t ? t ; 0
          
          # update the defaults values
          if( not @entity )
             data.each {|k, v| @@defaults[k] = v }
          end
      
          data
      end
      
      #-----------------------------------------------------------------------
      # Create a rectangular face at a given location
      
      def Window.rectangle(origin, width, height, container, close)
      
          v1 = Geom;;Vector3d.new(width,0,0)
          v2 = Geom;;Vector3d.new(0,height,0)
          p1 = origin;
          p2 = origin + v1
          p3 = p2 + v2
          p4 = origin + v2
      
          edges = []
          edges[0]=container.add_line p1, p2
          edges[1]=container.add_line p2, p3
          edges[2]=container.add_line p3, p4
          edges[3]=container.add_line p4, p1
      
          if( close )
              f = container.add_face edges
          else
              edges
          end
          
      end
      
      #-----------------------------------
      # Create a simple rectangluar frame
      def Window.simple_frame(p1, width, height, thickness, frameWidth, container)
      
          # create a group for the frame
          frame = container.add_group
          
          v = Geom;;Vector3d.new(frameWidth, frameWidth, 0)
          p2 = p1 + v
      
          holeWidth = width - (2.0 * frameWidth)
          holeHeight = height - (2.0 * frameWidth)
      
          # Create the outer frame and the hole
          outer = Window.rectangle(p1, width, height, frame.entities, true)
          hole = Window.rectangle(p2, holeWidth, holeHeight, frame.entities, true)
          hole.erase!
      
          # Extrude the window
          outer.pushpull(-thickness)
      
          frame
      end
      
      #-----------------------------------
      # Create a basic window
      def Window.create_window(width, height, type, container)
      
          depth = 3
          outsideFrameWidth = 2.25
          insideFrameWidth = 1.25
          sliderThickness = 1.25
          bHorizontal = (type == 1)
      
          # Create the outer frame
          pt = Geom;;Point3d.new(0,0,0)
          Window.simple_frame(pt, width, height, depth, outsideFrameWidth, container)
      
          # For a component to cut an opening it must have real geometry in it - not
          # just groups, so create the cutting gometry
          Window.rectangle(pt, width, height, container, false)
      
          # Create the two sliding windows
          z = ((depth - (2.0 * sliderThickness)) / 2.0) + sliderThickness
          pt = pt + Geom;;Vector3d.new(outsideFrameWidth, outsideFrameWidth, z)
      
          if bHorizontal
              wh = (width - (2.0 * outsideFrameWidth)) / 2.0
              w = wh + + insideFrameWidth
              h = height - (2.0 * outsideFrameWidth)
          else
              w = width - (2.0 * outsideFrameWidth)
              wh = (height - (2.0 * outsideFrameWidth)) / 2.0
              h = wh + + insideFrameWidth
              pt.y = pt.y + wh
          end
      
          Window.simple_frame(pt, w, h, sliderThickness, insideFrameWidth, container)
      
          if bHorizontal
              pt.x = pt.x + wh
          else
              pt.y = pt.y - wh
          end
          pt.z = pt.z + sliderThickness
          Window.simple_frame(pt, w, h, sliderThickness, insideFrameWidth, container)
      end
      
      #-----------------------------------------------------------------------
      # Prompt for parameters and then insert windows
      def Window.create
          window = Window.new
          definition= window.entity
          Sketchup.active_model.place_component definition, true
      end
      
      # add a menu with the window types
      if( not $windows_menu_loaded )
          UI.menu("Tools").add_item("Windows") { Window.create } 
          $windows_menu_loaded = true
      end
      
      #-----------------------------------------------------------------------
      end # module Window
      
      
      posted in Developers' Forum
      S
      scetchnscribble