ArrayCrvPLUS v2.0

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.

WORKFLOW
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

OPTIONS MENU:
Notes:
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.
Notes:
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.

ITEM menu:

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 ).

PATH menu:

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.

UTILS menu:


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


33 comments:

Anonymous said...

Great plugin and tutorials.

Thanks a lot for sharing.

Anonymous said...

Thank you so much for sharing this great plug-in.

Anonymous said...

thtat's amazing.
thks 4 sharing.
we all will love you :)

Anonymous said...

Wow, just when I thought it was all done...this is ridiculous!!!!

K4rl33 said...

That's great..!
Thank you very much for sharing..

K4rl33

Corrigible said...

freaking awesome

mario said...

what a great tool

Riccardo said...

Hi
compliments for the plug-in
in my blog http://jewelslab.blogspot.com/
I added 3 simple tutorial on how to use arrayplus in Jewelry
Regards Riccardo

Anonymous said...

Great update thanks!
Feature Request: Make array items scale editable by bounding box dimensions.

Anonymous said...

This is ridiculous! Thanks for creating this...totally awesome, totally tubular

yumyumnOOdle said...

Hi,

Is it possible to use this script to make a roof with tiles ? (even for a newbie like me !)

thx

Anonymous said...

This is a great great plugin!!! ^_^

Autocad said...

Grasshopper....Paneling Tools...Armadillo...ArrayCRVPlus, definitely Rhino is the best.

Anonymous said...

the plugin is a miracle!!Thank you very much for sharing, but i have a problem....I cant see the loft-sweep etc mode.Maybe I am doing something wrong, if it is possible please correct me or suggest me a way to fix it.Thanks in advance

Anonymous said...

I was using surface instead of a curve so my problem fixed,sorry for posting a stupid question, as a newbie.Thanks for sharing once again!

Anonymous said...

Oh my freaking lord. Thanks Jarek!!

Jarek Bieda said...

If it was released on or after August 7th 2009 the plugin should work. If not, you would need to get later SR.

NogeenheervanSurf said...

Nice tool; even works with 5.0!
Great when someone like Jaroslaw share's this kind of work.

Anonymous said...

HI... Im running a 64bits machine, and I have problems with instalation of ArrayCrvPLUS ... Im doing something wrong, is there a 64 bit version???? thanks

Jarek Bieda said...

Are you running Rhino 5 64-bit?
Some of the plugins may not work under this version as of right now. It should be solved by the time V5 is officially released. It should run OK on 64-bit machine running Rhino 32-bit (V4 or V5).

Ariannatashi said...

Hi Jarek,

Just a note to thank you for this wonderful bunch of programming. I have many poor students who have been using it instead of far more expensive programs.
Our only problem seems to be that on 64 bit machines, objects come in with the wrong orientation. If we change the orientation to roadlike and back again, it seems to straighten things out. Not a big problem, really.
Thanks, again.
Steve Workman
sworkman@gia.edu

Anonymous said...

Thanks for so great plugin. I feel
it's really amazing. One stupid question I have now is "How to create an Icon for this tool on the menubar or on my popup menubar instead of typing everytime?

dan said...

Thank you very much for sharing..

Ilya Bourim said...

Thank you for this great plugin. Is there a way to vary the spacing, while keeping the objects the same? To create a gradient of space?

Jarek Bieda said...

@Ilya: it is not possible to make gradual spacing. You can take a look at Armadillo plugin which is a more advanced version of this script - there is more spacing controls (i.e. you can type in/paste spacing values from text file in 'pattern' spacing mode).

step up height growth powder,  said...

It contains truly information. I want to thank you for this informative read; I really appreciate sharing this great.

Rod Read said...

can't wait to see what this does for my airborne wind energy kite designs

Flash developer London said...

This is nice post which I was waiting for such an article and I have gained some useful information from this site.
Thanks for sharing this information.

Leucine said...

Hi,
This one is great and is really a good post. I think it will help me a lot in the related stuff and is very much useful for me. Very well written I appreciate & must say good job.

book hotel in New york said...

All the contents you mentioned in post is too good and can be very useful. I will keep it in mind, thanks for sharing the information keep updating, looking forward for more posts.

Equity Tips said...


I am very much pleased with the contents you have mentioned. I enjoyed every little bit part of it.
It contains truly information. I want to thank you for this informative read; I really appreciate sharing this great.

Bullion Tips said...

I havent any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.

Anonymous said...

Doesn't work with Rhino 5 ?