Wish: SetObjectDisplayMode and BlockInstances

Very often i find myself trying to apply custom display mode to a block instance… and no luck. Or have blocks with custom display objects created in a file that in a different file will not show well since the viewport id is different.

Wish: make applying SetObjectDisplayMode to block instances apply to all of its objects.

~j

Jarek, can you post a simple example?

thanks,

-pascal

Hi Pascal,SetObjectDisplayModel_and_Blocks_Sample.3dm (224.6 KB)

Sure, here it is - 2 of 3 blocks were created with custom object display modes ( W and S - Wireframe and Shaded) applied in Perspective viewport. Now, once they are blocks - The SetObjectDisplayMode has no effect on them.
I would like to be able to SetObjectDisplayMode override the whatever was assigned inside the block as in the regular workflow not having it is very problematic and counter-intuitive.

~j

i had similar problems:

eg. i use mesh trees inserted as block instances (+1M faces).

i have made a display mode that hides all mesh wires, but still shows mesh edges. wich speeds up display x10 and still gives a good look of the tree.

however assigning that display mode to the block wont work, it only works if i set that displaymode current in the viewport.

Hi Jarek - thanks… So, the way to do this now is to BlockEdit and set the object display mode while in BlockEdit mode. Does that get what you want? I suppose there needs to be a ‘by parent’ display mode setting, that would handle this as well, if that is even possible.

-Pascal

1 Like

Hi Pascal,

With 100s of blocks I deal with that is not an option to do 1 by 1. Also the by-parent mode still need to be manually changed up front in the block instead of just assigning the mode from the parent side. Many times the blocks I deal with are not that I create.
Ideal situation: the block instance object’s display mode is overridden by parent, unless parent is in UseView mode. Does it make sense and can we hope for this improvement ?

thanks,

~j

Hi Jarek- my guess is that this is hard, if even possible, but who knows, I’ll add it to the pile, thanks.

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

-Pascal

Pascal - the ByParent option would be a great addition, as you suggested. Seems to make the most sense.
Please add to the pile!

thanks

Hello there,

Confronted to the same issue, in 2022. A thread opened in 2014. Does this really have no other way than to assign to the parent object within the block ? Has anyone succeeded in setting a display to blocks ?

With many thanks and love to McNeel people doing their best !

G,

Yep, trying to revive this…
I have a mountain of buildings with nested blocks and I’d love to be able to SetObjectDisplayMode on each building to assign a custom colour/display. Works great except the blocks won’t play nice.

Is there any way to do this yet?

Just to be clear, I’m trying to create drawings which look something like this
image

without having to change layer or material properties of the dozens of blocks and nested blocks. SetObjectDisplayMode is the only way I know to do this. Blocks are the only problem. Can this be fixed?

Or is there another way?

@Andrew v8 WIP has a new object properties panel. One of the new things added to it is the ability to set the selected objects display mode override. Another new thing that’s still sort of hidden is the ability to hold ctrl + shift and sub select geometry inside of block instances and edit their object properties from the object properties panel (provided its not a linked block). Try this out and see if it does what you’re looking for and let me know.

Why not set the color for items in the block to ByParent?

Hi Steve- That would be fine for a few blocks but when I’m looking at dozens to hundreds it’s a daunting task!

Hi Travis- I’ve been meaning to test drive v8 for a while… I think now’s the time! Thanks!

hi Andrew,

if you are up for trying a script, this one could help you to deal with setting in-block properties (display modes, layers, properties by layer or by parent etc):

hth,

–jarek

Hi Travis,
Ctrl+shift worked on some blocks and not others (I noticed some were non-uniformly scaled, but others were ok but still wouldn’t change.)

On a separate note I tried to undock the Object Properties panel doesn’t seem to like going to my other monitors. It just disappears if I put it there. Is multiple monitor support still being worked on?

Hi Andrew - in case it helps, here is a python that will by-parentize block contents’ display color…

PyParentizeBlockDisplayColor.py (1001 Bytes)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"

-Pascal

Hi @Trav,

These are two great additions - the Ctrl+Shift+Click to access in-block objects for properties change seems to work well on both uniform and non-uniform scaled blocks.

I also quickly tried the new Properties display models per object settings with block instances, with mixed results. What’s great is the blocks if set to display mode override work well - same block definition can be displayed both as wireframe or rendered, when set from Instance level, which was not possible before. However that over here works only if using standard display modes. If I make a custom display mode (i.e. a copy of Rendered, but with all edges off), and try to assign that to a block instance, nothing happens. It works for objects inside blocks though, but that affects all instances.
Hope that can be tweaked to work with all custom display modes.

thanks,

–jarek

@Andrew If the block is a linked reference block then it is not allowed to be edited since its editing attributes of objects that reside inside a different 3dm file. Setting those objects in the reference block to be By Parent like Steve mentioned is the way to go there. Then you should be able to change the block instances display mode.