For all issues regarding the Forums use, please, refer to the Forum Rules.

### Our Solutions

Need professional assistance?
Consider our:

Need to speed up your development?
Have a look at our:

Need some functionality extending standard OCCT capabilities?
Check out our:

# Area inside a closed TopoDS_Wire on the surface of a TopoDS_Shell

Forums:

Hi,

I am trying to calculate the area inside a TopoDS_Wire which is on the surface of a TopoDS_Shell. The TopoDS_Wire is always closed since it represents a border to a certain area that i need to calculate. I tried boolean operations to cut the shell with the wire but it did not work since boolean operations only works with solids, shells. If anyone can help that would be great :)

Thanks in advance ,

Hi!

I am also interested in that question. Does OCC offer surface area computation algorithms besides computation of the surface area of a whole shell?

Isn't this a very basic and important task?

Benjamin

Hello,

I have not tested the following, but it should work:
1) Project wire onto face
2) ensure wire is only on the face you want (may have to trim)
3) Use BRepFeat_SplitShape to split the face and the wire
4) Use BRepGProp::SurfaceProperties and GProp_GProps::Mass to get the area of that face
BRepGProp::SurfaceProperties(shape, props);
double aGeomArea = props.Mass();

Good luck

Hello Mohamed,

A possible approach to solving your problem could consist of the following steps:
- Apply General Fuse operation to your shell and wire
- Find the wire contour inside the new shell
- Find the faces that contain edges of that contour
- Select faces that are inside the contour
- Create a new shell out of them

Here is a simple example in Draw how to apply General Fuse operation to a shell and a wire:

# Load modeling commands
# Create a shell
polyline p1 0 0 0 10 0 0 10 5 0 10 10 0 0 10 0 0 0 0
prism r1 p1 0 0 10
# Create a wire
polyline p2 10 2 2 10 8 2 10 8 8 10 2 8 10 2 2
# Clear arguments (optional, only needed if calling repeatedly)
bcleartools
bclearobjects
# Apply General Fuse
bapibuild r
# Show the result
axo; donly r; fit

We shall be glad to offer our additional assistance in the frames of a support program, if you are interested.

Best regards,
Forum supervisor

Hello Sergey,

From what i know, boolean operations are only supported between solids or shells. I'm trying to use BRepAlgoAPI_Fuse to fuse the wire and the shell but it always fails with StdFail_NotDone.

Thanks,
Mohamed

Hello Mohamed,

Just type 'getsource bapibuild' in Draw prompt to know in which source file this command is implemented.
Hope consulting its code can help you.

Best regards,
Forum supervisor