mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-28 18:30:35 +05:00
PAL13639 (EDF PAL 317 : SMESH : Create "0D Hypothesis")
add Mesh_Segment.LengthNearVertex() PAL13615 (EDF PAL 315/31 GEOM SMESH : meshing of a "5 edges quadrangle") add class Mesh_CompositeSegment(Mesh_Segment) amd COMPOSITE type of segment algorithm PAL13903 (SMESH Extrusion along a path , linear variation of the angles) add optional LinearVariation arg to ExtrusionAlongPath()
This commit is contained in:
parent
ba03e23aa0
commit
280355825e
@ -43,8 +43,9 @@ except ImportError:
|
||||
pass
|
||||
|
||||
# Types of algo
|
||||
REGULAR = 1
|
||||
PYTHON = 2
|
||||
REGULAR = 1
|
||||
PYTHON = 2
|
||||
COMPOSITE = 3
|
||||
|
||||
MEFISTO = 3
|
||||
NETGEN = 4
|
||||
@ -537,6 +538,21 @@ class Mesh_Segment(Mesh_Algorithm):
|
||||
hyp.SetFineness( fineness )
|
||||
return hyp
|
||||
|
||||
## Define "SegmentLengthAroundVertex" hypothesis
|
||||
# @param length for the segment length
|
||||
# @param vertex for the length localization: vertex index [0,1] | verext object
|
||||
def LengthNearVertex(self, length, vertex):
|
||||
import types
|
||||
if type(vertex) is types.IntType:
|
||||
vertex = geompy.SubShapeAllSorted(self.geom,geompy.ShapeType["VERTEX"])[vertex]
|
||||
pass
|
||||
store_geom = self.geom
|
||||
self.geom = vertex
|
||||
hyp = self.Hypothesis("SegmentLengthAroundVertex")
|
||||
self.geom = store_geom
|
||||
hyp.SetLength( length )
|
||||
return hyp
|
||||
|
||||
## Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges.
|
||||
# If the 2D mesher sees that all boundary edges are quadratic ones,
|
||||
# it generates quadratic faces, else it generates linear faces using
|
||||
@ -547,6 +563,19 @@ class Mesh_Segment(Mesh_Algorithm):
|
||||
hyp = self.Hypothesis("QuadraticMesh")
|
||||
return hyp
|
||||
|
||||
# Public class: Mesh_CompositeSegment
|
||||
# --------------------------
|
||||
|
||||
## Class to define a segment 1D algorithm for discretization
|
||||
#
|
||||
# More details.
|
||||
class Mesh_CompositeSegment(Mesh_Segment):
|
||||
|
||||
## Private constructor.
|
||||
def __init__(self, mesh, geom=0):
|
||||
self.Create(mesh, geom, "CompositeSegment_1D")
|
||||
|
||||
|
||||
# Public class: Mesh_Segment_Python
|
||||
# ---------------------------------
|
||||
|
||||
@ -1145,6 +1174,8 @@ class Mesh:
|
||||
return Mesh_Segment(self, geom)
|
||||
elif algo == PYTHON:
|
||||
return Mesh_Segment_Python(self, geom)
|
||||
elif algo == COMPOSITE:
|
||||
return Mesh_CompositeSegment(self, geom)
|
||||
else:
|
||||
return Mesh_Segment(self, geom)
|
||||
|
||||
@ -2249,12 +2280,17 @@ class Mesh:
|
||||
# @param HasRefPoint allows to use base point
|
||||
# @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
|
||||
# User can specify any point as the Base Point and the shape will be rotated with respect to this point.
|
||||
# @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
|
||||
def ExtrusionAlongPath(self, IDsOfElements, PathMesh, PathShape, NodeStart,
|
||||
HasAngles, Angles, HasRefPoint, RefPoint):
|
||||
HasAngles, Angles, HasRefPoint, RefPoint, LinearVariation=False):
|
||||
if IDsOfElements == []:
|
||||
IDsOfElements = self.GetElementsId()
|
||||
if ( isinstance( RefPoint, geompy.GEOM._objref_GEOM_Object)):
|
||||
RefPoint = GetPointStruct(RefPoint)
|
||||
pass
|
||||
if HasAngles and LinearVariation:
|
||||
Angles = self.editor.LinearAnglesVariation( PathMesh, PathShape, Angles )
|
||||
pass
|
||||
return self.editor.ExtrusionAlongPath(IDsOfElements, PathMesh.GetMesh(), PathShape, NodeStart,
|
||||
HasAngles, Angles, HasRefPoint, RefPoint)
|
||||
|
||||
@ -2269,10 +2305,14 @@ class Mesh:
|
||||
# @param HasRefPoint allows to use base point
|
||||
# @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
|
||||
# User can specify any point as the Base Point and the shape will be rotated with respect to this point.
|
||||
# @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
|
||||
def ExtrusionAlongPathObject(self, theObject, PathMesh, PathShape, NodeStart,
|
||||
HasAngles, Angles, HasRefPoint, RefPoint):
|
||||
HasAngles, Angles, HasRefPoint, RefPoint, LinearVariation=False):
|
||||
if ( isinstance( RefPoint, geompy.GEOM._objref_GEOM_Object)):
|
||||
RefPoint = GetPointStruct(RefPoint)
|
||||
if HasAngles and LinearVariation:
|
||||
Angles = self.editor.LinearAnglesVariation( PathMesh, PathShape, Angles )
|
||||
pass
|
||||
return self.editor.ExtrusionAlongPathObject(theObject, PathMesh.GetMesh(), PathShape, NodeStart,
|
||||
HasAngles, Angles, HasRefPoint, RefPoint)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user