





=begin

														CREDIT INFO

=end




#     jhs powerbar by  Max Coppoletta  (who actually did quite a bit of coding!)   : ))


#		Toolbar Authors:    Listed per toolbar position 


#     To all of them a big wave of grateful energy!







=begin                                            #  ANTON SYNYTSIA - SOFTEN EDGES
=end

# ------------------------------------------------------------------------------
#
# **AMS Soften Edges**
#
# Allows you to soften and smooth edges with extended options.
#
# Usage
#   Select entities you want to smooth and apply the menu option.
#
# Access
#   - (Menu) Plugins ? AMS Soften Edges
#   - (Edit Context Menu) ? AMS Soften Edges
#
# Version
#   1.0.0
#
# Release Date
#   November 06, 2014
#
# Author
#   Anton Synytsia
#
# ------------------------------------------------------------------------------



=begin                                            #  MATT NOBLET - SOFTEN UNSOFTEN
=end

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

#    Copyright (C) 2008 Matt666  and CadFather V1.2
#    03/01/2009
#    This program is free software: you can gna gna gna gna... 
#   
#    CadFather's note:   "Matt, you're mad...!"   ; ))

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




=begin                                        JULIA CHRISTINA ENEROTH - UPRIGHT EXTRUDER
=end


#Eneroth Upright Extruder

#Author:	Julia Christina Eneroth, Eneroth3, eneroth3@gmail.com

#Usage
#	Menu: Plugins
#		Upright Extrude: Extrude selected face along selected edges

#Copyright Julia Christina Eneroth (eneroh3)
#	Free to use both professional and unprofessional.
#	Free to spread as long as credit goes to me.

#Known bugs and issues
#	*	Profile's with in corners is constant but between corners the sides aren't parallel (unless the angle is 0 on both sides).
#		Scale profiles before drawing them

#Changelog
#	1.0.0 2013-05-30
#		*First release
#	1.1.0 2013-06-02
#		*Fixed small icons
#		*Extrude closed paths
#		*Fixed co-planar face bug. Use classify_point instead of comparing vectors to see if faces really really really are co-planar.
#	1.1.1 2013-06-06
#		*Called tb.show to fix hidden toolbar issue.
#		*Script cannot extrude along edges binding extrusion face. Just ignore these edges instead of raising an error and aborting.
#		*Fixed back face problem.
#		*Soften/Smooth edges extruded from curves
#	1.2.0 2013-08-06
#		*Using Sketchup::Face::PointNotOnPlane instead of 32 to classify points
#		*Cleaned up code
#		*Use point along path closest to extrusion as start point for closed path, not closest corner
#		*parallel sides of extrusion rather than fixed with in corners
#	1.2.1 2012-12-15
#		*Moved start_operation and commit_operation to userInput function to make extruder work better when called from other plugin
#   *Spelling
#   *Can now be loaded from other folder than plugin default

#Load the normal support files







=begin                                            ITHIL - FACE FINDER
=end

# no info in the original script but, plgin made by Ithil

#   http://i-t-h-i-l.deviantart.com/
#   https://vk.com/id979360




=begin                                            SDMITCH - OFFSET EDGE
=end

#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#------------------------------------------------------------------------------------------------
# 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.
#------------------------------------------------------------------------------------------------
# IT WAS CREATED AND TESTED IN A WINDOWS ENVIRONMENT ONLY AND MAY NOT FUNCTION ON A MAC.
#------------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
#------------------------------------------------------------------------------------------------
#    Name:	Offset Edge
#      By:	sdmitch
#   Usage:	To offset a single edge by a defined or Keyed in value.
#		 Note:	
#			
#    Date:	Feb 2013
#------------------------------------------------------------------------------------------------


=begin                                            DIDIER BUR - EXTRUDE LINE TOOL
=end

# Copyright 2004, @Last Software, Inc., modified by D. Bur and TIG

# 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        :   extrudelinetool
# Description :   A script to extrude lines along a vector given with 2 clicks
# Menu Item   :   Plugins->Extrude lines (vector by 2 points)
# Usage       :   Select lines, select "Extrude lines (vector by 2 points)" from the plugins Menu,
#                 then click 2 points on your model
# Date        :   10/18/2004
# Type        :   tool
#-----------------------------------------------------------------------------
### TIG tweaked so faces orient and smoothness and curves kept etc...



=begin                                        RICK WILSON - EXTRUDE ALONG PATH
=end


#    CAN'T FIND ANY INFO - OR EVEN THE SCRIPT ON LINE.  THIS IS FROM AN OLD ARCHIVE AND REMEMBER IT BEING RW's


=begin                                        RICK WILSON - PIPE ALONG PATH
=end

# PipeAlongPath
# TIG (c) 2005 - 2014
# Description : Creates circular faced 'followme' pipe extrusions along a path - 
# Use it to make pipes, ducts etc, starting from a selection of joined edges
# Usage : 
# Select joined lines, arcs, circles, curves, etc.
# Select "Pipe Along Path" from the Plugins menu. 
# In the dialog choose:-
# Outside diameter:   in current units or use suffix for other, default 110mm/4"
# Inside diameter:    in current units or use suffix for other, default 110mm/4"
# Number of segments: default 24
# Cpoints?:    [Yes/No, default=true to add cppoints at the pipe's vertices]
# Cline layer: [layer for the path, default="XCLINE", make blank for 'none']:  
# In group?:   [Yes/No to move selected path into pipe's group, default=true]
# OK.  
# Last used setting are remembered across sessions.
# The pipe-extrusion is made*.
# The pipe-extrusion is grouped so it does not interact with adjacent surfaces - 
# afterwards just explode it if appropriate.
# Edit it to intesect with model and tidy up to make tees etc...
# The pipe also has construction points added at vertices if you set Cpoints=true.  
# These can be used for snapping, if not wanted 'erase construction geometry' 
# will remove them globally or just within a group that you are editing.
# One Undo to remove the construction points, a second to Undo the Pipe itself.
# The default for extrusion face segments is 24, the minimum is 3.
# The alignment is always 'Centroid' - along the pipe's centre line.
# The diameter is always measured square to the vector of the 
# first path's line.  A diameter that is less than the length of pieces of path 
# edge might give correct but unexpected extrusions, which might need manually 
# tidying...
# Closed loop paths are fully extruded in a loop.
# Multiple arcs and other complex 3D paths might give unexpected results.  
# Note that SketchUp can't handle very small faces in its FollowMe mode - so any 
# Arc bends of 8" radius or less that have the same radius for the pipe (o/d) 
# applied will almost certainly cause a crash / "bug splat" and are trapped out 
# BUT note that similar radii in 'welded' Curves are NOT easily trappable and so 
# they may always cause a crash with a "bug-splat", so avoid using these type of 
# path with small radii bends/pipes - or you can keep it but use 'scale' as
# explained below...
# IF you must have this matching small diameter pipe and arc or welded elbow 
# bends then to get it to work you can make the path a 
# group, scale it by a factor so it's larger (say x10), then 
# edit it and use this tool within it applying the diameters x10, 
# after it's all made scale the group back down by x0.1 and 
# explode it and it'll all be OK.

# Both diameters cannot be zero and will return an error.
# If one of the diamaters is zero then you get a 'tube' rather 
# than a pipe.
# If the diamaters entered are equal the inside one is taken as 
# zero and you will then get a 'tube' rather than a pipe.
# If the inside's diameter is greater than the outside's then 
# they are swapped.
# A branching path returns an error as 'FollowMe' can't decide 
# which path to take.
# Selected edges that are not joined (i.e. they don't all have 
# common ends-starts) will not be extruded - only the first edge 
# or joined group of edges will extrude.

# Version :
# 1.0  18/9/5	first release.
# 1.1  18/9/5	visual segmenting of arced sections etc addressed.
# 1.2  9/2/6  centrepoints added at vertices of non-looped paths,
			# occasional reversed faces on single 'up' line fixed.
# 1.3  16/2/6 undo of cpoints fixed, diam <8" with matching arc 
			# elbow bend radius bug splat trapped (but not curves).
# 1.4  2/5/6	group name -> OD=xx ID=nn with " or mm as units.
# 1.5  3/5/6	Transposed ID/OD fixed (sorry!).
# 1.6 12/5/7  @error=0 ### fix
# 1.7 20121019 Rehashed to modern standards, dialog based options to add cpoints 
			 # at nodes, put selected path onto a specified layer and move the 
			 # path inside the pipe-group.  
# 1.8 20130115 Fixed typo glitch when path was lone vertical downward line.  
# 1.9 20140303 Lockup weirdness trapped.  Any units format now allowed.  
			 # Last used units remembered across sessions and globally.  
# 2.0 20140304 Lockup skewed warning improved. Graphics glitch fixed.  
			 # Name reflects if interal_diam == 0.  




=begin                                        DIDIER BUR - LINES TO TUBES
=end


# Name:           line2cyl
# Author :        Didier Bur
# Description:    Create cylinders with selected edges 
# Usage:          select lines, enter diameter and precision
#                  
# Type:           Tool
# Date:           2005,13,01
# Revised:        2005,17,01: add the arcs,curves, and circles followme's



=begin                                       RICK WILSON - COPY ALONG PATH
=end


# = pathcopy.rb
# Copyright 2005-2014 by Rick Wilson - All Rights Reserved

# == Disclaimer
# 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.

# == License
# This software is distributed under the Smustard End User License Agreement
# http://www.smustard.com/eula

# == Information
# Author:: Rick Wilson
# Organization:: Smustard
# Name:: PathCopy
# Version:: 2.200
# SU Version:: 4.0
# Date:: 2014-03-10
# Description:: copy group or component along a path

# Usage::
# * 1:: Install into the plugins directory or into the Plugins/examples directory and manually load from the ruby console "load 'examples/weld.rb'"
# * 2:: Run the script (Plugins>PathCopy>Copy to Nodes or Plugins>PathCopy>Copy to Spacing) and follow the prompts in the status bar
# * 3:: Selected group/component will be copied along the curve
	
# History::
# * 1.000:: 2005-11-29
	# * first version
# * 2.000:: 2005-12-05
	# * updated; planned improvements include specifying distance between copies, specifying a divisor
# * 2.100:: 2005-12-07
	# * implemented specifying distance between copies
	# * fixed bug where groups would not copy/rotate properly
# * 2.200:: 2014-03-10
	# * fixed bug where reversed edges would cause copies to be improperly placed along curve
	# * consolidated both functions (node copy and spacing copy) into a single UI::Command

# ToDoList::
	# * Specify a divisor



=begin                                      SD MITCH - COMPONENT STRING
=end

#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#
# 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:	Component_String
#      By:	sdmitch
#   Usage:	Plugins>SDM Tools>CorG Tool>Component_String
#	 	 Note:	Places selected component(s) along a selected path in random or a fixed sequence.
#						Spacing refers to the distance between components.
#
#    Date:	Dec 2014
#------------------------------------------------------------------------------------------------




=begin                                            JAN SANDSTROM - JS ALIGN 
=end


# 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:           jsAlign.rb 1.6 updated for v2014 compatibility 20140306 TIG
# Author:         Jan Sandstrom   www.pixero.com
# Date:           23 June 2009
# Changes:	Added functionality to also work on groups/components.
# Description:		Use for aligning edges or groups/components.
#                		If using custom value with groups also use Align Group's: Max, Min or Center.




=begin                                      SD MITCH - COMPONENT ARRAY
=end


#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#
# 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.
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN WAS DEVELOPED AND TESTED UNDER WINDOWS VISTA ONLY AND MAY OR MAY NOT WORK ON A MAC. 
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
# -----------------------------------------------------------------------------------------------
#    Name:	Component Array
#      By:	sdmitch
#   Usage:	Place selected component on a equilateral triangular or rectangular grid
#	 	 Note:	Faces do not have to be on the XY plane.  Option to group array and erase face.
#			
#    Date:	Sep 2011
#------------------------------------------------------------------------------------------------



=begin                                            RICK WILSON - DROP CG
=end		


# = dropGC.rb
# Copyright 2012-2014 by Rick Wilson - All Rights Reserved

# == Disclaimer
# 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.

# == License
# This software is distributed under the Smustard End User License Agreement
# http://www.smustard.com/eula

# == Information
# Author:: Rick Wilson
# Organization:: Smustard
# Name:: dropGC.rb
# Version:: 1.0.3
# SU Version:: 4.0
# Date:: 2014-06-20
# Description:: drop selected groups/components to the first face below each instance

# Usage::
# * 1:: Plugins>DropGC or right-click>DropGC or SmustardToolbar>DropGC activates the tool

# History::
# * 1.0.0:: 2012-02-20
	# * first version
# * 1.0.1::	2014-05-02
	# * updated the SmustardToolbar reference from a global to a Smustard module constant
# * 1.0.2:: 2014-05-16
	# * version 1.0.1 works in SU 2014, but a code block didn't work in earlier versions (due to changes in Ruby).  Fixed this to work in all versions.
# * 1.0.3:: 2014-06-20
	# * fixed a typo in my previous fix
# * 1.0.4:: 2014-10-15
	# * changed .count to .length for compatibility with earlier versions of SketchUp (pre-2013)

# ToDoList::
	# * add options & settings for: show z offset from face below (or from xy plane if no face below)
	# * add options & settings for: use hidden geometry (SU8m1 and up)
	# * add options & settings for: drop by set amount
	# * add options & settings for: drop to Z
	# * add options & settings for: drop to selected
	# * add options & settings for: drop to selected (virtual extended plane)
	# * add options & settings for: drop to intersection plus additional offset up or down
	# * add options & settings for: keep G/C above face below
	# * add options & settings for: match G/C XY plane to intersected plane below




=begin                                           TIG - MIRROR
=end	


# Name :          Mirror
# Description :   Mirrors Selection at Point, Line or Plane
# Author[s] :     From an original idea by Frank Wiesner: 
#		          but from v2.6 onwards it's been fully TIG tweaked, 
#                 and completely updated and rewritten...###
# Usage :         1. Make Selection (Any type[s] of Entites are allowed)###
#                 2. Select 'Mirror Selection' from Plugins Menu 
#					 or from the equivalent on the Right-Click Context-Menu
#                    or using your favorite ShortCut Key [e.g.Shift+R] ###
#                    or from the 'Mirror' Toolbar [this toolbar will be  
#                    available for activation from the View>Toolbars 
#                    Menu IF the button icon image MI.png is in the 
#                    same folder as Mirror.rb file (usually Plugins)] ###v3.2
#                 3. If there's no Selection then dialog informs you ###
#                 4. Pick a Point and RETURN to Mirror at the Point
#                 5. OR Pick a Second Point and RETURN to Mirror at the Line
#                 6. OR Pick a Third Point to Mirror at the Plane [usual]
#                 7. Final Option is Erase Original ? Yes/No ###
#					 If Yes then Highlighting of Selection passes to Copies
# Type :      	Script - Mirror.rb
# History: 
# 3.9  20131128 Future proofed required files.
# 3.8  09 Aug 2012 ### TIG, locked objects are no longer mirrored, code tidying.
# 3.7  05 Feb 2012 ### TIG, mirroring glued instances now [re]glues them.
# 3.6  13 Dec 2010 ### TIG, group.copy methods recast to avoid glitches.
# 3.5  10 Nov 2010 ### TIG, context-menu re-added.
# 3.4  9 Nov 2010 ### TIG, Recoded to avoid clashes and crashes...
# 3.3  3 Oct 2010 ### TIG, togglewindows catch for Outliner added and set zipped.
# 3.2  19 Feb  2010 ### TIG, optional toolbar added
#      [this doesn't load is the MI.png file is NOT found].
# 3.1  21 Feb  2007 ### TIG make_unique tries to avoid rare bugsplats.
# 3.0  05 Aug  2006 ### TIG, Ending rewritten to avoid rare bugsplats.
# 2.9  03 Aug  2006 ### TIG, Start:commit loops to avoid rare bugsplats.
# 2.8  26 July 2006 ### TIG, re-tweaked - Rewritten to be MUCH simpler.
#      Mirroring of ANY Entity Selection works properly.
# 2.7  23 July 2006 ### TIG's second tweak - Rewritten generally.
#      Now processes Multiple selections of Groups and/or 
#      Components, but warns if any 'loose' (UnGrouped) 
#      Faces in Selection as they might lose any RePostioned 
#      Texture data, interfere etc.  
# 2.6  22 July 2006 ### TIG first tweak ### - Context menu added IF ONE 
#      group/compo.  
#      Warns about selection IF NOT ONE group/compo.  
#      Materials now preserved in mirrored copy BUT you will 
#      need to group selection to preserve material positioning 
#      - although this is define-able it is not find-able from 
#      the orignal face info !  
#      Final option to Erase of Original Group/Compo.
# 2.5  (8.Jul.2oo5)  - bugfix: faces with holes reduce now to a single face
#      - major code rewrite (dropped @clondedObject hash, heavy 
#      use of groups during construction,...
#      - more redundant constructions, but seems to be more robust
#      - WARNING: POLYGONS DO NOT WORK VERY WELL
# 2.4  (5.Jul.2oo5)  - all unnecessary edges created by the add_faces_from_mesh() 
#      method are erased! faces with holes mirror now perfectly.
# 2.3  (4.Jul.2oo5)  - fixed "mirror at plane" error
# 2.2  (2.Jul.2oo5)  - works in group editting mode - prevents picking of identical points
# 2.1  (1.Jul.2oo5)  - fixed "undo group" bug - code cleanup
# 2.0  (30.Jun.2oo5) - new tool-like interface
# 1.4  (29.Jun.2oo5) - arc bug fixed - code simplified (clone_selection() removed)
# 1.3  (24.Jun.2oo5) - can handle faces with holes in it (although more edges are drawn than nessesary) - correct orientation of mirrored faces - supports arcs (at least works for circles), curves and groups
# 1.2  (20.Jun.2oo5) - axis and origin selection algorithm does not rely on tool tips any more.
# 1.1  (19.Jun.2oo5) - fix coplanar point bug - better tooltips - supports mirror at lines (edges, axis, construction lines) - mirror-at-plane code simplified
# 1.o  (10.Jun.2oo5) - first version

			 

=begin                                              TIG - WELD
=end

# Copyright 2004-2005 by Rick Wilson [in parts], and 2012-2013 (c) TIG.
# 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:-
# TIG-weld.rb

# Description:-
# Joins selected edges into a 'curve' (~"polyline").

# Author:-
# TIG - based somewhat on RickW's 'weld.rb'...
# [but it has no close/face options, and also made suitable to be called from 
# other methods].

# Usage:-
# Make a selection which includes the edges to be joined.
# Run the script from the menu:
# Tools > Weld
# or type in the Ruby Console:
# TIG.weld +<enter>
# or [recommended] set up a shortcut-key, say J [==Join?]

# Selected edges will then be 'welded' into a curve wherever possible.
# Disconnected edges or branching edges might give unexpected results.
# A curve will be split where any 'branching' edge intersects it.
# The process is one step undoable.
# To use the tool run within another method include...
# require('TIG-weld.rb')
# and later in the code use
# TIG.weld(true)
# to supress 'undo' complications. 
# It returns an array of the welded edges or 'nil' if none.
# The calling method must make a selection of potential edges to 
# process, even if inside another context; perhaps iterated in turn, 
# see scripts like "TIG-weldall.rb" for an example of this...

# Version:-
# 1.0 20120305 First public issue.


=begin                                            JAN SANDSTROM - JS MOVE
=end


# Name: 		jsMoveTool
# Author: 	Jan Sandstrom   www.pixero.com
# Description: 	Moves a selection with the arrow keys.
# Usage: 	1. Select a object or group of objects. 
# 		2. Select the JS MoveTool and enter a distance in the VCB. Press Return/Enter.
# 		3. Now move with arrow keys.
# 		4. Use Alt + Up/Down to move in Z axis.
# 		5. You can enter a new distance at any time.
#
#		Version 1.1 
#		Added:
#		6. Press Ctrl (Apple Key on Mac) for distance * 0.1
#		6. Press Shift for distance * 10
### 20140319 1.2 TIG updated to suit v2014 & in JS module




=begin                                            DIDIER BUR - ALIGN TOOL
=end	

# Copyright 2007, Didier Bur
#
# 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 : Align Tool
# Description : A tool to create translate and rotate a selection of entities.
# Menu Item : Tools / Align
# Usage : 1. Make a selection first
#         2. Click a start origin, X direction, and Y direction
#         3. Click a target origin, X direction, and Y direction
# Date : 08 May 2007
# Type : Tool
# History: 10 May 2007: added a context menu added (align or align group/component)
#                       added the align from group/component axis
#                       supressed confirmation dialog box
#                       Mac problem solved (commit_operation), thanks to R. Wilson
#----------------------------------------------------------------------------






=begin                                        JULIA CHRISTINA ENEROTH - 3D ROTATE
=end


#Eneroth 3D Rotate Tool

#Author:	Julia Christina Eneroth, Eneroth3, eneroth3@gmail.com

#Usage
#	Menu: Tools
#		3D Rotate:	Rotate entities freely around point
#		(I prefer using ALT+Q as shortcut)

#Copyright Julia Christina Eneroth (eneroh3)
#	Free to use both professional and unprofessional.
#	Free to spread as long as credit goes to me.

#Known bugs and issues
#	Can't snap to c-lines in parent drawing contexts or its other children

#Changelog
#	1.0.0 2013-08-05
#		*First release
#	1.0.1 2013-08-09
#		*Fixed error with 4th input point not being selected. turned out tool stopped working either on Sketchup.start_operation or grouping/exploding group.
#	1.0.2
#		*Transparent operations so both rotations can be undone at once
#		*Typos
#	1.0.3 2013-08-15
#		*Fixed edge breaking after rotation in a way that shouldn't cause Sketchup to crash, even with observers attached to the entities
#	1.0.4 2013-08-20
#		*Reinvented edge breaking/splitting since  previous method also could cause the application to crash
#	1.0.5 2013-08-20
#		*Spelling
# 1.0.6
#   *Can now be loaded from other dir than Sketchup's default plugin folder

#Load the normal support files




=begin                                      TBD - ROTIX
=end 

#        Name : Rotix 1.1
# Description : rotate objects with 90, custom and random degrees
#      Author : TBD
#       Usage : select from the Plugins menu, hover mouse over object (SHIFT to add to current selection)
#               and use left/right for 90 degrees, up/down to rotate with VCB value, left click to random rotate
#        Date : 25.Jul.2oo4
#        Type : tool
#    Modified : 19.Aug.2004 by Glenn M. Lewis - hit 'Home' or 'End' key to change the axis of rotation






=begin                                       CADFATHER SCALE ROTATE - WITH CODE FROM TBD RANDOR - ROTIX SCRIPTS
=end 


#        Name : Randor 1.0
# Description : random rotate and scale objects - good for landscaping
#      Author : TBD
#       Usage : Plugins | [TBD] Randor
#        Date : 15.Jul.2oo4
#        Type : tool


=begin                                       SDMITCH - PROXIFY (CADFATHER TWEAKS) 
=end 
#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#------------------------------------------------------------------------------------------------
# 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.
#------------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
#------------------------------------------------------------------------------------------------
# IT WAS CREATED AND ONLY TESTED IN A WINDOWS ENVIRONMENT AND MAY NOT FUNCTION ON A MAC.
#------------------------------------------------------------------------------------------------
#    Name:	Component by Proxy
#      By:	sdmitch
#   Usage:	Context Menu
#		 Note:	
#			
#    Date:	Nov 2014
#------------------------------------------------------------------------------------------------




=begin                                       CADFATHER - COMPONENT SWAPPER
=end 


#  Grandmaster of one neuron coding!   



=begin                                       CHRIS PHILLIPS (TIG) - SKETCHY FFD
=end 


#SketchyFFD
#Copyright 2010-2013 Chris Phillips

#Update 4 Feb 2010 by Glenn Babcock
#change log
# - fixed issues with control point groups and dicegroups sometimes being out of position

#Update 2 Feb 2010 by Glenn Babcock
#change log
#  - added feature that combines move and transform into one operation so it can be undone all at once
#  - disabled screen refreshes during heavy operations to improve performance
#  - reorganized code
#  - began to rationalize variables
#  - added $debugFFB global

#Update 1 Feb 2010 by Glenn Babcock
#change log
#  - fixed bug where control group sizes could not be changed or where all dimensions had to be equal

### 20110810...
### TIG tweaked to module and observers sorted and $ > @@ etc...
### 20130203...
### TIG NxN issues with NaN & Infinity fixed, when selected group is 2d & height=1
### NxN now remembers last used values for w/d/h/subdivide...




			 
=begin                                            SD MITCH - MESH MAKER
=end		 
			 


#####################################################################  MESH MAKER

#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#------------------------------------------------------------------------------------------------
# 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.
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN WAS DEVELOPED AND TESTED UNDER WINDOWS VISTA ONLY AND MAY OR MAY NOT WORK ON A MAC. 
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
# -----------------------------------------------------------------------------------------------
#    Name:	Mesh Maker
#      By:	sdmitch
#   Usage:	Creat a regular trianglated network of a given cell size of a selected face
#	 		Rev:	Made cell size a global variable, modified for tilted faces, added angle.
#    Date:	Jun 2011
#------------------------------------------------------------------------------------------------



=begin                                            SD MITCH - SUBDIVIDE FACES
=end	




#####################################################################  SUBDIVIDE FACES

#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#
# 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.
#------------------------------------------------------------------------------------------------
# Developed and tested in a Windows Vista environment.  May not function on a Mac.
#------------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
# -----------------------------------------------------------------------------------------------
#    Name:	sub_divide_faces
#      By:	sdmitch
#   Usage:	Divide selected Quad or Triangular faces.
#		 Note:	
#    Date:	Aug 2011
#------------------------------------------------------------------------------------------------


=begin                                            TIG - SPLITUP
=end	
		 
			 
#-----------------------------------------------------------------------
# Copyright 2011-2012 TIG (c)
# 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:
  # SplitUp.rb
# Usage:
  # Splits selected 'quad faces' into the specified number of parts.
  # Use in Ruby Console or other code, thus:
  # SplitUp.new(2) [or more sloppily SplitUp.new 2]
  # as shown here 2 is the number of divisions wanted.
  # OR use Tools > Split Tools... > submenu item SplitUp and enter the 
  # division number in the dialog [default=1 >> NO splits]
  # [The Plugins menu item is now disabled by default from v1.5 but see end 
  # of the main code IF you want to re-enable it...]
  # If any selected face is not a quad OR a quad with one quad-hole - 
  # then the face and probably all of its connected neighbours should first be 
  # 'Quadrilateralized' - i.e. split up into quads - a message tells you this, 
  # but you may still continue...
  # New edges are softened/smoothed.
  # It returns the number of faces processed and made [n,nn]
  # It's one step undoable.
# Donations:
  # By PayPal.com to info @ revitrev.org
# Version:
  # 1.0 20110717 First issue.
  # 1.1 20110718 Now works on quads and quads with one quad hole.
               # Plugins menu item and dialog added.
  # 1.2 20110718 Softened/smoothed new edges.
  # 1.3 20110719 Glitches with smoothing etc fixed.
  # 1.4 20111111 Overhauled and less error prone.
  # 1.5 20120219 Plugins menu item disabled; 
               # now in Tools > Split Tools submenu.		 
			 
		


=begin                                       SD MITCH - CONNECT GUIDE POINTS
=end

#------------------------------------------------------------------------------------------------
# Permission to use, copy, modify, and distribute this software for 
# any purpose and without fee is hereby granted.
#------------------------------------------------------------------------------------------------
# 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.
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN WAS DEVELOPED AND TESTED UNDER WINDOWS VISTA ONLY AND MAY OR MAY NOT WORK ON A MAC. 
# -----------------------------------------------------------------------------------------------
# THIS PLUGIN IS ANOTHER FIGMENT OF MY IMAGENATION AND IS NOT BASED ON OR COMPLY WITH ANYTHING! 
# -----------------------------------------------------------------------------------------------
#    Name:	Connect Guide Points
#      By:	sdmitch
#   Usage:	Connect guide points defining a profile of an object.
#			Note:	Profiles must be selected one at a time.
#			
#    Date:	Jun 2012
#------------------------------------------------------------------------------------------------





=begin                                           TIG - ADD VERTEX PLUS
=end
	 
			 
# Copyright 2007-2013, TIG (c)

# Permission to use, copy, modify, and distribute this software for           
# any purpose and without fee is hereby granted, provided that the       
# 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: AddVertex+.rb

# Usage: Menu: "Add Guide-Point"
# Marks All Vertices [if any] in PreSelection with Guide-Points.
# Then Adds Guide-Point at the Picked Point on Edge, Face, cLine, 
# Groups/Components etc, using normal inferences.
# Hold Key to Modify [in Context]: SHIFT+Edge=Split_Edge & ALT+Face=Split_Face.
# Undoes each step.

# Version:
# 1.0 20070331 First Issue.
# 1.1 20070331 Tool Tips Added.
# 1.2 20070401 Edge+Shift=Split-Edge, Face+Alt=Split-Face. Renamed in menu and class.
# 1.3 20070403 Key mapping now allows for Macs too.
# 1.4 20131017 Reissued, modularized, renamed "Add Guide-Point"... 
			 




=begin                                            THOM THOM - COMPS 2 POINTS
=end

#-----------------------------------------------------------------------------
# Version: 1.0.0
# Compatible: SketchUp 7 (PC)
#             (other versions untested)
#-----------------------------------------------------------------------------
#
# CHANGELOG
# 1.0.0 - 30.08.2010
#		 * Initial release.
#
#-----------------------------------------------------------------------------
#
# Thomas Thomassen
# thomas[at]thomthom[dot]net
#
#-----------------------------------------------------------------------------





=begin                                           JIM FOLTZ - DAN RATHBURN
=end



#####################################################################   VARIOUSBITS

#  Some of the toolbar code is from the tweaked script by DAN RATHBURN and JIM FOLTZ 



#  ==========================================================================
#
#  Custom Toolbars Extension Registration Script
#
#  by Jim Foltz, <jim.foltz@gmail.com>
#
#  Version : 1.2.0  (patch)  :  by Dan Rathbun
#  Release : 2011-02-15
#
#  Version : 1.3.0 Jim Foltz
#  Release : 2011-09-17
#
#  --------------------------------------------------------------------------
#  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.
#  ==========================================================================





