Skip to content

Instantly share code, notes, and snippets.

@eigenhombre
Created February 28, 2018 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eigenhombre/b66534dfb9057532c0b4c8b5f98c0f26 to your computer and use it in GitHub Desktop.
Save eigenhombre/b66534dfb9057532c0b4c8b5f98c0f26 to your computer and use it in GitHub Desktop.
# Name: crowd.rb
# Date: May 27, 2008
# Description: copy selected component randomly throughout an area
# Copyright: John Jacobsen, NPX Designs, Inc.
# http://www.johnj.com
# Permission to use, copy, modify, and distribute this software for
# any purpose and without fee is hereby granted, provided that the above
# copyright notice appears 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.
require 'sketchup.rb'
class Crowd
@@copies = 10
@@size = 100
def Crowd::crowd(number, size)
model = Sketchup.active_model
selection = Sketchup.active_model.selection[0]
entities = model.active_entities
definition = selection.definition
number.times {
x=size*rand
y=size*rand
z=0
point = Geom::Point3d.new(x, y, z)
transform = Geom::Transformation.new point
newcopy = entities.add_instance definition, transform
}
end
def Crowd::crowd_with_prompts
prompts = ["Number of copies: ",
"Size of area"]
values = [@@copies, @@size]
results = inputbox prompts, values, "Copy to Crowd"
return if not results
@@copies = results[0]
@@size = results[1]
crowd(@@copies, @@size)
end
end # Class Crowd
if (not file_loaded?("crowd.rb"))
UI.menu("Plugins").add_item("Copy to Crowd") { Crowd.crowd_with_prompts }
end
file_loaded("crowd.rb")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment