Adding color that shows

I’ve been trying to assign color and material to different objects but it’s not working visually. While I can assign colors to certain objects, they don’t always show up in the monitor views. There must be some detail I’m missing. It seems this should be relatively easy to do. (1021.1 KB)


Block objects do not respond to either color by object or color by layer. Instead, each object in the block instance takes on the color of the original component that defined it - either by layer or by object. Since you have normal parts mixed with blocks you’re going to have a bit of a time getting it all straight… Check out the setting in Properties>Display color “By parent” as well, it might help some.


Well there are a few ways to do this depending on what you want it for.

Simplest is just to select object and change the colour in properties panel.

there is also changing materials, but your viewport has to be in rendered mode to see it.

I must not of selected any blocks. :smile:

You weren’t specific so I’ll make some assumptions.
The three main assemblies were Grouped, so I ungrouped the,
I’m guessing the smaller objects are what you want to change color.
They are all block instances.
I copied one and Exploded it to get to the objects themselves.
The objects are all on layer default so is you assign a color or material to layer default, they change color.

If you want each of these to display different colors, then they can not all be block instances of objects on a single layer.

If you redefine the block so it’s color assigned to the objects is “By Parent”, then the layer the instance is on will determine the display color.

Thanks for the help guys. I think the main issue was dealing with Block instances. I was also using the materials interface instead of the ‘display color’ option. I was also fiddling with the advanced material features Ambience and Emission which seemed to blast the color out to white. Materials is a whole other venture for me.

I’ll do the explode/alter/remake routine on the blocks. I think there’s been some talk of an improved block editing interface/tool. I’m all for it as I often want to make small niggeling changes and it saves time and is global.

BTW where can I get the color picker that’s shown in the screenshots?

Since you want to modify them, I would challenge the use of block instances in the first place.
What problem were you expecting to solve by using blocks?

I didn’t get it to work yet … I exploded a block and tried to color it. I wonder if I’d inadvertanly made a setting somewhere else that’s causing me trouble?

Colour pickers in OSX are OSX, not rhino … I use this one

do you use a backface colour? if not maybe this is the back, so Flip the surface, maybe?

Kewl! thanks. Lemme try that, I do have some display colors set in the settings interface to show the different sides. Maybe that’s the issue.

Regarding the blocks; I wanted to change the color of the LED element. It exists multiple times in the model and hence, with a means to edit all at once I save time and effort. I exploded a copy assigned some color and then remade the block, but when it asked for a reference point, I put in 0 as I’d originally did but on entering all the instances had bee moved to new locations!

You’ll need to do a little planning so this will work as expected.

When you make the initial surfaces, I would put them on an LED layer.
Override the layer color by assigning the Object color to “By Parent”.
Choose a logical location for the insertion point. My guess in this case would be the bottom center of the LED so when inserted it would sit on the surface centered around the geometry.
The layer that is current when you insert the block will be that block’s “reference layer”. If you change the color or that layer, then the “by parent” setting of the objects in the block definition, will display the reference layer’s color in a wireframe or shaded style display.

You block instances shifted because when you updated them, you did not choose the same base point relative to the geometry when originally created.

They don’t change color because the surface making up the blocks are on a layer that has a color, and the object color is set to “By layer”.

Does that make sense?

What is the difference between Parent and layer when it comes to object color?

By default, objects inherit their display the color from the layer they are on. This is the “By Layer” setting.
You can also assign a color to an object and then it ignores the layer’s color that the object is on.
The last option is “By Parent”. This can be used on two different situations. If you have set up a parent/child hierarchy with your layer system, then the object will display the color of the layer above it.
It also works with block instances.
When you create a block, the objects are on the layer you created them on.
If you change the object’s color to “By Parent”, then insert the block with a different layer current (or change it later), then the block instance will display the color of that reference layer.
This is what I was suggesting in my last several messages.

I see. So in my case, I’d want to use the “by object” option to have the color display as desired regardless of what layer it’s placed on. Does this distinction remain when the object is then turned into a block?

Make a layer with the color you want them to display, make it current, draw the objects, make the Block.
Then instances of that block will always display the color you assigned to that layer.
Then if you want to chaNge the color later, just change the color they were drawn on initially.

Very good. I’ve two colors that need to be displayed for the LED units, so I think it best to create the item on a dedicated layer, assign the desired colors and then create a block to use throughout the model. Afterwards when I’ll invariably need to make a global change I’ll do the process on the dedicated layer.

As too assigning a reference point to the newly created block, I’ve always just typed in 0 and continued on. I don’t quite understand how that made a location change when it was saved/replaced the instances of the block.

0 is a good coordinate to use, but then when you draw the initial objects, center them around the 0,0 coordinate origin.

If you draw them centered around 10,10, then when you pick a point to insert them, they will be 10 units to the right and up from where you picked.

I assume you want them centered around where you pick, so draw then centered around that point. This of the reference point as the “handle” for future instances of that block.

Does that make sense?

That makes sense. But it still takes some time to sink in. I’ve gone ahead and assigned color with the custom option as well as moved the object to the LED layer , however as you can see from the attached when I select rendered I get an all white blown out display. What is the problem here?

That’s because you ORIGINALLY drew them on layer default with their color set to By Layer. All the old ones are all still on layer default and displaying default’s color.

You need to re-define the block.

Insert one of your existing blocks at 0,0
Explode it
Select the objects and using the Properties Panel, change them to the LED layer
Run Block again
Select the same objects
Use the same block name and overwrite it
Use 0 as the base point.

All your old block instances will change to reflect the updated definition of the block.