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 SplitHexahedraIntoPrisms(SMESH::SMESH_IDSource_ptr elems,
269 CORBA::Short methodFlags,
270 CORBA::Boolean allDomains);
275 CORBA::Short MaxNbOfIterations,
276 CORBA::Double MaxAspectRatio,
278 CORBA::Boolean SmoothObject(SMESH::SMESH_IDSource_ptr theObject,
280 CORBA::Short MaxNbOfIterations,
281 CORBA::Double MaxAspectRatio,
285 CORBA::Short MaxNbOfIterations,
286 CORBA::Double MaxAspectRatio,
288 CORBA::Boolean SmoothParametricObject(SMESH::SMESH_IDSource_ptr theObject,
290 CORBA::Short MaxNbOfIterations,
291 CORBA::Double MaxAspectRatio,
295 CORBA::Short MaxNbOfIterations,
296 CORBA::Double MaxAspectRatio,
299 CORBA::Boolean smoothObject(SMESH::SMESH_IDSource_ptr theObject,
301 CORBA::Short MaxNbOfIterations,
302 CORBA::Double MaxAspectRatio,
306 CORBA::Boolean ConvertFromQuadratic();
307 void ConvertFromQuadraticObject(SMESH::SMESH_IDSource_ptr theObject);
308 void ConvertToQuadratic(CORBA::Boolean Force3d);
309 void ConvertToQuadraticObject(CORBA::Boolean theForce3d,
310 SMESH::SMESH_IDSource_ptr theObject);
311 void ConvertToBiQuadratic(CORBA::Boolean theForce3d,
312 SMESH::SMESH_IDSource_ptr theObject);
314 void RenumberNodes();
315 void RenumberElements();
321 CORBA::Double AngleInRadians,
322 CORBA::Long NbOfSteps,
323 CORBA::Double Tolerance,
324 CORBA::Boolean ToMakeGroups);
330 CORBA::Long NbOfSteps,
331 CORBA::Boolean ToMakeGroups,
333 CORBA::Boolean ScalesVariation,
336 CORBA::Boolean AnglesVariation);
339 CORBA::Double stepSize,
340 CORBA::Long nbOfSteps,
341 CORBA::Boolean byAverageNormal,
342 CORBA::Boolean useInputElemsOnly,
343 CORBA::Boolean makeGroups,
347 CORBA::Long theNbOfSteps,
348 CORBA::Long theExtrFlags,
349 CORBA::Double theSewTolerance,
350 CORBA::Boolean theMakeGroups);
356 SMESH::SMESH_IDSource_ptr PathMesh,
357 GEOM::GEOM_Object_ptr PathShape,
358 SMESH::smIdType NodeStart,
359 CORBA::Boolean HasAngles,
361 CORBA::Boolean AnglesVariation,
362 CORBA::Boolean HasRefPoint,
366 CORBA::Boolean ScalesVariation,
370 GEOM::GEOM_Object_ptr PathShape,
376 CORBA::Boolean Copy);
377 void MirrorObject(SMESH::SMESH_IDSource_ptr theObject,
380 CORBA::Boolean Copy);
383 CORBA::Boolean Copy);
384 void TranslateObject(SMESH::SMESH_IDSource_ptr theObject,
386 CORBA::Boolean Copy);
390 CORBA::Boolean Copy);
391 void RotateObject(SMESH::SMESH_IDSource_ptr theObject,
394 CORBA::Boolean Copy);
408 CORBA::Double AngleInRadians);
411 CORBA::Double AngleInRadians);
416 CORBA::Boolean CopyGroups,
417 const char* MeshName);
418 SMESH::SMESH_Mesh_ptr MirrorObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
421 CORBA::Boolean CopyGroups,
422 const char* MeshName);
425 CORBA::Boolean CopyGroups,
426 const char* MeshName);
427 SMESH::SMESH_Mesh_ptr TranslateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
429 CORBA::Boolean CopyGroups,
430 const char* MeshName);
433 CORBA::Double AngleInRadians,
434 CORBA::Boolean CopyGroups,
435 const char* MeshName);
436 SMESH::SMESH_Mesh_ptr RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
438 CORBA::Double AngleInRadians,
439 CORBA::Boolean CopyGroups,
440 const char* MeshName);
442 void Scale(SMESH::SMESH_IDSource_ptr theObject,
445 CORBA::Boolean theCopy);
451 SMESH::SMESH_Mesh_ptr ScaleMakeMesh(SMESH::SMESH_IDSource_ptr Object,
454 CORBA::Boolean CopyGroups,
455 const char* MeshName);
457 SMESH::SMESH_Mesh_ptr Offset( SMESH::SMESH_IDSource_ptr theObject,
459 CORBA::Boolean CopyGroups,
460 CORBA::Boolean CopyElements,
461 const char* MeshName,
462 SMESH::ListOfGroups_out Groups);
464 void FindCoincidentNodes (CORBA::Double Tolerance,
465 SMESH::array_of_long_array_out GroupsOfNodes,
466 CORBA::Boolean SeparateCornersAndMedium);
467 void FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr Object,
468 CORBA::Double Tolerance,
469 SMESH::array_of_long_array_out GroupsOfNodes,
470 CORBA::Boolean SeparateCornersAndMedium);
472 CORBA::Double Tolerance,
473 SMESH::array_of_long_array_out GroupsOfNodes,
475 CORBA::Boolean SeparateCornersAndMedium);
478 CORBA::Boolean AvoidMakingHoles );
481 SMESH::array_of_long_array_out GroupsOfElementsID);
484 void MergeEqualElements();
485 SMESH::smIdType MoveClosestNodeToPoint(CORBA::Double x,
488 SMESH::smIdType nodeID);
492 SMESH::smIdType FindNodeClosestTo(CORBA::Double x,
520 SMESH::smIdType ProjectPoint(CORBA::Double x,
524 SMESH::SMESH_IDSource_ptr meshObject,
525 SMESH::double_array_out projecton);
531 CORBA::Short GetPointState(CORBA::Double x, CORBA::Double y, CORBA::Double z);
536 CORBA::Boolean IsManifold();
541 CORBA::Boolean IsCoherentOrientation2D();
551 SMESH::smIdType startNode,
552 SMESH::array_of_long_array_out nodeGroups);
569 const char* groupName);
573 CORBA::Boolean createPolygons,
574 CORBA::Boolean createPolyedrs);
577 SewFreeBorders(SMESH::smIdType FirstNodeID1,
578 SMESH::smIdType SecondNodeID1,
579 SMESH::smIdType LastNodeID1,
580 SMESH::smIdType FirstNodeID2,
581 SMESH::smIdType SecondNodeID2,
582 SMESH::smIdType LastNodeID2,
583 CORBA::Boolean CreatePolygons,
584 CORBA::Boolean CreatePolyedrs);
586 SewConformFreeBorders(SMESH::smIdType FirstNodeID1,
587 SMESH::smIdType SecondNodeID1,
588 SMESH::smIdType LastNodeID1,
589 SMESH::smIdType FirstNodeID2,
590 SMESH::smIdType SecondNodeID2);
592 SewBorderToSide(SMESH::smIdType FirstNodeIDOnFreeBorder,
593 SMESH::smIdType SecondNodeIDOnFreeBorder,
594 SMESH::smIdType LastNodeIDOnFreeBorder,
595 SMESH::smIdType FirstNodeIDOnSide,
596 SMESH::smIdType LastNodeIDOnSide,
597 CORBA::Boolean CreatePolygons,
598 CORBA::Boolean CreatePolyedrs);
602 SMESH::smIdType NodeID1OfSide1ToMerge,
603 SMESH::smIdType NodeID1OfSide2ToMerge,
604 SMESH::smIdType NodeID2OfSide1ToMerge,
605 SMESH::smIdType NodeID2OfSide2ToMerge);
614 SMESH::SMESH_Group_ptr DoubleElements(SMESH::SMESH_IDSource_ptr theElements,
615 const char* theGroupName);
620 CORBA::Boolean DoubleNode( SMESH::smIdType theNodeId,
623 CORBA::Boolean DoubleNodeGroup( SMESH::SMESH_GroupBase_ptr theNodes,
624 SMESH::SMESH_GroupBase_ptr theModifiedElems );
634 SMESH::SMESH_Group_ptr DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
635 SMESH::SMESH_GroupBase_ptr theModifiedElems );
670 GEOM::GEOM_Object_ptr theShape );
681 CORBA::Boolean DoubleNodeElemGroup( SMESH::SMESH_GroupBase_ptr theElems,
682 SMESH::SMESH_GroupBase_ptr theNodesNot,
683 SMESH::SMESH_GroupBase_ptr theAffectedElems );
695 SMESH::SMESH_Group_ptr DoubleNodeElemGroupNew( SMESH::SMESH_GroupBase_ptr theElems,
696 SMESH::SMESH_GroupBase_ptr theNodesNot,
697 SMESH::SMESH_GroupBase_ptr theAffectedElems );
700 SMESH::SMESH_GroupBase_ptr theNodesNot,
701 SMESH::SMESH_GroupBase_ptr theAffectedElems,
702 CORBA::Boolean theElemGroupNeeded,
703 CORBA::Boolean theNodeGroupNeeded);
715 CORBA::Boolean DoubleNodeElemGroupInRegion( SMESH::SMESH_GroupBase_ptr theElems,
716 SMESH::SMESH_GroupBase_ptr theNodesNot,
717 GEOM::GEOM_Object_ptr theShape );
750 CORBA::Boolean theElemGroupNeeded,
751 CORBA::Boolean theNodeGroupNeeded);
766 GEOM::GEOM_Object_ptr theShape );
781 GEOM::GEOM_Object_ptr theShape );
796 CORBA::Boolean createJointElems,
797 CORBA::Boolean onAllBoundaries );
807 CORBA::Boolean CreateFlatElementsOnFacesGroups(
const SMESH::ListOfGroups& theGroupsOfFaces );
815 void CreateHoleSkin(CORBA::Double radius,
816 GEOM::GEOM_Object_ptr theShape,
817 const char* groupName,
819 SMESH::array_of_long_array_out GroupsOfNodes);
826 CORBA::Boolean Make2DMeshFrom3D();
828 SMESH::SMESH_Mesh_ptr MakeBoundaryMesh(SMESH::SMESH_IDSource_ptr elements,
830 const char* groupName,
831 const char* meshName,
832 CORBA::Boolean toCopyElements,
833 CORBA::Boolean toCopyMissingBondary,
834 SMESH::SMESH_Group_out group);
837 const char* groupName,
838 const char* meshName,
839 CORBA::Boolean toCopyAll,
840 CORBA::Boolean toCreateAllElements,
842 SMESH::SMESH_Mesh_out mesh,
843 SMESH::SMESH_Group_out group);
862 const char* groupName);
871 CORBA::Double width);
882 void declareMeshModified(
bool isReComputeSafe );
887 void initData(
bool deleteSearchers=
true);
915 CORBA::Boolean theCopy,
919 void convertToQuadratic(CORBA::Boolean theForce3d,
920 CORBA::Boolean theToBiQuad,
921 SMESH::SMESH_IDSource_ptr theObject = SMESH::SMESH_IDSource::_nil());
923 SMESH::SMESH_Mesh_ptr makeMesh(
const char* theMeshName);
928 void prepareIdSource(SMESH::SMESH_IDSource_ptr theObject);
933 bool idSourceToSet(SMESH::SMESH_IDSource_ptr theIDSource,
937 const bool emptyIfIsMesh =
false,
938 IDSource_Error* error = 0);
941 CORBA::Double Tolerance,
942 SMESH::array_of_long_array_out GroupsOfNodes,
943 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:55
Definition: SMESHDS_Mesh.hxx:68
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:955
SMESH_Mesh * myMesh
Definition: SMESH_MeshEditor_i.hxx:950
MeshEditor_I::TPreviewMesh * myPreviewMesh
Definition: SMESH_MeshEditor_i.hxx:954
SMESHDS_Mesh * getMeshDS()
Definition: SMESH_MeshEditor_i.hxx:878
::SMESH_MeshEditor myEditor
Definition: SMESH_MeshEditor_i.hxx:951
IDSource_Error
Definition: SMESH_MeshEditor_i.hxx:931
bool myIsPreviewMode
Definition: SMESH_MeshEditor_i.hxx:953
SMESH::MeshPreviewStruct_var myPreviewData
Definition: SMESH_MeshEditor_i.hxx:956
virtual ~ SMESH_MeshEditor_i()
SMESH_Mesh_i * myMesh_i
< fields
Definition: SMESH_MeshEditor_i.hxx:949
Editor of a mesh.
Definition: SMESH_MeshEditor.hxx:72
Definition: SMESH_Mesh_i.hxx:57
Definition: SMESH_Mesh.hxx:80
Sew_Error
Definition: SMESH_MeshEditor.idl:934
MirrorType
Definition: SMESH_MeshEditor.idl:659
Extrusion_Error
Definition: SMESH_MeshEditor.idl:620
Smooth_Method
Definition: SMESH_MeshEditor.idl:492
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:40
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:38
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