Fri, 01/21/2005 - 14:30
Forums:
Dear all:
I wish to make a hole on a surface, defined by a closed edge or wire.
Using the following code (see bellow), it works nicelly when the surface is plannar, but for nonplannar surfaces, it does not work.
=============================================================
BRepBuilderAPI_MakeFace downFaceAPI(TopoDS::Face(faceToCut));
downFaceAPI.Add(wire); //this wire is closed
TopoDS_Face result = downFaceAPI;
=============================================================
Can anybody give some other suggestions?
Thanks in advance, Sofia Gameiro
Fri, 01/21/2005 - 14:43
In theory, your code should work. Remember, the wire must lie completely on the original face. From the help:
"For the wire: the wire is composed of connected edges, each edge having a parametric curve description in the parametric domain of the surface; in other words, as a pcurve."
If the wire is not truly on the face, you might try extruding it into a solid and performing a boolean cut operation.
Good luck.
Mon, 01/24/2005 - 12:52
Thanks Rob, I will try your tips!
Sofia
Mon, 05/02/2005 - 14:01
Hello Rob,
I agree with both of you on this one. From my tests, OpenCascade is not yet able to project a curve on surface (correctly) but except planar surfaces. The method I use is the extrusion one. Basically, I (at geometry level), I get the (closed) curve I want to use for perforation, extrude it (using Geom_SurfaceOfLinearExtrusion) and intersect (GeomAPI_IntSS) the result with the target surface (GeomAdaptor_Surface). This ensures the resulting 'wire' (you get) is exactly on your surface (not limited to planar surface). You are free to get a 3d curve or a 2d (p-) curve in the parameytric space of the surface, from GeomAPI_IntSS. I hops this is assuring! Good luck.
axyl