HideInDetail with worksession doesn't remember hidden objects

Hi,

Drawing setup:

Drawing.3dm
Model.3dm
Drawing.rws (model.3dm is attached in drawing.3dm)

In the drawing there is a layout with a detail. When using HideInDetail to hide an object from model.3dm it works fine. When the file is closed and opened again all objects are visible again.

Is this a bug?

I know the option to work with layers on/off in detail in combination with layerstates, but my file already has a lot of layers and I don’t want to put every single object on a different layer.

Regards,
Thomas

@mary Can you help here? My understanding is that the layout is part of the 3dm that is active not the rws so hideindetail for objects in an inactive attachment can’t be saved. The fact it works though while in the rws seems like it ought to get saved when saving over the rws itself. Am I confused or do you think this is by design?

Hi Thomas,
A set of files would help. Please allow me to review what we know:

  1. HideInDetail only works with object that you can select in the model. Not with objects that are part of a linked block. However, layers could be an option, but details layer visibility does not work on the reference file either.
  • Model.dwg is referencing Drawing as a LINKED block using Reference Layers.

  • In Model, on the layout, and in the detail, the reference layers from the Drawing are turned off in the detail. The objects on that layer are no longer displayed.

  • However, save and reopen Model.dwg and the layers from Detail.dwg that were turned off in the detail are back.

Currently the Detail layer visibility on the reference layer is not being saved.
(This issue is not related to the use of Worksessions. RWS is simple a list of files that allows you to activate one at a time. You can attached a model to Worksession that has linked blocks. It gets confusing.)

Detail layer visibility is on the list for Rhino 6. However, it is not fixed yet.
However, good news in Rhino 6 WIP the global layer visibility is being save on the reference file layer.

If we need to work on this more, please send files that will help me understand this better.
Thank you.

Sincerely,
Mary Ann Fugier
McNeel Technical Support and Training
Seattle, WA

Thanks Mary for the response.
Especially if the models are large the, the combination of clippingplanes, layouts and a large model is not working very well.
So, to create drawings we like to separate the model files from the drawing files.

We create a separate drawing.3dm and the model is attached as a worksession to the drawing.

In a lot if cases it is enough to use the layer on/off functionality. But sometimes we only want to hide an object in front of another which are in the same layer.

I also noticed that switching detail layers on/off is not saved as well.

Last but not least, if we create drawings on the manner as described above, and I shut down rhino and reopen my files again, I would like my drawings to be the same.

Drawing with model attached:

Layout with 4 details:

Hide some objects in the different details:

Save & close

Reopen:

Files are attached.Test.zip (107.1 KB)

Regards,
Thomas

1 Like

thomas84,

Have you found or heard of any fix for this issue? I have been having the same problem with the worksessions I work with and I am pulling my hair out.

Any help would be great!
Cheers

D

Nope…

Haha,

Cheers

Sorry for the delay, Thomas.

I have been in teaching most of the Fall. This need time to compare and contract to Rhino 5 and the Rhino 6 WIP, to be as thorough as possible. This is the same or very similar to Dan’s issue.

==========================

Thanks for all the details you posted here.

Worksessions or RWS files do not save layer visibility per detail.
However, both Rhino 5 & 6 will save per detail layer visibility of the active file only.
This is the same information that any Rhino files would normally save, even if Worksessions are not in use.

If you turn off a layer per detail, that is part of the active file, or hide objects in the detail that are part of the active file, and save the file, this will be saved or restored upon reopen.

If you turn off a layer per detail, that is part of a non-active file, or hide objects in the detail that are part of the non-active file, this will not be saved or restored upon reopen. Hope this helps clarify and illustrates the difference.

To be fair, this is confusing because Rhino does hide the layer and objects in the non-active file “temporarily.” It just does not remember it. If saving the visibility of non-active does not fit the logic of the worksession RWS file, then Rhino should not temporarily hide them either, in my opinion. So, I really believe that is the bug. And the first item here is a wish or feature request.

The Help file does say that LayerStates of the worksession file are saved. This is true, but only of the visibility state of the parent layer, not the nested layers. So if you have a LayerState with the LayerState manager, you can restore the layer state from the LayerState manger, and the visibility of the parent layer will be restored. Again to qualify this, no changes to the settings on the nested or child layers are stored or restored in the LayerState.

Thanks for the bugs and wishes, getting them posted now.

Sincerely,
Mary Fugier

Hello,

Has there been any progress ?
Hiding elements is still quite tedious when trying to publish pdf.

Hi Raouf -

I’m afraid there haven’t been any changes to how all this works.
-wim

Dear McNeel developers,
Over here in the Netherlands, a client of RhinoCentre is also having this problem with ‘HideInDetail’.
It is a shipyard that relies heavily on Rhino in a very integrated an advanced workflow. They use a separate Rhino ‘drawings’ file in which they use worksession to combine several geometry files of a vessel. Like for example:

  • Hull file
  • Interior
  • Structure
  • etc.

By using a separate drawings file, everyone knows where to find them. This means that there’s no 3D geometry in this file. Only Layouts and annotations.
For many drawings, they use HideInDetail to make the ‘page details’ more useful. Also they use ‘SetObjectDisplay’ every now and then.
So especially for these advanced users of Rhino, this is really an important feature to work with.
Is there any development on it?
This is the shipyard: https://ngshipyards.com/en/
@wim @mary @BrianJ

1 Like

Hi @Gerard,
There is nothing new to report here.
Worksessions will be tackled sometime in a future release, and we will announce it here on the Forum. It is not happening in Rhino 8. However, you will see new Block Manager panel that is modeless.

Linked blocks may be a better option. Use the Reference layer option when attaching and assign them to a block reference layer, that will control the visibility of the entire set of linked blocks. You can also change the linked block to a specific layer later…
image

The Parent model (or the model that links in the blocks) remembers the visibility and color settings of linked block, both model and details. So the detail layer visibility and color override is remember in the parent file, or the file that does the linking.

Let me know if you can make linked blocks work for you.

Sincerely,
Mary Ann Fugier

1 Like

Hi Mary Ann,

Thank you for your informative reply.

I am thinking of a solution with a script that can read the HideInDetail database in a file. I assume that there must be a database, in every Rhino file, that keeps track of the individual objects that are hidden in a specific detail. When we can read that database with the script and fill that database after reopening the file with that same script, then we have a solution.
What do you think of this?

My client and I will explore your idea with the blocks.

Thank you very much.

Hi @Gerard ,
Thanks for asking about this enhancement.
RH-37146 WorkSessions: Save Visibility per Detail
I logged this back in the “Rhino 6 days”, 6 years ago.

Inactive Worksession files are referenced “read only” at run time and can not be modified.
Modifications are never saved in the file, since it is read only. So a script that uses HideinDetail or ShowInDetail, will not work since changes to visibility will not be saved to the inactive file.

I talked to the developer, and he will look into the possibility of getting this working in Rhino WIP.
Fingers crossed here. :slight_smile: We will let you know when there is something to test.

One of the disadvantages of using linked blocks is that when you double clock to edit the link, it opens in a new session of Rhino. While the geometry you need to reference to make your change, is not available unless you also reference that file to the one being edited. (Rhino does not have a “overlay” link or a “one level” linked block like AutoCAD, logged as RH-72938 Link-block needs option for one-level-reference-or-Overlay.)

An example, you link the Mechanical to the Architectural floor plan model. Now you need to move a pipe, so you double click the Mechanical, and it opens in a new Rhino session. Here sadly you can not see the wall to reference where to move the pipe. :frowning:

10 years ago I wrote a feature request for linked block “in-place” edit.
RH-16962 In-place-Edit-for-Linked-Blocks
It has languished on Future for the entire time.
It has now been assigned to a new developer, so I am more hopeful we might see it someday.

This is one place that Worksessions works very well…

  • Create the Worksession with Mech and Arch. Activate the Mechanical, and move the pipes while referencing the Architectural walls. Easy.
  • I also like being able to copy out of the worksession and build off the worksessions geometry like with commands offset, ExtrudeCrv, Sweep, Loft and more.

Why would I use Linked block over Worksessions?

  • With a linked block R7, it saves Detail color and visibility overrides.
  • You are also allowed to pick an insertion Point.
  • You can have multiple instance of the linked block
  • And you can have instances of the same linked block that have a unique set of layers(i.e., you need the 3rd floor plan to also be used as the Roof Framing) you can attach it as a copy with its own set of layer for the Roof framing. However, updating the linked block will update both the 3rd floor and Roof. The command that does this is CopyLinkedBlockDefinition. Insert a Linked block with the Reference layer option into your file. Use the CopyLinkedBlockDefinition to copy your linked block to a different name. Then you are instructed on the command line "“X linked block definition created. Use the Insert command to place an instance.” After inserting the copy of your linked block, you will now have two unique sets of reference layers and 2 blocks that link to the same external file.

So currently you need to choose between Worksession and Linked blocks.
For additional details on these features, see these wiki pages on Large Project Organization

Sorry I got on a roll here. Good to have this all in one place, I think.
Sincerely,
Mary Ann Fugier
McNeel Technical Support and Training
Seattle, WA

2 Likes