Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

View 200: Implement persistent visibility control #1250

Open
OlegMoshkovich opened this issue Aug 5, 2024 · 4 comments
Open

View 200: Implement persistent visibility control #1250

OlegMoshkovich opened this issue Aug 5, 2024 · 4 comments
Labels
story UX task from a Milestone/Shortcut story
Milestone

Comments

@OlegMoshkovich
Copy link
Member

OlegMoshkovich commented Aug 5, 2024

As a user, I would like to have elements persistently hidden across sessions,
so that I can isolate specific portions of the model and improve my workflow with better organization and visibility control.
Related Issues:
#385

Start of Figma screens

@OlegMoshkovich OlegMoshkovich added the enhancement New feature or request label Aug 5, 2024
@OlegMoshkovich OlegMoshkovich added this to the 2024-08-05 milestone Aug 5, 2024
@OlegMoshkovich
Copy link
Member Author

OlegMoshkovich commented Aug 5, 2024

How to hide elements in the IFC file

ChatGPT
Hiding elements directly in an IFC file typically involves modifying the properties or attributes of the elements so that they are not displayed by the software that reads the IFC file. Here are some methods to achieve this:

Methods to Hide Elements in IFC Files

Custom Property Sets:

Add a custom property set to the elements you want to hide. This property set could include a visibility attribute, such as a boolean Visible property.
Software reading the IFC file can be configured to check this property and hide elements accordingly.
Using Layer Assignments:

Assign elements to specific layers and control their visibility through layer settings. This is dependent on the software's ability to interpret and manage layer visibility.

Modifying Element Attributes:

Set specific attributes of elements to make them less prominent or hidden. For example, changing their geometric representation to an empty shape or modifying their IfcPresentationLayerWithStyle to have no visible representation.
IFC Property and Quantity Filtering:

Use specific IFC properties and quantities to filter elements during import/export processes. Elements with certain properties can be excluded based on predefined rules.

View Definition and Filtering:

Define view definitions (MVDs) that exclude certain elements. When exporting or viewing the IFC file, use these definitions to hide elements.

@OlegMoshkovich OlegMoshkovich added the story UX task from a Milestone/Shortcut story label Aug 5, 2024
@OlegMoshkovich
Copy link
Member Author

OlegMoshkovich commented Aug 6, 2024

Model View Definition(MVD)
https://technical.buildingsmart.org/standards/ifc/mvd/

Is it possible to use MVDs to hide elements.
ChatGPT suggestion:

Yes, it is possible to hide elements in an Industry Foundation Classes (IFC) model using Model View Definitions (MVDs). MVDs define specific subsets of the IFC schema that are required for particular purposes or workflows, enabling the exchange of only the necessary information. Here's how you can use MVDs to hide elements in an IFC model:

Using MVD to Hide Elements in IFC

Define a Specific View
Create a specific view definition within the MVD that excludes the elements you want to hide. This involves specifying the required data and excluding the unnecessary elements.

Use Filtering Criteria
Apply filtering criteria to determine which elements should be hidden. This can be done based on certain attributes, types, or properties of the elements.

Custom Property Sets
Utilize custom property sets to mark elements for visibility control. For example, a property set could include a "Visible" boolean attribute that can be set to false for hidden elements.

Implement Exchange Requirements
Specify exchange requirements within the MVD to include only the relevant elements for a particular workflow or data exchange scenario. This helps in omitting elements that are not required.

Example Steps
Define the View Definition: Create a new MVD with a view definition that specifies which elements are included and excluded.
Apply Filtering: Use filtering criteria to identify elements that should be hidden. For example, you can filter by element type, such as excluding all IfcFurniture elements.
Custom Property Set: Add a property set to elements that includes a visibility attribute.

IFC Documentation and Standards: Refer to the official IFC documentation and buildingSMART standards for detailed guidelines on creating and using MVDs.
MVD Authoring Tools: Utilize tools like the buildingSMART Data Dictionary or other MVD authoring tools to create and manage your MVDs.
IFC Export Settings: Configure your BIM software's IFC export settings to respect the visibility criteria defined in your MVD.
Summary
While IFC and MVDs do not have a direct "hide" functionality like some BIM software, you can achieve similar results through careful definition of view definitions, filtering criteria, custom property sets, and exchange requirements. By specifying what elements should be included or excluded in your MVD, you can control the visibility of elements in the resulting IFC file.

@OlegMoshkovich OlegMoshkovich changed the title Implement Selection Sets with Persistent Visibility Control View 200: Implement Selection Sets with Persistent Visibility Control Aug 6, 2024
@OlegMoshkovich OlegMoshkovich removed the enhancement New feature or request label Aug 6, 2024
@OlegMoshkovich OlegMoshkovich changed the title View 200: Implement Selection Sets with Persistent Visibility Control View 200: Implement persistent visibility control Aug 6, 2024
@OlegMoshkovich
Copy link
Member Author

OlegMoshkovich commented Aug 6, 2024

Schematic sequence

  • Change the visibility of an element.
  • Create a Bldrs property set in the element.
  • Assign the visibility to false.
  • Serve the message to the user along the lines of "To track the current state of the model, commit your changes when you are ready."
  • Add an icon to the save dialog indicating there are unsaved changes.
  • When the user opens the save dialog, it defaults to the save a new version.

If the user did not commit the changes:

  • Before closing the model, ask the user if the changes should be committed.

When a model containing hidden elements is accessed.

  • Notify a user with the message 'Some model elements are hidden'
  • Give the option to unhide the element 'Unhide all hidden elements'

@OlegMoshkovich
Copy link
Member Author

OlegMoshkovich commented Aug 6, 2024

Attempt to assign the element to a hidden layer.

Great! You've added the IFCPRESENTATIONLAYERASSIGNMENT and assigned the IFCSLAB to it. Now, to ensure that this layer is actually hidden in your BIM viewer, you need to make sure that the HiddenLayer is configured to be non-visible. This step depends on the capabilities and settings of your BIM software.

Summary of Your Changes:
ifc
#59790=IFCSLAB('1Am4Yy81b3pBsr8A9uMJ3D',#464887,'G-GS-xx-xxxxx:G-GS-11-00010_13500C-Holz-RG-W-4Z-054-RG1:5731496',$,'G-GS-xx-xxxxx:G-GS-11-00010_13500C-Holz-RG-W-4Z-054-RG1',#59776,#59789,'5731496',.FLOOR.);
#464887=IFCPRESENTATIONLAYERASSIGNMENT('HiddenLayer',$,$,$,$);

Next Steps:
Verify Layer Visibility in BIM Software:

Open your IFC file in your BIM viewer.
Check the layer settings or visibility settings.
Ensure that HiddenLayer is set to be non-visible or turned off.
Check Element Visibility:

Navigate to where the IFCSLAB element should be.
Confirm that the element is hidden as expected.
Example in BIM Software:
In software like Revit, Navisworks, or Solibri, you typically find layer or visibility settings in the view or display settings panel.

For instance, in Revit:
Open the Visibility/Graphics settings (shortcut: VG).
Look for the HiddenLayer under the appropriate category.
Uncheck the visibility box for HiddenLayer.
For instance, in Solibri:
Go to the Layer settings.
Find HiddenLayer.
Ensure that the layer is set to be hidden.
Troubleshooting:
If the element is still visible, double-check the layer assignment and visibility settings.
Ensure there are no overrides or additional visibility settings in the BIM software that might affect the layer.
By following these steps, you should be able to hide the IFCSLAB element effectively. If you encounter any issues, let me know, and I can provide more detailed assistance based on the specific software you're using.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
story UX task from a Milestone/Shortcut story
Projects
None yet
Development

No branches or pull requests

1 participant