Block instance and master refuse to change colour when change object layer is done


#1

Hi
V4
created a circle on an orange layer away from my subject, made it a block (block command)
copied it to my aircraft and used array, then grouped the circles of the array and placed that on a different layer.
It refuses to change colour.

aha…I bet when I move the master circle to that layer itr will…

No !

Properties shows master and copies on the purple layer but they still have the orange colour of the original layer.

I need to be able to minimise memory by using blocks and move instances between layers and have the colours of the layers get applied to the instances.

What is going on ?

I have it set to colour by layer, my normal way of working.

Steve


#2

Hi Steve,

if you create a block from your curve, the curve will stay on its layer. The layer is “freezed” inside the block definition so it is still possible to create blocks with content residing on different layers. The block instance itself can be placed on different layers too without affecting the layer(s) of it`s content geometry. This might look confusing in the first time but is a handy feature when managing large assemblies as blocks. To change the color (by layer) in V4, explode the Block and change the color (or layer), then make a new block with the same name you´ve defined previously.

c.


(Margaret Becker) #3

Set the properties of your pre-blocked objects to “By Parent.” Look at the Help topic for Properties for a discussion of the “By Parent” option.

If an object’s properties are By Parent, the object will continue to draw as if set to By Layer. However, when the object is part of a block, it takes on the properties of the block instance (layer or property).

In other words, if the objects are color “By Parent,” they will take on the layer color of the layer the block is placed on.


#4

Hi,

Understood, cheers.
However, having placed loads of these block instances into my project, how can I get at the pre-block object to do that ?

i.e. How can I get all my instances to change colour per layer they are on now ?

In other words, if the objects are color “By Parent,” they will take on the layer color of the layer the block is placed on.

I created a new circle, on my purple layer, set its properties to By Parent for its colour, then made it a block.
Copied it out and made an array still on the purple layer.
Then placed the array on a different layer but circle colours remain purple.

What did I do wrong ?

Steve


(Mary Ann Fugier) #5

Hi Steve,
You are almost there:

  1. I created a new circle
  2. on my purple layer set its properties to ByParent for its colour,
  3. then made it a block. Copied it out and made an array still on the purple layer. Then
    Looks good.

Next
Step 4- Make additional layers and assign colors to the layers. Let’s say:
Layer02- > Blue
Layer03 -> Green
Layer04 -> Magenta.

Step 5 - Now either make these layers current and insert the block or use Properties to change the layers of copied blocks.

When the blocks containing objects set to color “by parent” are assigned to the Blue layer, those object are Blue, and Green layer, those objects are Green…*
Objects in the block with color set to “by object” or “by layer, do not change” with the layer that the block is assigned to. This same concept applies to Material. When you set the Material to “by Parent” it will change to flow the materials that is assigned to the layer to which the the block is assigned.

This is all pretty deep.
See the attached model that I set up as an example.
Re-read through it a few times, and let me know if you have any additional questions.
Also, please send a model if you have a specific example that does not work for you.

Sincerely,
Mary Fugier

block_parent.3dm (204.0 KB)


Block with Color of Cylinder set to "By Parent."

Block with Material of Cylinder set to “By Parent.”


#6

Hi,
V5
I have created a rivet and made it a block, named it Rivet7mm. It resides on layer called master rivet and is orange as per layer.
If I need to alter it to e.g. 8mm I can visit this original and altering its diameter and naming it Rivet7mm should see all instances become 8mm. As such that name isnt so clever !!

I copy inPlace and place it on another layer called backplate 7mm rivets, make that layer dk green and rivet remains orange.

I need it dk green, reading the above, I make it ByParent, it appears to then take its colour from the master rivet as its still orange.

I wish it to take its colour from the layer it is on. I need it dk green and its on the dk green layer.

What do I need to do so as to keep the master orange and have the children dk green ?

I turn off the layer the master is on and the children who are on another layer also vanish. is this normal ?
It means keeping turned on a layer I dont want on.

Is it best practice in that case to have the master as one of the objects in its actual required location on the same layer as the children and thus not identifiable as would be the case on a separate layer ?

As such, I decide to delete the one on the orange layer, have the one on the dk green layer as the master, yet its still orange, even with property set to ByParent. There is nothing now on the orange layer, except the central axis line I had drawn that went with the sphere before I trimmed it down, yet if I turn that layer off, the block instance on the dk green layer also vanishes.

Also should the master block be any different in properties to one of the instances from it, selecting both rivets they both say block instance. How can one tell the original apart from the offspring ?

Steve


(Pascal Golay) #7

This should help -

http://wiki.mcneel.com/rhino/usingblocks

http://docs.mcneel.com/rhino/5/help/en-us/commands/block.htm

http://docs.mcneel.com/rhino/5/help/en-us/commands/properties.htm

-Pascal


(Mary Ann Fugier) #8

Hi Steve,
This is getting complicated. So let me break it down.

Before blocking it (or after when editing the block), assign the objects to a layer that is green, This will give you more flexibility if you decide to change the color of the layer, in the future. The objects in the block will update if you change your layer color from dark green to light green, for example…

Before blocking it (or after when editing the block), assign the objects to a layer that is orange. Do the same for the green object, put the on a green layer. Regardless what layer is active when the block is inserted, these object will still be orange and green.

If you want part of your block to change color with the layer that the block is assigned or inserted on?
Before blocking it (or after when editing the block), assign the objects to the “by parent” color setting.

Hierarchical layer arrangements only affect visibility objects of the children, but not the color.

I am still not sure if this is what you are asking. Feel free to send me a small sample model and I will try to work up an example that answers your questions better. mary@mcneel.com

Sincerely,
Mary Ann Fugier