For others who are struggling with draw order issues, below is my understanding of draw order, a potential workflow, and some helpful scripts by others. Maybe some of you will find this useful, or have better suggestions. @arcade.smith, @Tom_P , @Daniel_Krajnik , @holo, @eugen, @a.p.haythornthwaite , @cwetteskind , @silvano , @ShynnSup , @keithscadservices , …
First Principles:
This is the clearest explanation I’ve seen on the forum for draw order first principles in Rhino:
General Implementation:
My current understanding for objects outside of blocks:
- Draw order is taken from the layer order
- Within a layer, hatches display below crvs and annotations.
- Print preview in PDF should be most accurate–what is displayed on screen in the model is not always true to actual draw order.
I’ve found 1 to not always be true, and #2 makes things murky and cumbersome to control order between objects on the same layer.
My Workflow:
That very useful python script listed in the quote above (thanks much @Helvetosaur ) can be slightly modified to either set draw order for multiple objects simultaneously, or find a single object draw order, which gives you precise control. I found it more efficient to separate the two functions and map them to aliases.
SetDrawOrder.py (754 Bytes)
FindDrawOrder.py (722 Bytes)
Then layers can be tagged with the desired draw order.
Hacky, but it works, and you have exact control over objects inside layers. However, blocks are still a problem:
And this behavior is not consistent; sometimes block draw order displays just fine in model space and when printing.
@stevebaer , could you explain exactly how draw order works for objects inside blocks? Pascal’s explanation below is how I would expect/want it to work, but as you can see in the images above, that’s not necessarily always the case, especially for nested blocks.
Other Helpful Scripts
Matching draw order:
Feature Requests:
- I would prefer that blocks have no effect on draw order whatsoever.
- Draw order should be exposed as an additional property in the properties panel (alongside display color, linetype, etc).
- A full-blown panel to manage draw order with a tree structure like the layers panel would be amazing. This post has a lot to say about that.