MoI discussion forum
MoI discussion forum

Full Version: delete / remove face of a BRep in a script

Show messages: All  1-5  6-9

From: Michael Gibson
22 Feb 2023   [#6] In reply to [#1]
Hi Peer,

re:
> Specifically, the combination of .calculate() and .addObjects ( object ) results in 2 objects existing: a solid that
> looks like the original solid and a solid less one face.

Basically objects in the geometry database are immutable, to modify an object a geometry factory will create a new object and the old object will need to be removed from the geometry database.

This cycle of generating a new object and removing the old object is handled automatically by the factory.update() and factory.commit() mechanisms that regular commands use.

It can be useful for a script to handle it manually though, which is done by using factory.calculate() instead of factory.update()/commit() - unlike update/commit the calculate() function will generate an output object but not automatically add it to the geometry database or remove any input objects from the geometry database.


> I can do what I want with the new object facelessParent, but I have to do another deletion to get rid of the solid that remains in the scene.

You'll need to remove the old object from the geometry database if you don't want it to be around anymore. But note that you'll need to remove the top level parent object not face sub-objects. Faces don't exist on their own, they are a subordinate part of a brep.

- Michael
From: Michael Gibson
22 Feb 2023   [#7] In reply to [#3]
Hi Peer,

> And that works fine for a standalone selected object, but it doesn't seem to do anything
> if just a face of a solid is selected.

You can't remove a sub-object from the geometry database, you can only remove a top level object from the geometry database.

You can get the top level object that a sub-object is contained inside of by using obj.getTopLevelParent();

- Michael
From: pressure (PEER)
22 Feb 2023   [#8] In reply to [#6]
Thanks Michael for your fast and thorough answer! Needing to separately remove the input object makes sense now. And thanks for pointing out that I need to remove the top level parent object. That probably explains an issue I saw when testing my script on a solid contained by a Group object.

- Peer
From: bemfarmer
22 Feb 2023   [#9]
Thank you Michael and Peer for the improvement to understanding. I edited my posts to remove or modify my worst statements.

- Brian

Show messages: All  1-5  6-9