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

Our Solutions

Need professional assistance?
Consider our:

Support Offerings

 

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

Samples & Tools

 

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

Adv. Components

Related pages

Looking for a class similar to BRepOffsetAPI_MakePipe

Dirk B's picture
Forums: 

I am looking for a class similar to BRepOffsetAPI_MakePipe, that sweeps a profile edge(or face) along a spine edge. The profile should be "swept" in such manner that the resulting face is bounded by a wire consisting of the original profile edge, two edges similar to the spine and the last edge parallel to the profile edge. Is there a class that does this?

Dirk

Dirk B's picture

If the spine edge has the curve type GeomAbs_Line this is done by MakePrism, I need this for the other curve types.

Bearloga's picture

try BRepOffsetAPI_MakePipeShell

Dirk B's picture

Many thanks!
Using this class with the mode set to a gp_Ax2, that has a main direction equaling the tangent of the profile curve, gives the result I was looking for.

Dirk

Marco Balen's picture

Hy Dirk B,

I have the same your problem, and I tried to use the BRepOffsetAPI_MakePipe or BRepOffsetAPI_MakePipeShell, but sweepping a closed wire on a wire spine I always obtain a shell. I want to obtain the outer wire or a face. Can you help me ?

Dirk B's picture

Hi Giglietti,
try getting the subshapes of the result by using TopExp::MapShapes with TopAbs_WIRE or TopAbs_FACE.

Dirk

Marco Balen's picture

Hi Dirk,

Thanks for your answer,

I have tried to use "TopExp::MapShapes()", but when I take an index of the extracted FACEs I get only a part of whole Shell.

Let me explain you what I want to obtain for my application. I think also that I may have taken the wrong way to solve my problem.

I have to create the shape(face or outerwire) of an arbitrary planar closed figure that is moving from one point to another point. (Not only a linear movement)
For example, a rectangle that moves from a point A to point B leaves a "trace" like a highlighter.

I have to do this only for visualization in AIS_Interactive_Context(), but the only way I have found is to substituite the AIS_Line() and AIS_Circle() with a AIS_Shape(Face) that I build with BRepBuilderAPI_BRepOffsetAPI_MakePipeShell() and setting the display mode to "Render". I build the shape "moving" a face on a wire and I obtain a planar Shell with wires intersecting each other generated from the first face vertix.

The problems are :
- this mode takes a long time
- in some situations the IAS_Shape was not filled correctly
- in other situations the AIS_Shape was built wrongly

All this is done to simulate the "trace" of a planar face that moves from a point to another.

Have you any idea on how I can do this ?

Thanks in advance for any suggestions

Dirk B's picture

Hi Giglietti,
I hope I understand your problem right, here is my suggestion:
I would create copies of the spine curve, that start at the vertices of the profile. This should give the impression of a "trace" for the shape movement.

Regards,

Dirk

Marco Balen's picture

Hi Dirk,

The behaviour you explain is the right behaviour and is what BRepOffsetAPI_MakePipeShell() does.
If I Move a shape(closed wire) along a spine(open wire) I obtain a shell with all the vertices of the start profile connected to the same vertices of the end profile.
I draw this shell with "shade mode" and I get the "trace" of the shape movement, but in some cases the AIS_context doesn't render correctly the shell and leaves some faces of the shell hollow.
I need the same behaviour you explained in your first original message but I want to use a close wire instead of an edge.

Have you other suggestions ?

Dirk B's picture

Try the different modes of BRepOffsetAPI_MakePipeShell. That's what I did. Maybe a simple example of what you start out with and what should be the result would help also.

Dirk

Marco Balen's picture

I wil linvestigate more on BRepOffsetAPI_MakePipeShell().
Thanks for your prompt replays and for the time you have devoted to this.

Contact us

Attention: DO NOT use this form for all kind of request for the removal of your personal data. Please follow this link for such cases.