Deform points individually?

How can i Deform the control Points individually ? I want to give a specific deformation for each point without having to use “List Item” for each individual point. Is there an easy way to do it ?


Biomorpher GH.gh (56.4 KB)

Depends on your point of view: Very easy via code (has to do with swap persistent/volatile data per a given piece of code execution) . If we extend this approach a bit you can have some sort of history of your choices (say “versions”).

Notify if you want an entry level take on that via C#,

So C# is the only solution ? Otherwise with GH i’ll have to select each point individually with List Item ?

I don’t work with components (at all). So I have no idea about attempting to do that sort of stuff without code.

BTW: If you select each pt via some sort of slider … well … you can guess what happens (each execution cancels your previous mod).

Well, try a code untill someone else gives me a direction with a component. But explain me what you did then so i understand it … Or give me a prompt for ChatGPT and i’ll do it myself ?

I hate that thing,

Strategy:

Imagine your data stored in a Parameter (as persistent). That thing is NOT connected via any kind of wire to anything. It’s accessed solely via his Nickname. Now imagine a C# that allows you to select something (say a pt) via some way (say via coord sliders) … and do some mod on it (i.e. change a slider) while having some visual inspection of what are you doing (i.e. the pt moves). Prior doing anything the C# reads the content of the Parameter (i.e. all the presistent data become volatile [as either a List or a Tree] ). That said when you do some action you should have various options on hand like (a) cancel, (b) accept/replace etc etc (plus various other options with regard the whole collection [make a new/delete some/etc]). So if you accept the mod (i.e. accept/replace means store) the C# sends all the data (+ the modified one) to that Parameter (meaning that volatile become persistent) and the whole story repeats.

If later on you store and reopen the def the Parameter is there (cross fingers) and you can continue until the end of Time. If the Parameter is deleted > adios amigos. If some other “floating” (i.e. not connected to anything) Parameter gets the same Nickname … well … don’t do that at any cost.

So … for this case … given your control pts (or anything else) … each time that you want to alter one (accessed by, say, his U/V indices) … you can “see” the Pt (a TextDot is handy for that) and the related coords … then you can see the altered candidate Pt and either accept or reject the store action. Plus you can see on the fly the “impact” - i.e some Surface/BrepFace/Mesh/Whatever … blah, blah. How you may ask. Well … another C# (or several) reads the Parameter (or several) and does a new result.

Piece of cake in fact (not to mention crystal clear [or DeepSpaceStuff]).


1 Like

I get it, but i can’t write in C, so … I’ll wait until someone gives me some help with a component. I think it will be easier.

If you can code … it’s 100 times easier (not to mention faster) than doing anything “comparable” via components (notably if a team is involved (real-life) AND the task/goal has to do with complex data structures (real-life), Clustering (ditto), nested Loops (ditto), Recursion (ditto), nested instance defs (ditto), parallel checks (ditto), Classes + data mining [queries], cats, dogs etc etc). Plus … well … what are you going to do if you want something and that something is not available?

One of the problems with a single set of controls (X, Y and Z sliders, for example) shared by a collection of points is setting slider values to existing X, Y and Z as each point is selected…

You could bake your curves, select one in Rhino and drag any of its control points. But the curves in your GH file have MANY control points!

If you specified some rule or criteria for moving your points, like an attractor, it would make it a lot easier to program. Right now, nobody can tell what it is you want to do.

His request is rather elementary (but 100% alien to the way that GH works … and since people are used to that … they can’t understand what he’s talking about … blah, blah).

In plain English: modify interactively on the fly data.

That’s the Norm in any contemporary AEC Design procedure worth the name: either because of some conflict in Geometry (say clash situations on some rnd truss) OR because of some parallel check (say related with cost, BIM/FEA analysis, HVAC this or that, construction limitations, regulations, variations … blah, blah).

I’m trying to connect the Brep in the file to Biomorpher plugin. But Biomorpher needs inputs with sliders, that’s why i thought to find a way to deform the Brep by using Deform Points component. The deformation i used in the GH file works, but it deforms the brep with to much “unity”. I mean; when using the Z vector, the whole length of the brep is moving up, while i’m looking for something more “regional” with each control points having their own vector height. But for that i need to list every point individually and give them a vector. Is there a faster way ? I have more than 100 control points …

:crazy_face: Religion. :man_facepalming: The OP doesn’t know what he’s talking about, which makes it difficult for anyone else to understand, including you. It’s certainly not “elementary”.

Your curves have 813 control points so the idea of controlling each one individually is nonsense.

How was your brep created in the first place? There are many standard morph tools in GH including Scale NU. Define your goal in less abstract terms.

A problem well stated is a problem half-solved.

– Charles Kettering
Head of research at General Motors from 1920 to 1947