Wed, 02/26/2003 - 16:54
I Tried to invert some normal of faces of a given shape. My normal is modelised by the order in which the vertices of the face are recuperated.
I test a code like that and it works well.
TopoDS_Face aFace;
getVertexInOrder(aFace);
aFace.Reverse();
getVertexInOrder(aFace);
the two results of getVertexInOrder are inversed. Ok that works.
But when I want to modify some faces' normal of a shape, I tried 2 solutions but it doesn't work.
Solution 1°)
using a TopExp::MapShapes(aShape,TopAbs_FACE,faceMap) and get the faces by reference
TopoDS_Face & exploredFace = TopoDS::Face(faceMap(i))
if (hasToBeModified(exploredFace,aListOfFacesToModify ))
exploredFace.Reverse();
...
Problem:
Then when I re-explore the shape, the faces normal have the sames values than before the reverse.
Solution 2)
Same code but the faces are not modified online but added in a sewing algorithm (+ faces that keep the same orientation).Then, the new sewedShape is explored and some orientations of faces are modified in order to have a sort of homogeneityin faces orientation.
If you have ideas, thanks in advance
Christophe
Wed, 02/26/2003 - 20:44
Hi !
As far as I know, you can't modify a shape, if you want to change it you have to create a new shape and replace the old one with that.
Mikael
Thu, 02/27/2003 - 10:51
Of course you can!
Have a look at these lines of code:
TopoDS_Shape cmpnd; // already exists
TopoDS_Shape theOldFace = aFaceFromTheShape(cmpnd);
TopoDS_Shape theNewFace = theOldFace.Complemented();
Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
// remove it: rebuild->Remove(theOldFace);
// or replace it:
rebuild->Replace(theOldFace, theNewFace, Standard_False);
TopoDS_Shape shcmpnd = rebuild->Apply(cmpnd, TopAbs_SHAPE, 1);
Best regards,
Michael Gandyra
_____________________________________________
Dr.-Ing. Michael Gandyra
Software Development/Digitizing
Steinbichler Optotechnik GmbH
D-83115 Neubeuern
Thu, 02/27/2003 - 12:11
Hi !
Yes, but are not modifing face, you replace it with another face, which is a modified version of the original face.
Mikael
Thu, 02/27/2003 - 12:34
Yes. Its true, but the (topological) shape itself, where the face lives in, is modified through the replacement of the face. And that is, what was asked for, I think.
Best regards,
Michael Gandyra
_____________________________________________
Dr.-Ing. Michael Gandyra
Software Development/Digitizing
Steinbichler Optotechnik GmbH
D-83115 Neubeuern