28#ifndef _SMESH_MESHEDITOR_I_HXX_
29#define _SMESH_MESHEDIOTR_I_HXX_
33#include <SALOMEconfig.h>
34#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
46 struct ExtrusionParams;
61 SMESH::SMESH_Mesh_ptr GetMesh();
84 void ClearLastCreated();
95 static bool IsTemporaryIDSource( SMESH::SMESH_IDSource_ptr& idSource );
96 static SMESH::smIdType* GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idSource, SMESH::smIdType& nbIds );
101 std::string GenerateGroupName(
const std::string& thePrefix);
105 SMESH::smIdType RemoveOrphanNodes();
106 void RemoveNodeWithReconnection(SMESH::smIdType nodeID);
112 SMESH::smIdType
AddNode(CORBA::Double x, CORBA::Double y, CORBA::Double z);
113 SMESH::smIdType Add0DElement(SMESH::smIdType IDOfNode, CORBA::Boolean DuplicateElements);
114 SMESH::smIdType AddBall(SMESH::smIdType IDOfNodem, CORBA::Double diameter);
134 SMESH::SMESH_IDSource_ptr Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObject,
135 const char* theGroupName,
136 CORBA::Boolean theDuplicateElements);
143 void SetNodeOnVertex(SMESH::smIdType NodeID, CORBA::Long VertexID);
150 void SetNodeOnEdge(SMESH::smIdType NodeID, CORBA::Long EdgeID,
151 CORBA::Double paramOnEdge);
159 void SetNodeOnFace(SMESH::smIdType NodeID, CORBA::Long FaceID,
160 CORBA::Double u, CORBA::Double v);
166 void SetNodeInVolume(SMESH::smIdType NodeID, CORBA::Long SolidID);
172 void SetMeshElementOnShape(SMESH::smIdType ElementID, CORBA::Long ShapeID);
177 CORBA::Boolean MoveNode(SMESH::smIdType NodeID,
178 CORBA::Double x, CORBA::Double y, CORBA::Double z);
183 CORBA::Boolean InverseDiag(SMESH::smIdType NodeID1, SMESH::smIdType NodeID2);
188 CORBA::Boolean DeleteDiag(SMESH::smIdType NodeID1, SMESH::smIdType NodeID2);
193 void AddNodeOnSegment(SMESH::smIdType segmentNode1, SMESH::smIdType segmentNode2,
194 CORBA::Double position);
199 void AddNodeOnFace(SMESH::smIdType triangle,
200 CORBA::Double x, CORBA::Double y, CORBA::Double z);
209 CORBA::Boolean ReorientObject(SMESH::SMESH_IDSource_ptr theObject);
219 CORBA::Long Reorient2D(SMESH::SMESH_IDSource_ptr the2Dgroup,
243 SMESH::SMESH_IDSource_ptr volumes,
244 CORBA::Boolean outsideNormal);
248 SMESH::NumericalFunctor_ptr Criterion,
249 CORBA::Double MaxAngle);
250 CORBA::Boolean TriToQuadObject (SMESH::SMESH_IDSource_ptr theObject,
251 SMESH::NumericalFunctor_ptr Criterion,
252 CORBA::Double MaxAngle);
254 SMESH::NumericalFunctor_ptr Criterion);
255 CORBA::Boolean QuadToTriObject (SMESH::SMESH_IDSource_ptr theObject,
256 SMESH::NumericalFunctor_ptr Criterion);
257 void QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject);
259 CORBA::Boolean Diag13);
260 CORBA::Boolean SplitQuadObject (SMESH::SMESH_IDSource_ptr theObject,
261 CORBA::Boolean Diag13);
262 CORBA::Short BestSplit (SMESH::smIdType IDOfQuad,
263 SMESH::NumericalFunctor_ptr Criterion);
264 void SplitVolumesIntoTetra(SMESH::SMESH_IDSource_ptr elems,
265 CORBA::Short methodFlags);
266 void SplitVolumesIntoTetraAvoidOverConstrainedVolumes(SMESH::SMESH_IDSource_ptr elems,
267 CORBA::Short methodFlags);
268 void SplitHexahedraIntoPrisms(SMESH::SMESH_IDSource_ptr elems,
271 CORBA::Short methodFlags,
272 CORBA::Boolean allDomains);
277 CORBA::Short MaxNbOfIterations,
278 CORBA::Double MaxAspectRatio,
280 CORBA::Boolean SmoothObject(SMESH::SMESH_IDSource_ptr theObject,
282 CORBA::Short MaxNbOfIterations,
283 CORBA::Double MaxAspectRatio,
287 CORBA::Short MaxNbOfIterations,
288 CORBA::Double MaxAspectRatio,
290 CORBA::Boolean SmoothParametricObject(SMESH::SMESH_IDSource_ptr theObject,
292 CORBA::Short MaxNbOfIterations,
293 CORBA::Double MaxAspectRatio,
297 CORBA::Short MaxNbOfIterations,
298 CORBA::Double MaxAspectRatio,
301 CORBA::Boolean smoothObject(SMESH::SMESH_IDSource_ptr theObject,
303 CORBA::Short MaxNbOfIterations,
304 CORBA::Double MaxAspectRatio,
308 CORBA::Boolean ConvertFromQuadratic();
309 void ConvertFromQuadraticObject(SMESH::SMESH_IDSource_ptr theObject);
310 void ConvertToQuadratic(CORBA::Boolean Force3d);
311 void ConvertToQuadraticObject(CORBA::Boolean theForce3d,
312 SMESH::SMESH_IDSource_ptr theObject);
313 void ConvertToBiQuadratic(CORBA::Boolean theForce3d,
314 SMESH::SMESH_IDSource_ptr theObject);
316 void RenumberNodes();
317 void RenumberElements();
323 CORBA::Double AngleInRadians,
324 CORBA::Long NbOfSteps,
325 CORBA::Double Tolerance,
326 CORBA::Boolean ToMakeGroups);
332 CORBA::Long NbOfSteps,
333 CORBA::Boolean ToMakeGroups,
335 CORBA::Boolean ScalesVariation,
338 CORBA::Boolean AnglesVariation);
341 CORBA::Double stepSize,
342 CORBA::Long nbOfSteps,
343 CORBA::Boolean byAverageNormal,
344 CORBA::Boolean useInputElemsOnly,
345 CORBA::Boolean makeGroups,
349 CORBA::Long theNbOfSteps,
350 CORBA::Long theExtrFlags,
351 CORBA::Double theSewTolerance,
352 CORBA::Boolean theMakeGroups);
358 SMESH::SMESH_IDSource_ptr PathMesh,
359 GEOM::GEOM_Object_ptr PathShape,
360 SMESH::smIdType NodeStart,
361 CORBA::Boolean HasAngles,
363 CORBA::Boolean AnglesVariation,
364 CORBA::Boolean HasRefPoint,
368 CORBA::Boolean ScalesVariation,
372 GEOM::GEOM_Object_ptr PathShape,
378 CORBA::Boolean Copy);
379 void MirrorObject(SMESH::SMESH_IDSource_ptr theObject,
382 CORBA::Boolean Copy);
385 CORBA::Boolean Copy);
386 void TranslateObject(SMESH::SMESH_IDSource_ptr theObject,
388 CORBA::Boolean Copy);
392 CORBA::Boolean Copy);
393 void RotateObject(SMESH::SMESH_IDSource_ptr theObject,
396 CORBA::Boolean Copy);
410 CORBA::Double AngleInRadians);
413 CORBA::Double AngleInRadians);
418 CORBA::Boolean CopyGroups,
419 const char* MeshName);
420 SMESH::SMESH_Mesh_ptr MirrorObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
423 CORBA::Boolean CopyGroups,
424 const char* MeshName);
427 CORBA::Boolean CopyGroups,
428 const char* MeshName);
429 SMESH::SMESH_Mesh_ptr TranslateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
431 CORBA::Boolean CopyGroups,
432 const char* MeshName);
435 CORBA::Double AngleInRadians,
436 CORBA::Boolean CopyGroups,
437 const char* MeshName);
438 SMESH::SMESH_Mesh_ptr RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
440 CORBA::Double AngleInRadians,
441 CORBA::Boolean CopyGroups,
442 const char* MeshName);
444 void Scale(SMESH::SMESH_IDSource_ptr theObject,
447 CORBA::Boolean theCopy);
453 SMESH::SMESH_Mesh_ptr ScaleMakeMesh(SMESH::SMESH_IDSource_ptr Object,
456 CORBA::Boolean CopyGroups,
457 const char* MeshName);
459 SMESH::SMESH_Mesh_ptr Offset( SMESH::SMESH_IDSource_ptr theObject,
461 CORBA::Boolean CopyGroups,
462 CORBA::Boolean CopyElements,
463 const char* MeshName,
464 SMESH::ListOfGroups_out Groups);
466 void FindCoincidentNodes (CORBA::Double Tolerance,
467 SMESH::array_of_long_array_out GroupsOfNodes,
468 CORBA::Boolean SeparateCornersAndMedium);
469 void FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr Object,
470 CORBA::Double Tolerance,
471 SMESH::array_of_long_array_out GroupsOfNodes,
472 CORBA::Boolean SeparateCornersAndMedium);
474 CORBA::Double Tolerance,
475 SMESH::array_of_long_array_out GroupsOfNodes,
477 CORBA::Boolean SeparateCornersAndMedium);
480 CORBA::Boolean AvoidMakingHoles );
483 SMESH::array_of_long_array_out GroupsOfElementsID);
486 void MergeEqualElements();
487 SMESH::smIdType MoveClosestNodeToPoint(CORBA::Double x,
490 SMESH::smIdType nodeID);
494 SMESH::smIdType FindNodeClosestTo(CORBA::Double x,
522 SMESH::smIdType ProjectPoint(CORBA::Double x,
526 SMESH::SMESH_IDSource_ptr meshObject,
527 SMESH::double_array_out projecton);
533 CORBA::Short GetPointState(CORBA::Double x, CORBA::Double y, CORBA::Double z);
538 CORBA::Boolean IsManifold();
543 CORBA::Boolean IsCoherentOrientation2D();
553 SMESH::smIdType startNode,
554 SMESH::array_of_long_array_out nodeGroups);
571 const char* groupName);
575 CORBA::Boolean createPolygons,
576 CORBA::Boolean createPolyedrs);
579 SewFreeBorders(SMESH::smIdType FirstNodeID1,
580 SMESH::smIdType SecondNodeID1,
581 SMESH::smIdType LastNodeID1,
582 SMESH::smIdType FirstNodeID2,
583 SMESH::smIdType SecondNodeID2,
584 SMESH::smIdType LastNodeID2,
585 CORBA::Boolean CreatePolygons,
586 CORBA::Boolean CreatePolyedrs);
588 SewConformFreeBorders(SMESH::smIdType FirstNodeID1,
589 SMESH::smIdType SecondNodeID1,
590 SMESH::smIdType LastNodeID1,
591 SMESH::smIdType FirstNodeID2,
592 SMESH::smIdType SecondNodeID2);
594 SewBorderToSide(SMESH::smIdType FirstNodeIDOnFreeBorder,
595 SMESH::smIdType SecondNodeIDOnFreeBorder,
596 SMESH::smIdType LastNodeIDOnFreeBorder,
597 SMESH::smIdType FirstNodeIDOnSide,
598 SMESH::smIdType LastNodeIDOnSide,
599 CORBA::Boolean CreatePolygons,
600 CORBA::Boolean CreatePolyedrs);
604 SMESH::smIdType NodeID1OfSide1ToMerge,
605 SMESH::smIdType NodeID1OfSide2ToMerge,
606 SMESH::smIdType NodeID2OfSide1ToMerge,
607 SMESH::smIdType NodeID2OfSide2ToMerge);
616 SMESH::SMESH_Group_ptr DoubleElements(SMESH::SMESH_IDSource_ptr theElements,
617 const char* theGroupName);
622 CORBA::Boolean DoubleNode( SMESH::smIdType theNodeId,
625 CORBA::Boolean DoubleNodeGroup( SMESH::SMESH_GroupBase_ptr theNodes,
626 SMESH::SMESH_GroupBase_ptr theModifiedElems );
636 SMESH::SMESH_Group_ptr DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
637 SMESH::SMESH_GroupBase_ptr theModifiedElems );
672 GEOM::GEOM_Object_ptr theShape );
683 CORBA::Boolean DoubleNodeElemGroup( SMESH::SMESH_GroupBase_ptr theElems,
684 SMESH::SMESH_GroupBase_ptr theNodesNot,
685 SMESH::SMESH_GroupBase_ptr theAffectedElems );
697 SMESH::SMESH_Group_ptr DoubleNodeElemGroupNew( SMESH::SMESH_GroupBase_ptr theElems,
698 SMESH::SMESH_GroupBase_ptr theNodesNot,
699 SMESH::SMESH_GroupBase_ptr theAffectedElems );
702 SMESH::SMESH_GroupBase_ptr theNodesNot,
703 SMESH::SMESH_GroupBase_ptr theAffectedElems,
704 CORBA::Boolean theElemGroupNeeded,
705 CORBA::Boolean theNodeGroupNeeded);
717 CORBA::Boolean DoubleNodeElemGroupInRegion( SMESH::SMESH_GroupBase_ptr theElems,
718 SMESH::SMESH_GroupBase_ptr theNodesNot,
719 GEOM::GEOM_Object_ptr theShape );
752 CORBA::Boolean theElemGroupNeeded,
753 CORBA::Boolean theNodeGroupNeeded);
768 GEOM::GEOM_Object_ptr theShape );
783 GEOM::GEOM_Object_ptr theShape );
798 CORBA::Boolean createJointElems,
799 CORBA::Boolean onAllBoundaries );
809 CORBA::Boolean CreateFlatElementsOnFacesGroups(
const SMESH::ListOfGroups& theGroupsOfFaces );
817 void CreateHoleSkin(CORBA::Double radius,
818 GEOM::GEOM_Object_ptr theShape,
819 const char* groupName,
821 SMESH::array_of_long_array_out GroupsOfNodes);
828 CORBA::Boolean Make2DMeshFrom3D();
830 SMESH::SMESH_Mesh_ptr MakeBoundaryMesh(SMESH::SMESH_IDSource_ptr elements,
832 const char* groupName,
833 const char* meshName,
834 CORBA::Boolean toCopyElements,
835 CORBA::Boolean toCopyMissingBondary,
836 SMESH::SMESH_Group_out group);
839 const char* groupName,
840 const char* meshName,
841 CORBA::Boolean toCopyAll,
842 CORBA::Boolean toCreateAllElements,
844 SMESH::SMESH_Mesh_out mesh,
845 SMESH::SMESH_Group_out group);
864 const char* groupName);
873 CORBA::Double width);
884 void declareMeshModified(
bool isReComputeSafe );
889 void initData(
bool deleteSearchers=
true);
917 CORBA::Boolean theCopy,
921 void convertToQuadratic(CORBA::Boolean theForce3d,
922 CORBA::Boolean theToBiQuad,
923 SMESH::SMESH_IDSource_ptr theObject = SMESH::SMESH_IDSource::_nil());
925 SMESH::SMESH_Mesh_ptr makeMesh(
const char* theMeshName);
930 void prepareIdSource(SMESH::SMESH_IDSource_ptr theObject);
935 bool idSourceToSet(SMESH::SMESH_IDSource_ptr theIDSource,
939 const bool emptyIfIsMesh =
false,
940 IDSource_Error* error = 0);
943 CORBA::Double Tolerance,
944 SMESH::array_of_long_array_out GroupsOfNodes,
945 CORBA::Boolean SeparateCornersAndMedium);
SMDSAbs_ElementType
Type (node, edge, face or volume) of elements.
Definition: SMDSAbs_ElementType.hxx:34
@ SMDSAbs_All
Definition: SMDSAbs_ElementType.hxx:35
#define SMESH_I_EXPORT
Definition: SMESH.hxx:39
std::set< const SMDS_MeshNode *, TIDCompare > TIDSortedNodeSet
Definition: SMESH_OctreeNode.hxx:51
std::set< const SMDS_MeshElement *, TIDCompare > TIDSortedElemSet
Definition: SMESH_TypeDefs.hxx:58
Definition: SMESHDS_Mesh.hxx:98
Utility helping in storing SMESH engine calls as python commands.
Definition: SMESH_PythonDump.hxx:121
Definition: SMESH_MeshEditor_i.hxx:50
int GetMeshId() const
Return edited mesh ID.
Definition: SMESH_MeshEditor_i.hxx:59
::SMESH_MeshEditor * myPreviewEditor
Definition: SMESH_MeshEditor_i.hxx:957
SMESH_Mesh * myMesh
Definition: SMESH_MeshEditor_i.hxx:952
MeshEditor_I::TPreviewMesh * myPreviewMesh
Definition: SMESH_MeshEditor_i.hxx:956
SMESHDS_Mesh * getMeshDS()
Definition: SMESH_MeshEditor_i.hxx:880
::SMESH_MeshEditor myEditor
Definition: SMESH_MeshEditor_i.hxx:953
IDSource_Error
Definition: SMESH_MeshEditor_i.hxx:933
bool myIsPreviewMode
Definition: SMESH_MeshEditor_i.hxx:955
SMESH::MeshPreviewStruct_var myPreviewData
Definition: SMESH_MeshEditor_i.hxx:958
SMESH_Mesh_i * myMesh_i
< fields
Definition: SMESH_MeshEditor_i.hxx:951
Editor of a mesh.
Definition: SMESH_MeshEditor.hxx:74
Definition: SMESH_Mesh_i.hxx:57
Definition: SMESH_Mesh.hxx:80
Sew_Error
Definition: SMESH_MeshEditor.idl:946
MirrorType
Definition: SMESH_MeshEditor.idl:671
Extrusion_Error
Definition: SMESH_MeshEditor.idl:632
Smooth_Method
Definition: SMESH_MeshEditor.idl:504
Definition: SMESH_MeshEditor_i.cxx:91
std::vector< Edge > FindSharpEdges(SMDS_Mesh *mesh, double angle, bool addExisting)
Return sharp edges of faces and non-manifold ones.
Definition: SMESH_MeshAlgos.cxx:1985
void FindFreeBorders(SMDS_Mesh &mesh, TFreeBorderVec &foundFreeBordes, const bool closedOnly, bool *isManifold=0, bool *isGoodOri=0)
Returns all or only closed TFreeBorder's.
Definition: SMESH_FreeBorders.cxx:834
void Get1DBranches(SMDS_ElemIteratorPtr edgeIt, TElemGroupVector &edgeGroups, TNodeGroupVector &nodeGroups, const SMDS_MeshNode *startNode=0)
Partition given 1D elements into groups of contiguous edges.
Definition: SMESH_MeshAlgos.cxx:2352
void MakePolyLine(SMDS_Mesh *mesh, TListOfPolySegments &segments, std::vector< const SMDS_MeshElement * > &newEdges, std::vector< const SMDS_MeshNode * > &newNodes, SMDS_MeshGroup *group=0, SMESH_ElementSearcher *searcher=0)
Create a polyline consisting of 1D mesh elements each lying on a 2D element of the initial mesh.
Definition: SMESH_PolyLine.cxx:618
void FindCoincidentFreeBorders(SMDS_Mesh &mesh, double tolerance, CoincidentFreeBorders &foundFreeBordes)
Returns TFreeBorder's coincident within the given tolerance.
Definition: SMESH_FreeBorders.cxx:442
void FillHole(const TFreeBorder &freeBorder, SMDS_Mesh &mesh, std::vector< const SMDS_MeshElement * > &newFaces)
Fill a hole defined by a TFreeBorder with 2D elements.
Definition: SMESH_FillHole.cxx:382
std::vector< Edge > MakeSlot(SMDS_ElemIteratorPtr segmentIt, double width, SMDS_Mesh *mesh, std::vector< SMDS_MeshGroup * > &groupsToUpdate)
Create a slot of given width around given 1D elements lying on a triangle mesh.
Definition: SMESH_Slot.cxx:532
Bnd_Dimension
Definition: SMESH_MeshEditor.idl:35
sequence< long_array > array_of_long_array
Definition: SMESH_Mesh.idl:47
sequence< SMESH_IDSource > ListOfIDSources
Definition: SMESH_Mesh.idl:41
sequence< smIdType > smIdType_array
Definition: SMESH_Mesh.idl:45
sequence< FaceEdge > ListOfEdges
Definition: SMESH_MeshEditor.idl:91
sequence< FreeBorder > ListOfFreeBorders
Definition: SMESH_MeshEditor.idl:50
ElementType
Enumeration for element type, like in SMDS.
Definition: SMESH_Mesh.idl:128
sequence< double > double_array
Definition: SMESH_Mesh.idl:43
sequence< SMESH_GroupBase > ListOfGroups
Definition: SMESH_Mesh.idl:39
sequence< PolySegment > ListOfPolySegments
Definition: SMESH_MeshEditor.idl:82
long AddNode(SMESH::SMESH_Mesh_ptr theMesh, float x, float y, float z, const QStringList &theParameters)
Definition: SMESHGUI_NodesDlg.cxx:96
sequence< long > long_array
Definition: SMESH_Mesh.idl:44
Mesh to apply modifications for preview purposes.
Definition: SMESH_MeshEditor_i.cxx:100
Definition: SMESH_Mesh.idl:101
Definition: SMESH_MeshEditor.idl:55
Definition: SMESH_Gen.idl:118
Definition: SMESH_Mesh.idl:99
Definition: SMESH_MeshEditor.idl:39
Structure containing mesh edit preview data.
Definition: SMESH_Mesh.idl:279
Definition: SMESH_Mesh.idl:93
Definition: SMESH_MeshEditor_i.cxx:706