How to identify objects after unrolling?


#1

Hi there,

I’d like to use Rhino.Command “_unroll…” to unroll surfaces and some geometry on it. I found out, that it’s possible to unroll surfaces with surfaces and points (no pointclouds, even if the _unroll command accepts them by manual selection?!)
Now my problem is, that all objectproperties like names, colors, layers and so on gets lost. I need a possibility to identify unrolled geometry by comparing it with the original unrolled…

Heiko


#2

What you probably want to do is run your unroll inside a loop - that is to say one iteration for each object unrolled. That way, while still inside the loop, you can extract relevant info from each input object (name, layer, color, etc.) and re-attribute it to the unrolled objects, then loop on to the next object…

HTH, --Mitch


#3

hello saur,

thanks for your reply. i thought about that too, in that way i had to unroll every surface several times. i’m looking for a more time-saving method.
it seems, that information only gets lost for points on surfaces. of course, i need to unroll points


#4

Hmm, I don’t understand why… --Mitch


(Willem Derks) #6

Hi Mitch and @Pascal,

The problem is that Unrolling points on a surface will create the points yet they do not retain any attributes to link them to the original:

This seems indeed to only apply to points.

-Willem


#7

Yes, this should be fixed… However, as a workaround, I was simply suggesting that you could re-apply the attributes desired if you unroll one object at a time within a loop:

Get objects
For each object in object_list:
    Get attributes (object)
    Rhino.Command ("Unroll...")
    LCO=Rhino.LastCreatedObjects()
    Apply attributes to LCO
    # Possibility to filter for types of objects in LCO (surfaces, curves, points)

–Mitch


#8

ah, thanks mitch. now i understand. the objectarrays orders before and after unrolling keeps the same. nice.


(Willem Derks) #9

This is why I replied with the way points are unrolled.
It means each point needs to be unrolled separately along with the surface.
Thus for say 25 points you need to perform 25 unrolls.
I think that is where Heiko’s remark came from when stating:

Unless it’s absolutely certain the points go in the same order as they come out.

-Willem


(Willem Derks) #10

Does it? Do test it as there is no way to be certain unless a developer can chime in and check how the code operates.

-Willem


#11

OK, I guess I’m just missing the point here (literally)… I can unroll any number of points with a surface or polysurface. I just assumed that all that is necessary was to re-attribute a name, color, layer to all the points so produced, not necessarily have a correspondence between the original and the unrolled points.

If every point has a unique name, and those need to be retained, what can be done in the script is first convert them to text dots, unroll those (the text comes with), then reconvert to points and attribute the dot text as a name to the point…

–Mitch


(Willem Derks) #12

BAM! thats it
I was to quick to think of no easy workaround.

-Willem


(Pascal Golay) #13

Got that, thanks.

http://mcneel.myjetbrains.com/youtrack/issue/RH-28773

-Pascal