Requires Rhino 4.0 SR4 ( 07 August 2008 ) or higher.
ArrayCrvPLUS enables new ways to distribute items along path curves or path curves on surfaces ( polysurfaces, meshes ). It will array any number of items along any number of curve paths. Parameters can be adjusted with preview functionality.
In addition, while arraying curves or points, ArrayCrvPLUS can automatically create Loft/Sweep1 surfaces or InterpolatedCurves based on created array of profile items.
v2.0 is significant upgrade from v1.0 ( see the old version here ).
ArrayCrvPLUS Basics Overview ( more videos at the end of this post )
DOWNLOAD AND INSTALLATION:
( if you have older version of ArrayCrvPLUS installed, remove it first )
Download, UnZip anywhere and drag-and-drop 'ArrayCrvPLUS.rhp' and 'ArrayCrvPLUS.tb' into any Rhino viewport. Once installed, new command: ArrayCrvPLUS will become available.
1) select Item to array ( Item is a collection of objects )
2) pick BasePoint ( skip to use BoundingBox center )
3) select PathCurve(s)
4) select number of items per path or:
- FromPoints > select points on path curves for item count/spacing/placement.
- FromEditPoints - PathCurves' EditPoints will be used for item count/spacing/placement.
Note: in both cases the points will be automaticaly sorted and assigned to apropriate PathCurves
5) select BaseSurface(s) - Select Surfaces, PolySurfaces or Meshes as a base geometry for Item orientation - skip to use curves only
1) All submenus can be accessed via Right-Click PopUp menu as well as regular command line.
2) ArrayCrvPLUS Options mode is transparent - most of the Rhino commands can be activated during the ArrayCrvPLUS script runtime.
COUNT - adjusts item count per path curve.
Count is Disabled while in FromPoints or FromEditPoints mode.
SCALING - here the ScaleFactor of each individual item in the array can be adjusted. ArrayCrvPLUS will use ScaleNodes and linear interpolate the numbers between them. Initially there is only 1 ScaleNode. Start node can not be removed. ScaleNodes are indicated in red while ScaleFactors are cyan color. You can pick any item and assign ScaleNode - it will be used to calculate the incremental item scale. It can also be removed anytime. While EnableNonUniform is selected, you will be able to enter separate values for X,Y and Z scale factors ( disabled at start ).
Note: You can switch ScaleNodes visibility with: Utils > ShowNodesOnly ( red nodes only will be shown if active ) .
SPACING - ArrayCrvPLUS handles spacing in different way than Rhino Array commands. Item spacing is based on its size ( World_X dimension ). Spacing=0 means items will be palced next to each other "touching", while higher numbers will keep indicated spacing consistent between items ( even if their scale varies ). By default Spacing is set to 'FIT'- items arrayed along entire PathCurve length.
1) Item dimension can be overriden by accessing Item > Custom Size submenu.
2) Spacing can be scaled along with item scale if Utils > Scale Spacing is enabled.
3) Spacing value must be > 0 for items with "0" World_X dimension.
4) Spacing is Disabled while in FromPoints or FromEditPoints mode.
ROTATION - controls rotation of Item about the PathCurve. StartAngle and Angle can be adjusted here. EndAngle or Incremental modes are available.
OFFSETS - controls offset of Item from PathCurve or BaseSurface along normal direction.
Note: Offsets can be scaled along with item scale if Utils > Scale Offsets is enabled.
PROFILES menu - ArrayCrvPLUS can create new geometry from arrays of Items. This menu is available only if Curves or Points are part of Item's objects set. Loft/Sweep surfaces can be created from Curves and InterpolatedCurves from Points.
Note: If more that 1 item is defined, the order of item's objects picking matters for the proper Profiles continuity; closed and open curves can not be mixed.
Loft - creates Loft surface from Profile curves
Sweep1 - created Sweep1 surface from Profile curves.
Note: use single profile ( count=1 ) sweeping along segmented path to keep the profile polysurface connected.
InterpCrv - creates InterpolatedCurve from Profile points.
Loft Type - Normal, Loose, Straight, Tight and Developable loft types are available.
Curve Degree - InterpCrv degree 1 or 3 are available.
Cap - while enabled, Loft/Sweep surfaces will be capped if possible.
LoftPattern/CurvePattern - defines the pattern of profile pairs to create profile geometry between. For example: T,T,F ( True, True, False ) will create loft from profiles 1-2-3, leave a gap between 3-4 and continue with loft between 4-5-6 and so on.
BasePoint - prompts for Item's basepoint.
Pick Item - redefines Item ( new set of objects for Item can be selected ).
Pick Multiple Items - multiple objects sets can be selected as Items. While first set of object is selected it is possible to distribute all selected objects as separate Items. The order of objects picking determines profiles continuity/availability for curves and points.
Item Order - only available if multiple items are defined. Allows to redefine item distribution order or set it to Random.
Custom Size - allows to redefine Item's World_X size ( this dimension determines the Spacing calculations ). By default, Item Size is derived from its bounding box World X dimension. It can be adjusted here to enchance the item spacing or overlaping control.
Layer Inheritance - Item's layer can be set to 'by Item', 'by Path' or 'Current'.
Color Settings - 2-Color gradient can be assigned to Items in arrays. Gradient colors can be adjusted and applied to ObjectColor, MaterialDiffuse Color, Both or disabled ( default ).
Match Properties - prompts to pick source PathCurve and applies its selected properties to destination PathCurves.
Note: For faster workflow with set of path curves, one curve array can be tweaked and the final effect can be applied to all other paths via Match Properties.
Reverse - flips selected PathCurves.
Ends Adjust - allows to readjust the start and end points of array within the PathCurve.
End Adjust is Disabled while in FromPoints or FromEditPoints mode.
Randomize - random factors can be applied to transform properties ( Scale, ScaleX,Y,Z, Rotate X,Y,Z and Offset X,Y,Z ). Min-Max values or ValueSets to randomly choose from can be defined. Random factors are applied on top of main transforms and can be removed anytime.
Control Curve - ArrayCrvPLUS implements the idea of "ControlCurve Graph". Curve objects can be used to control properties of Items in arrays ( Scale, ScaleX,Y,Z, Rotate X,Y,Z and Offset X,Y,Z ). For each PathCurve and each property the ControlCurve can be assigned and its Min-Max values defined. Transformations applied via ControlCurves will be applied on top of main transforms and can be removed anytime.
Note: ControlCurve object can be any Curve in WorldXY plane that represents proper function graph ( for each X value only 1 Y value is possible )X represents PathCurve parameter range and Y is the property value.
Style Manager - from here the ArrayStyles can be saved, loaded or deleted. Array style can be saved into .ini file with all properties and loaded/applied in next ArrayCrvPLUS session or another Rhino session to selected PathCurves.
Show Nodes Only - while ON, only the Red ScaleNodes will be visible for editing Scale.
Command Mode - ArrayCrvPLUS main Options mode is transparent - most of the Rhino commands can be run during the ArrayCrvPLUS script runtime. However some commands like Scale, Rotate and Offset will collide with menu items and will not work. Command mode takes care of this limitation.
Inside command mode SelectionMode and Update Array ( per PathCurve or All ) are available.
Note: It is possible to add,delete or modify geometry while in ArrayCrvPLUS command. Modifying or deleting some objects that are part of the solution can result in Errors.
Scale Offsets - while ON, offset value will be scaled based on Item scale.
Scale Spacing - while ON, spacing value will be scaled based on Item scale.
Progress Preview - enables viewport redraw after generating array on each PathCurve. While disabled, redraw is turned off until entire solution is generated ( faster ).
Name Items - enables Item's object naming. Name format: [ ABCDEF_pN_iN_nN ] where ABCDEF is unique ID randomly generated per each script run.pN - path#, i# - item#, nN - object in item#. This naming format enables easy object selection with Rhino SelName * filters for further processing.
Roadlike World - enables Item roadlike orientation. World_Z (Up) orientation will be unaffected.
Roadlike CPlane - enables Item roadlike orientation. CPlane_Z (Up) orientation will be unaffected
CREATE - "bakes" the array(s). If Profiles geometry was created the option to delete profile curves/points will be available.
ArrayCrvPLUS - Multiple Items and Custom ItemSize example
ArrayCrvPLUS - Control Curves example
ArrayCrvPLUS - Loft Pattern example
ArrayCrvPLUS - Multiple Surfaces in FromPoints Mode example
ArrayCrvPLUS - Randomizers example
ArrayCrvPLUS - Style Manager example