| None mrmeshpy.accumulateFaceCenters | ( | PointAccumulator | accum, |
| MeshPart | mp, | ||
| AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all mesh face centers with the weight equal to face area
| None mrmeshpy.accumulateLineCenters | ( | PointAccumulator | accum, |
| Polyline3 | pl, | ||
| AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all line centers with the weight equal to the length line
| None mrmeshpy.accumulatePoints | ( | PointAccumulator | accum, |
| PointCloudPart | pcp, | ||
| AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all points from the cloud (region) with weight 1
| None mrmeshpy.accumulatePoints | ( | PointAccumulator | accum, |
| std_vector_Vector3_float | points, | ||
| AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all given points
| None mrmeshpy.accumulateWeighedPoints | ( | PointAccumulator | accum, |
| std_vector_Vector3_float | points, | ||
| std_vector_float | weights, | ||
| AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all given weighed points
| None mrmeshpy.addBaseToPlanarMesh | ( | Mesh | mesh, |
| float | zOffset ) |
given a planar mesh with boundary on input located in plane XY, packs and extends it along Z on zOffset (along -Z if zOffset is negative) to make a volumetric closed mesh note that this function also packs the mesh
| None mrmeshpy.addLeftBand | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | loop, | ||
| FaceBitSet | addHere ) |
adds all faces incident to loop vertices and located to the left from the loop to given FaceBitSet
| None mrmeshpy.addNoise | ( | Mesh | mesh, |
| VertBitSet | region = None, | ||
| NoiseSettings | settings = '{}' ) |
| None mrmeshpy.addNoise | ( | VertCoords | points, |
| VertBitSet | validVerts, | ||
| NoiseSettings | settings ) |
Adds noise to the points, using a normal distribution
| Mesh mrmeshpy.alignContoursToMesh | ( | Mesh | mesh, |
| std_vector_std_vector_Vector2_float | contours, | ||
| ContoursMeshAlignParams | params ) |
Creates planar mesh out of given contour and aligns it to given surface
| Mesh mrmeshpy.alignTextToMesh | ( | Mesh | mesh, |
| TextMeshAlignParams | params ) |
Creates symbol mesh and aligns it to given surface
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_Object | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectDistanceMap | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectLines | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectLinesHolder | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectMesh | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectMeshHolder | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectPoints | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectPointsHolder | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_ObjectVoxels | res, | ||
| ObjectSelectivityType | type ) |
| None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
| std_vector_std_shared_ptr_VisualObject | res, | ||
| ObjectSelectivityType | type ) |
| Vector3d mrmeshpy.applyDouble | ( | AffineXf3d | xf, |
| Vector3f | p ) |
converts given point in double precision and applies given transformation to it
converts given normal in double precision and applies given matrix to it
| Vector3f mrmeshpy.applyFloat | ( | AffineXf3d | xf, |
| Vector3f | p ) |
returns the point as is or after application of given transform to it in double precision
returns the normal as is or after application of given matrix to it in double precision
| float mrmeshpy.area | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | fs = None ) |
computes the area of given face-region
computes the area of given face-region (or whole mesh)
| float mrmeshpy.area | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns the area of given face
| Object mrmeshpy.asSelectivityType_Object | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectDistanceMap mrmeshpy.asSelectivityType_ObjectDistanceMap | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectLines mrmeshpy.asSelectivityType_ObjectLines | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectLinesHolder mrmeshpy.asSelectivityType_ObjectLinesHolder | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectMesh mrmeshpy.asSelectivityType_ObjectMesh | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectMeshHolder mrmeshpy.asSelectivityType_ObjectMeshHolder | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectPoints mrmeshpy.asSelectivityType_ObjectPoints | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectPointsHolder mrmeshpy.asSelectivityType_ObjectPointsHolder | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| ObjectVoxels mrmeshpy.asSelectivityType_ObjectVoxels | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| VisualObject mrmeshpy.asSelectivityType_VisualObject | ( | Object | obj, |
| ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
| str mrmeshpy.asString | ( | ColoringType | ct | ) |
returns string representation of enum values
| str mrmeshpy.asString | ( | SignDetectionMode | m | ) |
returns string representation of enum values
| bool mrmeshpy.autoOrientLocalTriangulations | ( | PointCloud | pointCloud, |
| AllLocalTriangulations | triangs, | ||
| VertBitSet | region, | ||
| func_bool_from_float | progress = '{}', | ||
| Triangulation | outRep3 = None, | ||
| Triangulation | outRep2 = None ) |
orient neighbors around each point in \\param region so there will be as many triangles with same (and not opposite) orientation as possible
| float mrmeshpy.averageEdgeLength | ( | MeshTopology | topology, |
| VertCoords | points ) |
computes average length of an edge in the mesh given by (topology, points)
| ChunkIterator mrmeshpy.begin | ( | IteratorRange_ChunkIterator | range | ) |
| PolylineUndirectedEdgeIterator mrmeshpy.begin | ( | IteratorRange_PolylineUndirectedEdgeIterator | range | ) |
| RingIterator_NextEdgeSameLeft mrmeshpy.begin | ( | IteratorRange_RingIterator_NextEdgeSameLeft | range | ) |
| RingIterator_NextEdgeSameOrigin mrmeshpy.begin | ( | IteratorRange_RingIterator_NextEdgeSameOrigin | range | ) |
| UndirectedEdgeIterator mrmeshpy.begin | ( | IteratorRange_UndirectedEdgeIterator | range | ) |
| ViewportIterator mrmeshpy.begin | ( | ViewportMask | mask | ) |
given quadrangle ABCD, selects how to best triangulate it: false = by introducing BD diagonal and splitting ABCD on triangles ABD and DBC, true = by introducing AC diagonal and splitting ABCD on triangles ABC and ACD
Blend two colors together \\note This operation is not commutative
| BooleanResult mrmeshpy.boolean | ( | Mesh | meshA, |
| Mesh | meshB, | ||
| BooleanOperation | operation, | ||
| AffineXf3f | rigidB2A, | ||
| BooleanResultMapper | mapper = None, | ||
| func_bool_from_float | cb = '{}' ) |
\\brief Performs CSG operation on two meshes Makes new mesh - result of boolean operation on mesh `A` and mesh `B` \\snippet cpp-examples/MeshBoolean.dox.cpp 0 \\param meshA Input mesh `A` \\param meshB Input mesh `B` \\param operation CSG operation to perform \\param rigidB2A Transform from mesh `B` space to mesh `A` space \\param mapper Optional output structure to map mesh `A` and mesh `B` topology to result mesh topology \\note Input meshes should have no self-intersections in intersecting zone \\note If meshes are not closed in intersecting zone some boolean operations are not allowed (as far as input meshes interior and exterior cannot be determined)
| BooleanResult mrmeshpy.boolean | ( | Mesh | meshA, |
| Mesh | meshB, | ||
| BooleanOperation | operation, | ||
| BooleanParameters | params = '{}' ) |
| EdgeId mrmeshpy.buildBottom | ( | Mesh | mesh, |
| EdgeId | a, | ||
| Vector3f | dir, | ||
| float | holeExtension, | ||
| FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located in lowest point of the hole -dir*holeExtension and 2 * number_of_hole_edge triangles; \\return the edge of new hole opposite to input edge (a)
| None mrmeshpy.buildCylinderBetweenTwoHoles | ( | Mesh | mesh, |
| EdgeId | a, | ||
| EdgeId | b, | ||
| StitchHolesParams | params = '{}' ) |
\\brief Stitches two holes in Mesh\\n Build cylindrical patch to fill space between two holes represented by one of their edges each,\\n default metric: ComplexStitchMetric \\image html fill/before_stitch.png "Before" width = 250cm \\image html fill/stitch.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/stitch_smooth.png "Stitch with smooth" width = 250cm \\snippet cpp-examples/MeshStitchHole.dox.cpp 0 \\param mesh mesh with hole \\param a EdgeId which represents 1st hole (should not have valid left FaceId) \\param b EdgeId which represents 2nd hole (should not have valid left FaceId) \\param params parameters of holes stitching \\sa \\ref fillHole \\sa \\ref StitchHolesParams
| bool mrmeshpy.buildCylinderBetweenTwoHoles | ( | Mesh | mesh, |
| StitchHolesParams | params = '{}' ) |
this version finds holes in the mesh by itself and returns false if they are not found
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPath | ( | Mesh | mesh, |
| VertId | start, | ||
| VertBitSet | finish, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
builds shortest path in euclidean metric from start to finish vertices; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPath | ( | Mesh | mesh, |
| VertId | start, | ||
| VertId | finish, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using Dijkstra algorithm; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPathAStar | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| MeshTriPoint | finish, | ||
| VertId | outPathStart = None, | ||
| VertId | outPathFinish = None, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
finds the path from a vertex in start-triangle to a vertex in finish-triangle, so that the length start-first_vertex-...-last_vertex-finish is shortest in euclidean metric; using A* modification of Dijkstra algorithm, which is faster for near linear path; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPathAStar | ( | Mesh | mesh, |
| VertId | start, | ||
| VertId | finish, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using A* modification of Dijkstra algorithm, which is faster for near linear path; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPathBiDir | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| MeshTriPoint | finish, | ||
| VertId | outPathStart = None, | ||
| VertId | outPathFinish = None, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
finds the path from a vertex in start-triangle to a vertex in finish-triangle, so that the length start-first_vertex-...-last_vertex-finish is shortest in euclidean metric; using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildShortestPathBiDir | ( | Mesh | mesh, |
| VertId | start, | ||
| VertId | finish, | ||
| float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPath | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| VertId | start, | ||
| VertBitSet | finish, | ||
| float | maxPathMetric = 3.4028234663852886e+38 ) |
builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPath | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| VertId | start, | ||
| VertId | finish, | ||
| float | maxPathMetric = 3.4028234663852886e+38 ) |
builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
| std_vector_unsigned_long mrmeshpy.buildSmallestMetricPath | ( | VdbVolume | voxels, |
| func_float_from_unsigned_long_unsigned_long | metric, | ||
| int | start, | ||
| int | finish, | ||
| func_bool_from_float | cb = '{}' ) |
builds shortest path in given metric from start to finish voxels; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPathBiDir | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| TerminalVertex | starts, | ||
| int | numStarts, | ||
| TerminalVertex | finishes, | ||
| int | numFinishes, | ||
| VertId | outPathStart = None, | ||
| VertId | outPathFinish = None, | ||
| float | maxPathMetric = 3.4028234663852886e+38 ) |
finds the smallest metric path from one of start vertices to one of the finish vertices, using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both starts and finishes, which is faster for long paths; if no path can be found then empty path is returned
| std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPathBiDir | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| VertId | start, | ||
| VertId | finish, | ||
| float | maxPathMetric = 3.4028234663852886e+38 ) |
finds the smallest metric path from start vertex to finish vertex, using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
| AllLocalTriangulations mrmeshpy.buildUnitedLocalTriangulations | ( | PointCloud | cloud, |
| TriangulationHelpers.Settings | settings, | ||
| func_bool_from_float | progress = '{}' ) |
/ computes local triangulations of all points in the cloud united in one struct
| str mrmeshpy.bytesString | ( | int | size | ) |
converts given size in string: [0,1024) -> nnn bytes [1024,1024*1024) -> nnn.nn Kb [1024*1024,1024*1024*1024) -> nnn.nn Mb ...
| VertColors mrmeshpy.calcAvgColors | ( | PointCloud | cloud, |
| VertColors | colors, | ||
| VertCoords | tgtPoints, | ||
| VertBitSet | tgtVerts, | ||
| float | sigma, | ||
| func_bool_from_float | cb = '{}' ) |
given \\param cloud a point cloud \\param colors colors of each point in the cloud \\param tgtPoints some target points \\param tgtVerts mask of valid target points \\param sigma the distance of highest influence of a point \\param cb progress callback computes the colors in valid target points by averaging the colors from the point cloud
| float mrmeshpy.calcCombinedFillMetric | ( | Mesh | mesh, |
| FaceBitSet | filledRegion, | ||
| FillHoleMetric | metric ) |
Computes combined metric after filling a hole
| int mrmeshpy.calcDamerauLevenshteinDistance | ( | str | stringA, |
| str | stringB, | ||
| bool | caseSensitive = True, | ||
| int_output | outLeftRightAddition = None ) |
Calculates Damerau-Levenshtein distance between to strings \\param outLeftRightAddition if provided return amount of insertions to the left and to the right
calculates dipoles for given mesh and AABB-tree
| FaceScalars mrmeshpy.calcFaceDistances | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| FaceBitSet | starts, | ||
| FaceDistancesSettings | settings = '{}' ) |
computes and returns the distance of traveling from one of start faces to all other reachable faces on the mesh; all unreachable faces will get FLT_MAX value; \\param starts all start faces will get value 0 in the result; \\param metric metric(e) says the distance of traveling from left(e) to right(e)
| float mrmeshpy.calcFastWindingNumber | ( | Dipoles | dipoles, |
| AABBTree | tree, | ||
| Mesh | mesh, | ||
| Vector3f | q, | ||
| float | beta, | ||
| FaceId | skipFace ) |
compute approximate winding number at \\param q; \\param beta determines the precision of the approximation: the more the better, recommended value 2 or more; if distance from q to the center of some triangle group is more than beta times the distance from the center to most distance triangle in the group then we use approximate formula \\param skipFace this triangle (if it is close to \\param q) will be skipped from summation
| float mrmeshpy.calcLength | ( | std_vector_Vector2_double | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
| float mrmeshpy.calcLength | ( | std_vector_Vector2_float | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
| float mrmeshpy.calcLength | ( | std_vector_Vector3_double | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
| float mrmeshpy.calcLength | ( | std_vector_Vector3_float | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
| Vector3d mrmeshpy.calcOrientedArea | ( | std_vector_Id_EdgeTag | loop, |
| Mesh | mesh ) |
returns the vector with the magnitude equal to the area surrounded by the loop (if the loop is planar), and directed to see the loop in ccw order from the vector tip
| float mrmeshpy.calcOrientedArea | ( | std_vector_Vector2_double | contour | ) |
>0 for clockwise loop, < 0 for CCW loop \\tparam R is the type for the accumulation and for result
| float mrmeshpy.calcOrientedArea | ( | std_vector_Vector2_float | contour | ) |
>0 for clockwise loop, < 0 for CCW loop \\tparam R is the type for the accumulation and for result
| Vector3d mrmeshpy.calcOrientedArea | ( | std_vector_Vector3_double | contour | ) |
returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip \\tparam R is the type for the accumulation and for result
| Vector3f mrmeshpy.calcOrientedArea | ( | std_vector_Vector3_float | contour | ) |
returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip \\tparam R is the type for the accumulation and for result
| OriginAndDimensions mrmeshpy.calcOriginAndDimensions | ( | Box3f | box, |
| float | voxelSize ) |
computes origin and dimensions of voxel-grid to cover given 3D box with given spacing (voxelSize)
| float mrmeshpy.calcPathLength | ( | std_vector_Id_EdgeTag | path, |
| Mesh | mesh ) |
| float mrmeshpy.calcPathMetric | ( | std_vector_Id_EdgeTag | path, |
| func_float_from_Id_EdgeTag | metric ) |
computes summed metric of all edges in the path
| FlipEdge mrmeshpy.canFlipEdge | ( | MeshTopology | topology, |
| EdgeId | edge, | ||
| FaceBitSet | region = None, | ||
| UndirectedEdgeBitSet | notFlippable = None, | ||
| VertBitSet | vertRegion = None ) |
consider topology and constraints to decide about flip possibility
| bool mrmeshpy.canMinimizePolynomial | ( | int | degree | ) |
| bool mrmeshpy.canSolvePolynomial | ( | int | degree | ) |
| bool mrmeshpy.ccw | ( | PreciseVertCoords2 | vs | ) |
| bool mrmeshpy.ccw | ( | std_array_PreciseVertCoords2_3 | vs | ) |
return true if the smallest rotation from vector (vs[0]-vs[2]) to vector (vs[1]-vs[2]) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming larger perturbations of points with smaller id) to avoid "vectors are collinear"
return true if the smallest rotation from vector (a) to vector (b) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming perturbations a >> b) to avoid "vectors are collinear"
return true if the smallest rotation from vector (a-c) to vector (b-c) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming perturbations a >> b >> c) to avoid "vectors are collinear"
| bool mrmeshpy.checkDeloneQuadrangle | ( | Vector3d | a, |
| Vector3d | b, | ||
| Vector3d | c, | ||
| Vector3d | d, | ||
| float | maxAngleChange = 1.7976931348623157e+308 ) |
given quadrangle ABCD, checks whether its edge AC satisfies Delone's condition; if dihedral angles 1) between triangles ABD and DBC and 2) between triangles ABC and ACD differ more than on maxAngleChange then also returns true to prevent flipping from 1) to 2)
| bool mrmeshpy.checkDeloneQuadrangle | ( | Vector3f | a, |
| Vector3f | b, | ||
| Vector3f | c, | ||
| Vector3f | d, | ||
| float | maxAngleChange = 3.4028234663852886e+38 ) |
converts arguments in double and calls above function
| bool mrmeshpy.checkDeloneQuadrangleInMesh | ( | Mesh | mesh, |
| EdgeId | edge, | ||
| DeloneSettings | settings = '{}', | ||
| float_output | deviationSqAfterFlip = None ) |
consider quadrangle formed by left and right triangles of given edge, and checks whether this edge satisfies Delone's condition in the quadrangle; \\return false otherwise if flipping the edge does not introduce too large surface deviation (can be returned only for inner edge of the region)
| bool mrmeshpy.checkDeloneQuadrangleInMesh | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | edge, | ||
| DeloneSettings | settings = '{}', | ||
| float_output | deviationSqAfterFlip = None ) |
| int mrmeshpy.chunkCount | ( | int | totalSize, |
| int | chunkSize, | ||
| int | overlap = 0 ) |
returns the amount of chunks of given size required to cover the full array
| float mrmeshpy.circumcircleDiameter | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns circumcircle diameter of given mesh triangle
| float mrmeshpy.circumcircleDiameterSq | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns squared circumcircle diameter of given mesh triangle
| ShellVertexInfo mrmeshpy.classifyShellVert | ( | MeshPart | mp, |
| Vector3f | shellPoint, | ||
| FindInnerShellSettings | settings = '{}' ) |
Tests \\param shellPoint from bidirectional shell constructed for an open \\param mp; \\return whether the distance from given point to given mesh part is of same sign as settings.side, if useWindingNumber = false, returns false for all points projecting on mesh boundary
| ObjectLines mrmeshpy.cloneRegion | ( | ObjectLines | objLines, |
| UndirectedEdgeBitSet | region ) |
constructs new ObjectLines containing the region of data from input object
| ObjectMesh mrmeshpy.cloneRegion | ( | ObjectMesh | objMesh, |
| FaceBitSet | region, | ||
| bool | copyTexture = True ) |
constructs new ObjectMesh containing the region of data from input object does not copy selection
| ObjectPoints mrmeshpy.cloneRegion | ( | ObjectPoints | objPoints, |
| VertBitSet | region ) |
constructs new ObjectPoints containing the region of data from input object does not copy selection
| DistanceMap mrmeshpy.combineXYderivativeMaps | ( | tuple[DistanceMap, DistanceMap] | XYderivativeMaps | ) |
fill another distance map pair with gradients across X and Y axes of the argument map
| str mrmeshpy.commonFilesName | ( | std_vector_std_filesystem_path | files | ) |
in case of empty vector, returns "Empty" in case of single input file.ext, returns ".EXT" in case of multiple files with same extension, returns ".EXTs" otherwise returns "Files"
| None mrmeshpy.compensateRadius | ( | Mesh | mesh, |
| CompensateRadiusParams | params ) |
compensate spherical milling tool radius in given mesh region making it possible to mill it note that tool milling outer surface of the mesh also please note that boundaries of the region are fixed
| None mrmeshpy.compressZip | ( | os.PathLike | str | bytes | zipFile, |
| os.PathLike | str | bytes | sourceFolder, | ||
| std_vector_std_filesystem_path | excludeFiles = '{}', | ||
| str | password = None, | ||
| func_bool_from_float | cb = '{}' ) |
\\brief compresses given folder in given zip-file \\param excludeFiles files that should not be included to result zip \\param password if password is given then the archive will be encrypted \\param cb an option to get progress notifications and cancel the operation
| float mrmeshpy.computeBasinVolume | ( | Mesh | mesh, |
| FaceBitSet | faces, | ||
| float | level ) |
computes the volume of given mesh basin below given water level; \\param faces shall include all basin faces at least partially below the water level
| Box3f mrmeshpy.computeBoundingBox | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | region, | ||
| AffineXf3f | toWorld = None ) |
passes through all given faces (or whole mesh if region == null) and finds the minimal bounding box containing all of them if toWorld transformation is given then returns minimal bounding box in world space
| phmap_flat_hash_map_Id_VertTag_Id_VertTag mrmeshpy.computeClosestSurfacePathTargets | ( | Mesh | mesh, |
| VertBitSet | starts, | ||
| VertBitSet | ends, | ||
| VertBitSet | vertRegion = None, | ||
| VertScalars | outSurfaceDistances = None ) |
for each vertex from (starts) finds the closest vertex from (ends) in geodesic sense \\param vertRegion consider paths going in this region only
| DistanceMap mrmeshpy.computeDistanceMap | ( | MeshPart | mp, |
| MeshToDistanceMapParams | params, | ||
| func_bool_from_float | cb = '{}', | ||
| std_vector_MeshTriPoint | outSamples = None ) |
computes distance (height) map for given projection parameters using float-precision for finding ray-mesh intersections, which is faster but less reliable
| DistanceMap mrmeshpy.computeDistanceMapD | ( | MeshPart | mp, |
| MeshToDistanceMapParams | params, | ||
| func_bool_from_float | cb = '{}', | ||
| std_vector_MeshTriPoint | outSamples = None ) |
computes distance (height) map for given projection parameters using double-precision for finding ray-mesh intersections, which is slower but more reliable
| std_vector_EdgePoint mrmeshpy.computeFastMarchingPath | ( | MeshPart | mp, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| VertBitSet | vertRegion = None, | ||
| VertScalars | outSurfaceDistances = None ) |
computes by Fast Marching method and returns intermediate points of approximately geodesic path from start to end, where it crosses mesh edges; the path can be limited to given region: in face-format inside mp, or in vert-format in vertRegion argument
| QuadraticForm3f mrmeshpy.computeFormAtVertex | ( | MeshPart | mp, |
| VertId | v, | ||
| float | stabilizer, | ||
| bool | angleWeigted, | ||
| UndirectedEdgeBitSet | creases = None ) |
\\brief Computes quadratic form at given vertex of the initial surface before decimation
| Vector_QuadraticForm3f_VertId mrmeshpy.computeFormsAtVertices | ( | MeshPart | mp, |
| float | stabilizer, | ||
| bool | angleWeigted, | ||
| UndirectedEdgeBitSet | creases = None ) |
\\brief Computes quadratic forms at every vertex of mesh part before decimation
| std_vector_EdgePoint mrmeshpy.computeGeodesicPath | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| GeodesicPathApprox | atype = 'GeodesicPathApprox::FastMarching', | ||
| int | maxGeodesicIters = 100 ) |
returns intermediate points of the geodesic path from start to end, where it crosses mesh edges; It is the same as calling computeGeodesicPathApprox() then reducePath()
| std_vector_EdgePoint mrmeshpy.computeGeodesicPathApprox | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| GeodesicPathApprox | atype ) |
computes by given method and returns intermediate points of approximately geodesic path from start to end, every next point is located in the same triangle with the previous point
Compute required voxel volume's dimensions for given work area
| VertScalars mrmeshpy.computeInSphereThicknessAtVertices | ( | Mesh | mesh, |
| InSphereSearchSettings | settings, | ||
| func_bool_from_float | progress = '{}' ) |
returns the thickness at each vertex as the diameter of the maximal inscribed sphere
| MeshNormals mrmeshpy.computeMeshNormals | ( | Mesh | mesh | ) |
computes both per-face and per-vertex normals more efficiently then just calling both previous functions
| Vector3f mrmeshpy.computeNormal | ( | AllLocalTriangulations | triangs, |
| VertCoords | points, | ||
| VertId | v ) |
compute normal at point by averaging neighbor triangle normals weighted by triangle's angle at the point
| Vector_std_array_Vector3f_3_FaceId mrmeshpy.computePerCornerNormals | ( | Mesh | mesh, |
| UndirectedEdgeBitSet | creases ) |
returns a vector with corner normals in every element for valid mesh faces; corner normals of adjacent triangles are equal, unless they are separated by crease edges
| FaceNormals mrmeshpy.computePerFaceNormals | ( | Mesh | mesh | ) |
returns a vector with face-normal in every element for valid mesh faces
fills buffer with face-normals as Vector4f for valid mesh faces
| VertCoords mrmeshpy.computePerVertNormals | ( | Mesh | mesh | ) |
returns a vector with vertex normals in every element for valid mesh vertices
| VertCoords mrmeshpy.computePerVertPseudoNormals | ( | Mesh | mesh | ) |
returns a vector with vertex pseudonormals in every element for valid mesh vertices see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.9173&rep=rep1&type=pdf
| VertScalars mrmeshpy.computeRayThicknessAtVertices | ( | Mesh | mesh, |
| func_bool_from_float | progress = '{}' ) |
returns the distance from each vertex along minus normal to the nearest mesh intersection (or FLT_MAX if no intersection found)
| VertScalars mrmeshpy.computeSkyViewFactor | ( | Mesh | terrain, |
| VertCoords | samples, | ||
| VertBitSet | validSamples, | ||
| std_vector_SkyPatch | skyPatches, | ||
| BitSet | outSkyRays = None, | ||
| std_vector_MeshIntersectionResult | outIntersections = None ) |
computes relative radiation in each valid sample point by emitting rays from that point in the sky:
the radiation is 1.0f if all rays reach the sky not hitting the terrain;
the radiation is 0.0f if all rays do not reach the sky because they are intercepted by the terrain;
\\param outSkyRays - optional output bitset where for every valid sample #i its rays are stored at indices [i*numPatches; (i+1)*numPatches),
0s for occluded rays (hitting the terrain) and 1s for the ones which don't hit anything and reach the sky
\\param outIntersections - optional output vector of MeshIntersectionResult for every valid sample point
| VertScalars mrmeshpy.computeSpaceDistances | ( | Mesh | mesh, |
| PointOnFace | start, | ||
| float | range ) |
computes Euclidean 3D distances from given start point to all neighbor vertices within given \\param range and to first vertices with the distance more than range
| std_vector_EdgePoint mrmeshpy.computeSteepestDescentPath | ( | MeshPart | mp, |
| VertScalars | field, | ||
| MeshTriPoint | start, | ||
| ComputeSteepestDescentPathSettings | settings = '{}' ) |
computes the path (edge points crossed by the path) staring in given point and moving in each triangle in minus gradient direction of given field; the path stops when it reaches a local minimum in the field or one of stop conditions in settings
| None mrmeshpy.computeSteepestDescentPath | ( | MeshPart | mp, |
| VertScalars | field, | ||
| MeshTriPoint | start, | ||
| std_vector_EdgePoint | outPath, | ||
| ComputeSteepestDescentPathSettings | settings = '{}' ) |
computes the path (edge points crossed by the path) staring in given point and moving in each triangle in minus gradient direction of given field, and outputs the path in \\param outPath if requested; the path stops when it reaches a local minimum in the field or one of stop conditions in settings
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| float | maxDist = 3.4028234663852886e+38, | ||
| VertBitSet | region = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start point, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| VertBitSet | region = None, | ||
| bool_output | endReached = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distance in mesh vertices from given start point, stopping when all vertices in the face where end is located are reached; \\details considered paths can go either along edges or straightly within triangles \\param endReached if pointer provided it will receive where a path from start to end exists
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| phmap_flat_hash_map_Id_VertTag_float | startVertices, | ||
| float | maxDist = 3.4028234663852886e+38, | ||
| VertBitSet | region = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices with values in them, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | starts, | ||
| float | maxDist = 3.4028234663852886e+38, | ||
| VertBitSet | region = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start points, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| VertBitSet | startVertices, | ||
| float | maxDist = 3.4028234663852886e+38, | ||
| VertBitSet | region = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
| VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
| VertBitSet | startVertices, | ||
| VertBitSet | targetVertices, | ||
| float | maxDist = 3.4028234663852886e+38, | ||
| VertBitSet | region = None, | ||
| int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices, stopping when all targetVertices or maxDist is reached; considered paths can go either along edges or straightly within triangles
| std_vector_EdgePoint mrmeshpy.computeSurfacePath | ( | MeshPart | mp, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| int | maxGeodesicIters = 5, | ||
| VertBitSet | vertRegion = None, | ||
| VertScalars | outSurfaceDistances = None ) |
returns intermediate points of the geodesic path from start to end, where it crosses mesh edges; the path can be limited to given region: in face-format inside mp, or in vert-format in vertRegion argument. It is the same as calling computeFastMarchingPath() then reducePath()
| Mesh mrmeshpy.computeSweptVolumeWithCustomToolDistance | ( | IComputeToolDistance | comp, |
| ComputeSweptVolumeParameters | params ) |
Compute swept volume for given toolpath and tool Creates a distance-to-tool volume using custom tool distance computation object and converts it to mesh using the marching cubes algorithm
| Mesh mrmeshpy.computeSweptVolumeWithDistanceVolume | ( | ComputeSweptVolumeParameters | params | ) |
Compute swept volume for given toolpath and tool Creates a distance-to-tool volume and converts it to mesh using the marching cubes algorithm
| Mesh mrmeshpy.computeSweptVolumeWithMeshMovement | ( | ComputeSweptVolumeParameters | params | ) |
Compute swept volume for given toolpath and tool Builds mesh for each tool movement and joins them using voxel boolean
| std_array_int_4 mrmeshpy.computeTrianglesRepetitions | ( | AllLocalTriangulations | triangs | ) |
computes statistics about the number of triangle repetitions in local triangulations
Compute bounding box for swept volume for given tool and toolpath
| ToolPathResult mrmeshpy.constantCuspToolPath | ( | MeshPart | mp, |
| ConstantCuspParams | params ) |
compute path of the milling tool for the given mesh with parameters ( direction of milling is from up to down along Z-direction ) this toolpath is built from geodesic parallels divercing from the given start point or from the bounaries of selected areas if neither is specified, the lowest section by XY plane will be used as a start contour mesh can be transformed using xf parameter
| ToolPathResult mrmeshpy.constantZToolPath | ( | MeshPart | mp, |
| ToolPathParams | params ) |
compute path of the milling tool for the given mesh with parameters ( direction of milling is from up to down along Z-direction ) this toolpath is built from the parallel sections along Z-axis mesh can be transformed using xf parameter
| bool mrmeshpy.contains | ( | FaceBitSet | bitset, |
| FaceId | id ) |
| Polyline2 mrmeshpy.contourIntersection | ( | Polyline2 | contoursA, |
| Polyline2 | contoursB, | ||
| ContourToDistanceMapParams | params, | ||
| float | offsetInside = 0.0 ) |
\\brief computes the intersection of the shapes bounded by input 2d contours \\return the boundary of the intersection \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
| Polyline2 mrmeshpy.contourSubtract | ( | Polyline2 | contoursA, |
| Polyline2 | contoursB, | ||
| ContourToDistanceMapParams | params, | ||
| float | offsetInside = 0.0 ) |
\\brief computes the difference between the shapes bounded by contoursA and the shapes bounded by contoursB \\return the boundary of the difference \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
| Polyline2 mrmeshpy.contourUnion | ( | Polyline2 | contoursA, |
| Polyline2 | contoursB, | ||
| ContourToDistanceMapParams | params, | ||
| float | offsetInside = 0 ) |
\\brief computes the union of the shapes bounded by input 2d contours \\return the boundary of the union \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
| std_vector_std_vector_Vector2_double mrmeshpy.convertContoursTo2d | ( | std_vector_std_vector_Vector2_double | from_ | ) |
| std_vector_std_vector_Vector2_double mrmeshpy.convertContoursTo2d | ( | std_vector_std_vector_Vector2_float | from_ | ) |
| std_vector_std_vector_Vector2_double mrmeshpy.convertContoursTo2d | ( | std_vector_std_vector_Vector3_double | from_ | ) |
| std_vector_std_vector_Vector2_double mrmeshpy.convertContoursTo2d | ( | std_vector_std_vector_Vector3_float | from_ | ) |
| std_vector_std_vector_Vector2_float mrmeshpy.convertContoursTo2f | ( | std_vector_std_vector_Vector2_double | from_ | ) |
| std_vector_std_vector_Vector2_float mrmeshpy.convertContoursTo2f | ( | std_vector_std_vector_Vector2_float | from_ | ) |
| std_vector_std_vector_Vector2_float mrmeshpy.convertContoursTo2f | ( | std_vector_std_vector_Vector3_double | from_ | ) |
| std_vector_std_vector_Vector2_float mrmeshpy.convertContoursTo2f | ( | std_vector_std_vector_Vector3_float | from_ | ) |
| std_vector_std_vector_Vector3_double mrmeshpy.convertContoursTo3d | ( | std_vector_std_vector_Vector2_double | from_ | ) |
| std_vector_std_vector_Vector3_double mrmeshpy.convertContoursTo3d | ( | std_vector_std_vector_Vector2_float | from_ | ) |
| std_vector_std_vector_Vector3_double mrmeshpy.convertContoursTo3d | ( | std_vector_std_vector_Vector3_double | from_ | ) |
| std_vector_std_vector_Vector3_double mrmeshpy.convertContoursTo3d | ( | std_vector_std_vector_Vector3_float | from_ | ) |
| std_vector_std_vector_Vector3_float mrmeshpy.convertContoursTo3f | ( | std_vector_std_vector_Vector2_double | from_ | ) |
| std_vector_std_vector_Vector3_float mrmeshpy.convertContoursTo3f | ( | std_vector_std_vector_Vector2_float | from_ | ) |
| std_vector_std_vector_Vector3_float mrmeshpy.convertContoursTo3f | ( | std_vector_std_vector_Vector3_double | from_ | ) |
| std_vector_std_vector_Vector3_float mrmeshpy.convertContoursTo3f | ( | std_vector_std_vector_Vector3_float | from_ | ) |
| std_vector_Vector2_double mrmeshpy.convertContourTo2d | ( | std_vector_Vector2_double | from_ | ) |
| std_vector_Vector2_double mrmeshpy.convertContourTo2d | ( | std_vector_Vector2_float | from_ | ) |
| std_vector_Vector2_double mrmeshpy.convertContourTo2d | ( | std_vector_Vector3_double | from_ | ) |
| std_vector_Vector2_double mrmeshpy.convertContourTo2d | ( | std_vector_Vector3_float | from_ | ) |
| std_vector_Vector2_float mrmeshpy.convertContourTo2f | ( | std_vector_Vector2_double | from_ | ) |
Instantiate the templates when generating bindings.
| std_vector_Vector2_float mrmeshpy.convertContourTo2f | ( | std_vector_Vector2_float | from_ | ) |
Instantiate the templates when generating bindings.
| std_vector_Vector2_float mrmeshpy.convertContourTo2f | ( | std_vector_Vector3_double | from_ | ) |
Instantiate the templates when generating bindings.
| std_vector_Vector2_float mrmeshpy.convertContourTo2f | ( | std_vector_Vector3_float | from_ | ) |
Instantiate the templates when generating bindings.
| std_vector_Vector3_double mrmeshpy.convertContourTo3d | ( | std_vector_Vector2_double | from_ | ) |
| std_vector_Vector3_double mrmeshpy.convertContourTo3d | ( | std_vector_Vector2_float | from_ | ) |
| std_vector_Vector3_double mrmeshpy.convertContourTo3d | ( | std_vector_Vector3_double | from_ | ) |
| std_vector_Vector3_double mrmeshpy.convertContourTo3d | ( | std_vector_Vector3_float | from_ | ) |
| std_vector_Vector3_float mrmeshpy.convertContourTo3f | ( | std_vector_Vector2_double | from_ | ) |
| std_vector_Vector3_float mrmeshpy.convertContourTo3f | ( | std_vector_Vector2_float | from_ | ) |
| std_vector_Vector3_float mrmeshpy.convertContourTo3f | ( | std_vector_Vector3_double | from_ | ) |
| std_vector_Vector3_float mrmeshpy.convertContourTo3f | ( | std_vector_Vector3_float | from_ | ) |
| Image mrmeshpy.convertDistanceMapToImage | ( | DistanceMap | distMap, |
| float | threshold = 0.003921568859368563 ) |
export distance map to a grayscale image \\param threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
| DistanceMap mrmeshpy.convertImageToDistanceMap | ( | Image | image, |
| float | threshold = 0.003921568859368563, | ||
| bool | invert = True ) |
load distance map from a grayscale image: \\param threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid \\param invert - whether to invert values (min is white) or leave them as is (min is block)
| None mrmeshpy.convertIntFloatAllVerts | ( | Mesh | mesh, |
| CoordinateConverters | conv ) |
converts all vertices of the mesh first in integer-coordinates, and then back in float-coordinates; this is necessary to avoid small self-intersections near newly introduced vertices on cut-contours; this actually sligntly moves only small perentage of vertices near x=0 or y=0 or z=0 planes, where float-precision is higher than int-precision; newly introduced vertices on cut-contours are also converted, but we expected that they remain unchanged due to idempotent property of the conversion
| std_vector_OneMeshContour mrmeshpy.convertMeshTriPointsSurfaceOffsetToMeshContours | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| float | offset, | ||
| SearchPathSettings | searchSettings = '{}' ) |
\\brief Makes continuous contour by iso-line from mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build offset contour on surface for MR::cutMesh input \\param offset amount of offset form given point, note that absolute value is used and isoline in both direction returned \\param searchSettings settings for search geodesic path
| std_vector_OneMeshContour mrmeshpy.convertMeshTriPointsSurfaceOffsetToMeshContours | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| func_float_from_int | offsetAtPoint, | ||
| SearchPathSettings | searchSettings = '{}' ) |
\\brief Makes continuous contour by iso-line from mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build offset contour on surface for MR::cutMesh input \\param offsetAtPoint functor that returns amount of offset form arg point, note that absolute value is used and isoline in both direction returned \\param searchSettings settings for search geodesic path
| OneMeshContour mrmeshpy.convertMeshTriPointsToClosedContour | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| SearchPathSettings | searchSettings = '{}', | ||
| std_vector_int | pivotIndices = None ) |
\\brief Makes closed continuous contour by mesh tri points, note that first and last meshTriPoint should not be same Finds shortest paths between neighbor \\p surfaceLine and build closed contour MR::cutMesh input \\param pivotIndices optional output indices of given surfaceLine in result OneMeshContour \\note better use convertMeshTriPointsToMeshContour(...) instead, note that it requires same front and back MeshTriPoints for closed contour
| OneMeshContour mrmeshpy.convertMeshTriPointsToMeshContour | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| SearchPathSettings | searchSettings = '{}', | ||
| std_vector_int | pivotIndices = None ) |
\\brief Makes continuous contour by mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build contour MR::cutMesh input \\param searchSettings settings for search geo path \\param pivotIndices optional output indices of given surfaceLine in result OneMeshContour
| std_vector_OneMeshContour mrmeshpy.convertSurfacePathsToMeshContours | ( | Mesh | mesh, |
| std_vector_std_vector_EdgePoint | surfacePaths ) |
\\brief Converts SurfacePaths to OneMeshContours Creates MR::OneMeshContours object from given surface paths for MR::cutMesh input
| OneMeshContour mrmeshpy.convertSurfacePathWithEndsToMeshContour | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| std_vector_EdgePoint | surfacePath, | ||
| MeshTriPoint | end ) |
\\brief Converts SurfacePath to OneMeshContours
Creates MR::OneMeshContour object from given surface path with ends for MR::cutMesh input
`start` and surfacePath.front() should be from same face
surfacePath.back() and `end` should be from same face
note that whole path (including `start` and `end`) should not have self-intersections
also following case is not supported (vertex -> edge (incident with vertex)):
vert path edge point path edge end
o----------o- -- -- -- -- O
\\ \\ /
\\ \\ /
\\ \\ /
\\\\/
o path
| Mesh mrmeshpy.copySubdividePackMesh | ( | MeshPart | mp, |
| float | voxelSize, | ||
| func_bool_from_float | cb = '{}' ) |
creates a copy of given mesh part, subdivides it to get rid of too long edges compared with voxelSize, then packs resulting mesh, this is called typically in preparation for 3D space sampling with voxelSize step, and subdivision is important for making leaves of AABB tree not too big compared with voxelSize
| float mrmeshpy.cotan | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | ue ) |
computes sum of cotangents of the angle in the left and right triangles opposite to given edge, consider cotangents zero for not existing triangles
| Object mrmeshpy.createObject | ( | str | className | ) |
the function to create new object instance by registered class name
| MeshProjectionTransforms mrmeshpy.createProjectionTransforms | ( | AffineXf3f | storageXf, |
| AffineXf3f | pointXf, | ||
| AffineXf3f | treeXf ) |
<summary> Creates structure with simplified transforms for projection functions, with `rigidXfPoint` applied to point, and `nonRigidXfTree` applied to tree </summary> <param name="storageXf">this argument will hold modified transfrom</param> <param name="pointXf">transform for points to be projected</param> <param name="treeXf">transform for tree's boxes</param> <returns>structure with simplified transforms</returns>
| SceneRootObject mrmeshpy.createRootFormObject | ( | Object | obj | ) |
Removes all `obj` children and attaches it to newly created `SceneRootObject` note that it does not respect `obj` xf
| std_vector_std_vector_Vector2_float mrmeshpy.createSymbolContours | ( | SymbolMeshParams | params | ) |
converts text string into set of contours
| Mesh mrmeshpy.createSymbolsMesh | ( | SymbolMeshParams | params | ) |
converts text string into Z-facing symbol mesh
| FloatGrid mrmeshpy.cropped | ( | FloatGrid | grid, |
| Box3i | box, | ||
| func_bool_from_float | cb = '{}' ) |
returns cropped grid
| std_vector_Id_EdgeTag mrmeshpy.cutAlongEdgeLoop | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | c0 ) |
given a closed loop of edges, splits the surface along that loop so that after return: 1) returned loop has the same size as input, with corresponding edges in same indexed elements of both; 2) all edges of c0 have no left faces; 3) all returned edges have no right faces; 4) vertices of the given mesh are updated
| std_vector_Id_EdgeTag mrmeshpy.cutAlongEdgeLoop | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | c0 ) |
given a closed loop of edges, splits the surface along that loop so that after return: 1) returned loop has the same size as input, with corresponding edges in same indexed elements of both; 2) all edges of c0 have no left faces; 3) all returned edges have no right faces;
| CutMeshResult mrmeshpy.cutMesh | ( | Mesh | mesh, |
| std_vector_OneMeshContour | contours, | ||
| CutMeshParameters | params = '{}' ) |
\\brief Cuts mesh by given contours This function cuts mesh making new edges paths on place of input contours \\param mesh Input mesh that will be cut \\param contours Input contours to cut mesh with, find more \\ref MR::OneMeshContours \\param params Parameters describing some cut options, find more \\ref MR::CutMeshParameters \\return New edges that correspond to given contours, find more \\ref MR::CutMeshResult \\parblock \\warning Input contours should have no intersections, faces where contours intersects (`bad faces`) will not be allowed for fill \\endparblock \\parblock \\warning Input mesh will be changed in any case, if `bad faces` are in mesh, mesh will be spoiled, \\n so if you cannot guarantee contours without intersections better make copy of mesh, before using this function \\endparblock
| FaceBitSet mrmeshpy.cutMeshByContour | ( | Mesh | mesh, |
| std_vector_Vector3_float | contour, | ||
| AffineXf3f | xf = '{}' ) |
Cuts \\p mesh by \\p contour by projecting all the points \\param xf transformation from the CSYS of \\p contour to the CSYS of \\p mesh \\note \\p mesh is modified, see \\ref cutMesh for info \\note it might be useful to subdivide mesh before cut, to avoid issues related to lone contours \\return Faces to the left of the polyline
| FaceBitSet mrmeshpy.cutMeshByContours | ( | Mesh | mesh, |
| std_vector_std_vector_Vector3_float | contours, | ||
| AffineXf3f | xf = '{}' ) |
Cuts \\p mesh by \\p contours by projecting all the points \\param xf transformation from the CSYS of \\p contour to the CSYS of \\p mesh \\note \\p mesh is modified, see \\ref cutMesh for info \\note it might be useful to subdivide mesh before cut, to avoid issues related to lone contours \\return Faces to the left of the polyline
| std_vector_std_vector_Id_EdgeTag mrmeshpy.cutMeshByProjection | ( | Mesh | mesh, |
| std_vector_std_vector_Vector3_float | contours, | ||
| CutByProjectionSettings | settings ) |
<summary> Performs orthographic projection with of given contours to mesh and cut result lines, fails if any point of contours has missed mesh on projection stage or cut contours contains self-intersections \\note it might be useful to subdivide mesh before cut, to avoid issues related to lone contours </summary> <param name="mesh"> for cutting, it will be changed</param> <param name="contours"> for projection onto mesh</param> <param name="settings"> to specify direction and \\p contours to \\p mesh space transformation</param> <returns>newly appeared edges on the mesh after cut or error</returns>
| float mrmeshpy.dblArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns twice the area of given face
| float mrmeshpy.dblArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v ) |
computes the length of summed directed double areas of all triangles around given vertex
| int mrmeshpy.deactivateFarPairs | ( | IPointPairs | pairs, |
| float | maxDistSq ) |
reset active bit if pair distance is further than maxDistSq
| DecimatePolylineResult mrmeshpy.decimateContour | ( | std_vector_Vector2_float | contour, |
| DecimatePolylineSettings_Vector2f | settings = '{}' ) |
\\brief Collapse edges in the contour according to the settings
| DecimatePolylineResult mrmeshpy.decimateContour | ( | std_vector_Vector3_float | contour, |
| DecimatePolylineSettings_Vector3f | settings = '{}' ) |
| DecimateResult mrmeshpy.decimateMesh | ( | Mesh | mesh, |
| DecimateSettings | settings = '{}' ) |
\\brief Performs mesh simplification in mesh region according to the settings \\snippet cpp-examples/MeshDecimate.dox.cpp 0 \\image html decimate/decimate_before.png "Before" width = 350cm \\image html decimate/decimate_after.png "After" width = 350cm
| DecimateResult mrmeshpy.decimateObjectMeshData | ( | ObjectMeshData | data, |
| DecimateSettings | settings ) |
Performs mesh simplification with per-element attributes according to given settings; \\detail settings.region must be null, and real simplification region will be data face selection (or whole mesh if no face selection)
| DecimatePolylineResult mrmeshpy.decimatePolyline | ( | Polyline2 | polyline, |
| DecimatePolylineSettings_Vector2f | settings = '{}' ) |
\\brief Collapse edges in the polyline according to the settings
| DecimatePolylineResult mrmeshpy.decimatePolyline | ( | Polyline3 | polyline, |
| DecimatePolylineSettings_Vector3f | settings = '{}' ) |
| std_vector_unsigned_char mrmeshpy.decode64 | ( | str | val | ) |
decodes Base64 format into binary data
| None mrmeshpy.decompressZip | ( | os.PathLike | str | bytes | zipFile, |
| os.PathLike | str | bytes | targetFolder, | ||
| str | password = None ) |
\\brief decompresses given zip-file into given folder \\param password if password is given then it will be used to decipher encrypted archive
| None mrmeshpy.decompressZip | ( | typing.Any | zipStream, |
| os.PathLike | str | bytes | targetFolder, | ||
| str | password = None ) |
\\brief decompresses given binary stream (containing the data of a zip file only) into given folder \\param password if password is given then it will be used to decipher encrypted archive
| str mrmeshpy.defaultSerializeMeshFormat | ( | ) |
returns file extension used to serialize ObjectMeshHolder by default (if not overridden in specific object), the string starts with '.'
| str mrmeshpy.defaultSerializePointsFormat | ( | ) |
returns file extension used to serialize ObjectPointsHolder by default (if not overridden in specific object), the string starts with '.'
| str mrmeshpy.defaultSerializeVoxelsFormat | ( | ) |
returns file extension used to serialize ObjectVoxels by default (if not overridden in specific object), the string starts with '.'
deletes object faces with normals pointed to the target geometry center
| std_vector_std_vector_Id_EdgeTag mrmeshpy.delRegionKeepBd | ( | Mesh | mesh, |
| FaceBitSet | region = None, | ||
| bool | keepLoneHoles = False ) |
deletes all region faces, inner edges and vertices, but keeps boundary edges and vertices of the region (or whole mesh if region is null); if `keepLoneHoles` is set - keeps boundary even if it has no valid faces on other side returns edge loops, each having deleted region faces on the left, and not-region faces or holes on the right
| None mrmeshpy.denoiseNormals | ( | Mesh | mesh, |
| FaceNormals | normals, | ||
| UndirectedEdgeScalars | v, | ||
| float | gamma ) |
Smooth face normals, given \\param mesh contains topology information and coordinates for equation weights \\param normals input noisy normals and output smooth normals \\param v edge indicator function (1 - smooth edge, 0 - crease edge) \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (19)
| LoadedObjectT mrmeshpy.deserializeObjectTree | ( | os.PathLike | str | bytes | path, |
| func_void_from_std_filesystem_path | postDecompress = '{}', | ||
| func_bool_from_float | progressCb = '{}' ) |
\\brief loads objects tree from given scene file (zip/mru) \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder if postDecompress is set, it is called after decompression loading is controlled with Object::deserializeModel_ and Object::deserializeFields_
| LoadedObjectT mrmeshpy.deserializeObjectTreeFrom3mf | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads scene from 3MF file in a new container object
| LoadedObjectT mrmeshpy.deserializeObjectTreeFromFolder | ( | os.PathLike | str | bytes | folder, |
| func_bool_from_float | progressCb = '{}' ) |
\\brief loads objects tree from given scene folder \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder loading is controlled with Object::deserializeModel_ and Object::deserializeFields_
| Object mrmeshpy.deserializeObjectTreeFromGltf | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads scene from glTF file in a new container object
| LoadedObjectT mrmeshpy.deserializeObjectTreeFromModel | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads scene from .model file in a new container object
| Vector3f mrmeshpy.destPnt | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
returns coordinates of the edge destination
| std_vector_std_vector_Id_EdgeTag mrmeshpy.detectBasisTunnels | ( | MeshPart | mp, |
| func_float_from_Id_EdgeTag | metric = '{}', | ||
| func_bool_from_float | progressCallback = '{}' ) |
detects all not-contractible-in-point and not-equivalent tunnel loops on the mesh; trying to include in the loops the edges with the smallest metric; if no metric is given then discreteMinusAbsMeanCurvatureMetric will be used
| std_vector_int mrmeshpy.detectLoneContours | ( | std_vector_std_vector_VarEdgeTri | contours, |
| bool | ignoreOpen = False ) |
Detects contours that fully lay inside one triangle if `ignoreOpen` then do not mark non-closed contours as lone, even if they really are returns they indices in contours
| FaceBitSet mrmeshpy.detectTunnelFaces | ( | MeshPart | mp, |
| DetectTunnelSettings | settings = '{}' ) |
returns tunnels as a number of faces; if you remove these faces and patch every boundary with disk, then the surface will be topology equivalent to sphere
| float mrmeshpy.dihedralAngle | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
given an edge between two triangular faces, computes the dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface; please consider the usage of faster dihedralAngleSin(e) and dihedralAngleCos(e)
| float mrmeshpy.dihedralAngleCos | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
given an edge between two triangular faces, computes cosine of dihedral angle between them: 1 if both faces are in the same plane, 0 if the surface makes right angle turn at the edge, -1 if the faces overlap one another
| float mrmeshpy.dihedralAngleSin | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
given an edge between two triangular faces, computes sine of dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface
| bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
expands the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
| bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegion | ( | PointCloud | pointCloud, |
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | cb = '{}', | ||
| AffineXf3f | xf = None ) |
expands the region on given euclidian distance. returns false if callback also returns false
| bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
expands the region (of faces or vertices) on given metric value. returns false if callback also returns false
| bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| Vector3d mrmeshpy.dirArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | fs = None ) |
computes the sum of directed areas for faces from given region
computes the sum of directed areas for faces from given region (or whole mesh)
| Vector3f mrmeshpy.dirDblArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
computes directed double area for a triangular face from its vertices
| Vector3f mrmeshpy.dirDblArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v ) |
computes sum of directed double areas of all triangles around given vertex
| VertCoords mrmeshpy.dirDblAreas | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | region = None ) |
computes and returns the directed double area for every (region) vertex in the mesh
| func_float_from_Id_EdgeTag mrmeshpy.discreteAbsMeanCurvatureMetric | ( | Mesh | mesh | ) |
returns edge's absolute discrete mean curvature as a metric; the metric is minimal in the planar regions of mesh; this metric is symmetric: m(e) == m(e.sym())
| func_float_from_Id_EdgeTag mrmeshpy.discreteAbsMeanCurvatureMetric | ( | MeshTopology | topology, |
| VertCoords | points ) |
| float mrmeshpy.discreteGaussianCurvature | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v, | ||
| bool_output | outBoundaryVert = None ) |
computes discrete Gaussian curvature (or angle defect) at given vertex, which 0 in inner vertices on planar mesh parts and reaches 2*pi on needle's tip, see http://math.uchicago.edu/~may/REU2015/REUPapers/Upadhyay.pdf optionally returns whether the vertex is on boundary
| float mrmeshpy.discreteMeanCurvature | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
computes discrete mean curvature in given edge, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface
| float mrmeshpy.discreteMeanCurvature | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v ) |
computes discrete mean curvature in given vertex, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface
| func_float_from_Id_EdgeTag mrmeshpy.discreteMinusAbsMeanCurvatureMetric | ( | Mesh | mesh | ) |
returns minus of edge's absolute discrete mean curvature as a metric; the metric is minimal in the most curved regions of mesh; this metric is symmetric: m(e) == m(e.sym())
| func_float_from_Id_EdgeTag mrmeshpy.discreteMinusAbsMeanCurvatureMetric | ( | MeshTopology | topology, |
| VertCoords | points ) |
| None mrmeshpy.distanceMapFromContours | ( | DistanceMap | distMap, |
| Polyline2 | polyline, | ||
| ContourToDistanceMapParams | params, | ||
| ContoursDistanceMapOptions | options = '{}' ) |
\\brief Computes distance of 2d contours according ContourToDistanceMapParams \\param distMap - preallocated distance map \\param options - optional input and output options for distance map calculation, find more \\ref ContoursDistanceMapOptions
| DistanceMap mrmeshpy.distanceMapFromContours | ( | Polyline2 | contours, |
| ContourToDistanceMapParams | params, | ||
| ContoursDistanceMapOptions | options = '{}' ) |
\\brief Computes distance of 2d contours according ContourToDistanceMapParams \\param options - optional input and output options for distance map calculation, find more \\ref ContoursDistanceMapOptions
| tuple[Polyline2, AffineXf3f] mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
| AffineXf3f | xf, | ||
| float | isoValue, | ||
| bool | useDepth = False ) |
computes iso-lines of distance map corresponding to given iso-value; in second returns the transformation from 0XY plane to world; \\param useDepth true - the isolines will be located on distance map surface, false - isolines for any iso-value will be located on the common plane xf(0XY)
| Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
| ContourToDistanceMapParams | params, | ||
| float | isoValue ) |
iso-lines are created in real space ( plane OXY with parameters according ContourToDistanceMapParams )
| Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
| float | isoValue ) |
converts distance map to 2d iso-lines: iso-lines are created in space DistanceMap ( plane OXY with pixelSize = (1, 1) )
| Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
| float | pixelSize, | ||
| float | isoValue ) |
| Mesh mrmeshpy.distanceMapToMesh | ( | DistanceMap | distMap, |
| AffineXf3f | toWorld, | ||
| func_bool_from_float | cb = '{}' ) |
converts distance map into mesh and applies a transformation to all points
| PointCloud mrmeshpy.divideWithPlane | ( | PointCloud | points, |
| Plane3f | plane, | ||
| DividePointCloudOptionalOutput | optOut = '{}' ) |
This function cuts a point cloud with a plane, leaving only the part of mesh that lay in positive direction of normal \\return Point cloud object with vertices on the positive side of the plane \\param pc Input point cloud that will be cut by the plane \\param plane Input plane to cut point cloud with \\param optOut optional output of the function
| Mesh mrmeshpy.doBooleanOperation | ( | Mesh | meshACut, |
| Mesh | meshBCut, | ||
| std_vector_std_vector_Id_EdgeTag | cutEdgesA, | ||
| std_vector_std_vector_Id_EdgeTag | cutEdgesB, | ||
| BooleanOperation | operation, | ||
| AffineXf3f | rigidB2A = None, | ||
| BooleanResultMapper | mapper = None, | ||
| bool | mergeAllNonIntersectingComponents = False, | ||
| BooleanInternalParameters | intParams = '{}' ) |
Perform boolean operation on cut meshes \\return mesh in space of meshA or error. \\note: actually this function is meant to be internal, use "boolean" instead
| SegmentSegmentIntersectResult mrmeshpy.doSegmentSegmentIntersect | ( | std_array_PreciseVertCoords2_4 | vs | ) |
checks whether the segments AB (indices 01) and segments CD (indices 23) intersect; uses simulation-of-simplicity to avoid edge-segment intersections and co-planarity
| int mrmeshpy.dot | ( | Vector2i64 | a, |
| Vector2i64 | b ) |
dot product
| int mrmeshpy.dot | ( | Vector3_unsigned_char | a, |
| Vector3_unsigned_char | b ) |
dot product
| int mrmeshpy.dot | ( | Vector3i64 | a, |
| Vector3i64 | b ) |
dot product
| int mrmeshpy.dot | ( | Vector4_unsigned_char | a, |
| Vector4_unsigned_char | b ) |
dot product
| int mrmeshpy.dot | ( | Vector4i64 | a, |
| Vector4i64 | b ) |
dot product
| TriangleSegmentIntersectResult mrmeshpy.doTriangleSegmentIntersect | ( | std_array_PreciseVertCoords_5 | vs | ) |
checks whether triangle ABC (indices 012) and segment DE (indices 34) intersect uses simulation-of-simplicity to avoid edge-segment intersections and co-planarity
| Mesh mrmeshpy.doubleOffsetMesh | ( | MeshPart | mp, |
| float | offsetA, | ||
| float | offsetB, | ||
| OffsetParameters | params = '{}' ) |
Offsets mesh by converting it to voxels and back two times only closed meshes allowed (only Offset mode) typically offsetA and offsetB have distinct signs
| Mesh mrmeshpy.doubleOffsetVdb | ( | MeshPart | mp, |
| DoubleOffsetSettings | settings ) |
performs convention from mesh to voxel grid and back with offsetA, and than same with offsetB; if input mesh is not closed then the sign of distance field will be obtained using generalized winding number computation
| int mrmeshpy.duplicateMultiHoleVertices | ( | Mesh | mesh | ) |
Duplicates all vertices having more than two boundary edges (and returns the number of duplications);
| Vector3f mrmeshpy.edgeCenter | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
computes the center of given edge
| func_float_from_Id_EdgeTag mrmeshpy.edgeCurvMetric | ( | Mesh | mesh, |
| float | angleSinFactor = 2, | ||
| float | angleSinForBoundary = 0 ) |
returns edge's metric that depends both on edge's length and on the angle between its left and right faces \\param angleSinFactor multiplier before dihedral angle sine in edge metric calculation (positive to prefer concave angles, negative - convex) \\param angleSinForBoundary consider this dihedral angle sine for boundary edges; this metric is symmetric: m(e) == m(e.sym())
| func_float_from_Id_EdgeTag mrmeshpy.edgeCurvMetric | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| float | angleSinFactor = 2, | ||
| float | angleSinForBoundary = 0 ) |
| float mrmeshpy.edgeLength | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
returns Euclidean length of the edge
| func_float_from_Id_EdgeTag mrmeshpy.edgeLengthMetric | ( | Mesh | mesh | ) |
returns edge's length as a metric; this metric is symmetric: m(e) == m(e.sym())
| func_float_from_Id_EdgeTag mrmeshpy.edgeLengthMetric | ( | MeshTopology | topology, |
| VertCoords | points ) |
| UndirectedEdgeScalars mrmeshpy.edgeLengths | ( | MeshTopology | topology, |
| VertCoords | points ) |
computes and returns the lengths of all edges in the mesh
| float mrmeshpy.edgeLengthSq | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e ) |
returns squared Euclidean length of the edge (faster to compute than length)
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
| Vector3f mrmeshpy.edgePoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e, | ||
| float | f ) |
returns a point on the edge: origin point for f=0 and destination point for f=1
| Vector3f mrmeshpy.edgePoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgePoint | ep ) |
computes coordinates of point given as edge and relative position on it
| std_vector_Vector3_float mrmeshpy.edgePointsFromContours | ( | Polyline2 | polyline, |
| float | pixelSize, | ||
| float | threshold ) |
Makes distance map and filter out pixels with large (>threshold) distance between closest points on contour in neighbor pixels Converts such points back in 3d space and return \\note that polyline topology should be consistently oriented
| LineSegm3f mrmeshpy.edgeSegment | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
returns line segment of given edge
| func_float_from_Id_EdgeTag mrmeshpy.edgeTableSymMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric ) |
pre-computes the metric for all mesh edges to quickly return it later for any edge; input metric must be symmetric: metric(e) == metric(e.sym())
| Vector3f mrmeshpy.edgeVector | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
returns vector equal to edge destination point minus edge origin point
| EdgeId mrmeshpy.eliminateDegree3Dest | ( | MeshTopology | topology, |
| EdgeId | e, | ||
| FaceBitSet | region = None ) |
if the destination of given edge has degree 3 and 3 incident triangles, then eliminates the destination vertex with all its edges and all but one faces, and returns valid remaining edge with same origin as e; if region is provided then eliminated triangles are excluded from it; otherwise returns invalid edge
| int mrmeshpy.eliminateDegree3Vertices | ( | MeshTopology | topology, |
| VertBitSet | region, | ||
| FaceBitSet | fs = None ) |
eliminates from the mesh all vertices having degree 3 and 3 incident triangles from given region (which is updated); if \\param fs is provided then eliminated triangles are excluded from it; \\return the number of vertices eliminated
| EdgeId mrmeshpy.eliminateDoubleTris | ( | MeshTopology | topology, |
| EdgeId | e, | ||
| FaceBitSet | region = None ) |
if the edge e has both left and right triangular faces and the degree of dest( e ) is 2, then eliminates left( e ), right( e ), e, e.sym(), next( e ), dest( e ), and returns prev( e ); if region is provided then eliminated faces are excluded from it; otherwise returns invalid edge
| None mrmeshpy.eliminateDoubleTrisAround | ( | MeshTopology | topology, |
| VertId | v, | ||
| FaceBitSet | region = None ) |
eliminates all double triangles around given vertex preserving vertex valid; if region is provided then eliminated triangles are excluded from it
| Mesh mrmeshpy.embedStructureToTerrain | ( | Mesh | terrain, |
| Mesh | structure, | ||
| EmbeddedStructureParameters | params ) |
Returns terrain mesh with structure embedded to it, or error string terrain - mesh with +Z normal (not-closed mesh is expected) structure - mesh with one open contour and +Z normal, that will be embedded in terrain
| str mrmeshpy.encode64 | ( | int | data, |
| int | size ) |
encodes binary data into textual Base64 format
| ViewportIterator mrmeshpy.end | ( | * | args, |
| ** | kwargs ) |
| ChunkIterator mrmeshpy.end | ( | IteratorRange_ChunkIterator | range | ) |
| PolylineUndirectedEdgeIterator mrmeshpy.end | ( | IteratorRange_PolylineUndirectedEdgeIterator | range | ) |
| RingIterator_NextEdgeSameLeft mrmeshpy.end | ( | IteratorRange_RingIterator_NextEdgeSameLeft | range | ) |
| RingIterator_NextEdgeSameOrigin mrmeshpy.end | ( | IteratorRange_RingIterator_NextEdgeSameOrigin | range | ) |
| UndirectedEdgeIterator mrmeshpy.end | ( | IteratorRange_UndirectedEdgeIterator | range | ) |
| bool mrmeshpy.equalizeTriAreas | ( | Mesh | mesh, |
| MeshEqualizeTriAreasParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of iterations with movement toward vertexPosEqualNeiAreas() to the whole mesh ( or some region if it is specified ) \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
| bool mrmeshpy.equalizeTriAreas | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshEqualizeTriAreasParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
shrinks the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
| bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegion | ( | PointCloud | pointCloud, |
| VertBitSet | region, | ||
| float | erosion, | ||
| func_bool_from_float | cb = '{}', | ||
| AffineXf3f | xf = None ) |
shrinks the region on given euclidian distance. returns false if callback also returns false
| bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| FaceBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
shrinks the region (of faces or vertices) on given metric value. returns false if callback also returns false
| bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| UndirectedEdgeBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
| func_float_from_Id_EdgeTag | metric, | ||
| VertBitSet | region, | ||
| float | dilation, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.evalGridMinMax | ( | FloatGrid | grid, |
| float_output | min, | ||
| float_output | max ) |
eval min max value from FloatGrid
| None mrmeshpy.executeHoleFillPlan | ( | Mesh | mesh, |
| EdgeId | a0, | ||
| HoleFillPlan | plan, | ||
| FaceBitSet | outNewFaces = None ) |
quickly triangulates the face or hole to the left of (e) given the plan (quickly compared to fillHole function)
| None mrmeshpy.expand | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| int | hops = 1 ) |
adds to the region all faces within given number of hops (stars) from the initial region boundary
| FaceBitSet mrmeshpy.expand | ( | MeshTopology | topology, |
| FaceId | f, | ||
| int | hops ) |
returns the region of all faces within given number of hops (stars) from the initial face
| None mrmeshpy.expand | ( | MeshTopology | topology, |
| VertBitSet | region, | ||
| int | hops = 1 ) |
adds to the region all vertices within given number of hops (stars) from the initial region boundary
| VertBitSet mrmeshpy.expand | ( | MeshTopology | topology, |
| VertId | v, | ||
| int | hops ) |
returns the region of all vertices within given number of hops (stars) from the initial vertex
| FaceBitSet mrmeshpy.expandFaces | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| UndirectedEdgeBitSet | stopEdges = None ) |
returns given region with all faces sharing an edge with a region face; \\param stopEdges - neighborhood via this edges will be ignored
| None mrmeshpy.expandPixelMask | ( | PixelBitSet | mask, |
| RectIndexer | indexer, | ||
| int | expansion = 1 ) |
expands PixelBitSet with given number of steps
| None mrmeshpy.expandVoxelsMask | ( | VoxelBitSet | mask, |
| VolumeIndexer | indexer, | ||
| int | expansion = 1 ) |
expands VoxelBitSet with given number of steps
| ObjectGcode mrmeshpy.exportToolPathToGCode | ( | std_vector_GCommand | commands | ) |
generates G-Code for milling tool
| std_vector_Id_EdgeTag mrmeshpy.extendAllHoles | ( | Mesh | mesh, |
| Plane3f | plane, | ||
| FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of too all holes of the mesh by calling extendHole(...); \\return representative edges of one per every hole after extension
| EdgeId mrmeshpy.extendHole | ( | Mesh | mesh, |
| EdgeId | a, | ||
| func_Vector3_float_from_Vector3_float | getVertPos, | ||
| FaceBitSet | outNewFaces = None ) |
adds extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located at getVertPos( existing vertex position ); \\return the edge of new hole opposite to input edge (a)
| EdgeId mrmeshpy.extendHole | ( | Mesh | mesh, |
| EdgeId | a, | ||
| Plane3f | plane, | ||
| FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located in given plane and 2 * number_of_hole_edge triangles; \\return the edge of new hole opposite to input edge (a)
| std_vector_std_vector_Id_EdgeTag mrmeshpy.extractClosedLoops | ( | MeshTopology | topology, |
| EdgeBitSet | edges ) |
finds all closed loops from given edges and removes them from edges
| std_vector_std_vector_Id_EdgeTag mrmeshpy.extractClosedLoops | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | inEdges, | ||
| EdgeBitSet | outNotLoopEdges = None ) |
| std_vector_std_vector_EdgePoint mrmeshpy.extractIsolines | ( | MeshTopology | topology, |
| func_float_from_Id_VertTag | vertValues, | ||
| FaceBitSet | region = None ) |
extracts all iso-lines from given scalar field and iso-value=0
| std_vector_std_vector_EdgePoint mrmeshpy.extractIsolines | ( | MeshTopology | topology, |
| VertScalars | vertValues, | ||
| float | isoValue, | ||
| FaceBitSet | region = None ) |
extracts all iso-lines from given scalar field and iso-value
| std_vector_Id_EdgeTag mrmeshpy.extractLongestClosedLoop | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | inEdges ) |
| std_vector_std_vector_Vector3_float mrmeshpy.extractMeshContours | ( | std_vector_OneMeshContour | meshContours | ) |
Converts OneMeshContours contours representation to Contours3f: set of coordinates
| std_vector_std_vector_EdgePoint mrmeshpy.extractPlaneSections | ( | MeshPart | mp, |
| Plane3f | plane, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
extracts all plane sections of given mesh
| std_vector_EdgeSegment mrmeshpy.extractSectionsFromPolyline | ( | Polyline3 | polyline, |
| Plane3f | plane, | ||
| float | eps, | ||
| UndirectedEdgeBitSet | positiveEdges = '{}' ) |
This function cuts polyline with a plane \\details plane cuts an edge if one end of the edge is below the plane and the other is not \\return Edge segments that are closer to the plane than \\param eps. Segments are oriented according by plane normal ( segment.a <= segment.b) \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param eps Maximal distance from the plane \\param positiveEdges Edges in a positive half-space relative to the plane or on the plane itself (only adds bits to the existing ones)
| std_vector_std_vector_EdgePoint mrmeshpy.extractXYPlaneSections | ( | MeshPart | mp, |
| float | zLevel, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
extracts all sections of given mesh with the plane z=zLevel
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
| FaceBitSet mrmeshpy.fillContourLeft | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | contour ) |
fill region located to the left from given edges
| FaceBitSet mrmeshpy.fillContourLeft | ( | MeshTopology | topology, |
| std_vector_std_vector_Id_EdgeTag | contours ) |
| FaceBitSet mrmeshpy.fillContourLeftByGraphCut | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | contour, | ||
| func_float_from_Id_EdgeTag | metric, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Fills region located to the left from given contour, by minimizing the sum of metric over the boundary If the computations are terminated by \\p progress, then returns the best approximation found by the moment of termination
| FaceBitSet mrmeshpy.fillContourLeftByGraphCut | ( | MeshTopology | topology, |
| std_vector_std_vector_Id_EdgeTag | contours, | ||
| func_float_from_Id_EdgeTag | metric, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Fills region located to the left from given contours, by minimizing the sum of metric over the boundary If the computations are terminated by \\p progress, then returns the best approximation found by the moment of termination
| None mrmeshpy.fillContours2D | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | holeRepresentativeEdges ) |
@brief fill holes with border in same plane (i.e. after cut by plane) @param mesh - mesh with holes @param holeRepresentativeEdges - each edge here represents a hole borders that should be filled should be not empty edges should have invalid left face (FaceId == -1) @return Expected with has_value()=true if holes filled, otherwise - string error
| None mrmeshpy.fillHole | ( | Mesh | mesh, |
| EdgeId | a, | ||
| FillHoleParams | params = '{}' ) |
\\brief Fills hole in mesh\\n Fills given hole represented by one of its edges (having no valid left face),\\n uses fillHoleTrivially if cannot fill hole without multiple edges,\\n default metric: CircumscribedFillMetric \\image html fill/before_fill.png "Before" width = 250cm \\image html fill/fill.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/fill_smooth.png "Fill with smooth" width = 250cm \\param mesh mesh with hole \\param a EdgeId which represents hole (should not have valid left FaceId) \\param params parameters of hole filling \\sa \\ref buildCylinderBetweenTwoHoles \\sa \\ref fillHoleTrivially \\sa \\ref FillHoleParams
| FaceBitSet mrmeshpy.fillHoleNicely | ( | Mesh | mesh, |
| EdgeId | holeEdge, | ||
| FillHoleNicelySettings | settings ) |
fills a hole in mesh specified by one of its edge, optionally subdivides new patch on smaller triangles, optionally make smooth connection with existing triangles outside the hole \\return triangles of the patch
| None mrmeshpy.fillHoles | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | as_, | ||
| FillHoleParams | params = '{}' ) |
fill all holes given by their representative edges in \\param as
| VertId mrmeshpy.fillHoleTrivially | ( | Mesh | mesh, |
| EdgeId | a, | ||
| FaceBitSet | outNewFaces = None ) |
\\brief Triangulates face of hole in mesh trivially\\n Fills given hole represented by one of its edges (having no valid left face)\\n by creating one new vertex in the centroid of boundary vertices and connecting new vertex with all boundary vertices. \\image html fill/before_fill.png "Before" width = 250cm \\image html fill/fill_triv.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/fill_triv_smooth.png "Trivial fill with smooth" width = 250cm \\param mesh mesh with hole \\param a EdgeId points on the face or hole to the left that will be triangulated \\param outNewFaces optional output newly generated faces \\return new vertex \\sa \\ref fillHole
| None mrmeshpy.fillPlanarHole | ( | ObjectMeshData | data, |
| std_vector_std_vector_Id_EdgeTag | holeContours ) |
given an ObjectMeshData and the contours of a planar hole in it, fills the hole using fillContours2D function and updates all per-element attributes; if some contours were not closed on input, then it closes them by adding a bridge edge in each
| None mrmeshpy.filterCreaseEdges | ( | Mesh | mesh, |
| UndirectedEdgeBitSet | creaseEdges, | ||
| float | critLength, | ||
| bool | filterComponents = True, | ||
| bool | filterBranches = False ) |
filters given edges using the following criteria: if \\param filterComponents is true then connected components with summary length of their edges less than \\param critLength will be excluded if \\param filterBranches is true then branches shorter than \\param critLength will be excluded
| tuple[bool, int] mrmeshpy.filterHistoryActionsVector | ( | std_vector_std_shared_ptr_HistoryAction | historyVector, |
| func_bool_from_std_shared_ptr_HistoryAction | filteringCondition, | ||
| int | firstRedoIndex = 0, | ||
| bool | deepFiltering = True ) |
\\brief Remove actions from history actions vector that match the condition \\param firstRedoIndex - set redo index for calculate how many actions removed before it \\param deepFiltering - filter actions into combined actions \\return pair (anything removed, how many removed before firstRedoIndex)
| float mrmeshpy.findAvgPointsRadius | ( | PointCloud | pointCloud, |
| int | avgPoints, | ||
| int | samples = 1024 ) |
\\brief Finds the radius of ball, so on average that ball contained avgPoints excluding the central point \\param samples the number of test points to find given number of samples in each
| std_vector_Vector3_float mrmeshpy.findBestFreeformDeformation | ( | Box3f | box, |
| std_vector_Vector3_float | source, | ||
| std_vector_Vector3_float | target, | ||
| Vector3i | resolution = 'Vector3i::diagonal(2)', | ||
| AffineXf3f | samplesToBox = None ) |
Calculates best Free Form transform to fit given source->target deformation origin ref grid as box corners ( resolution parameter specifies how to divide box ) samplesToBox - if set used to transform source and target points to box space returns new positions of ref grid
| None mrmeshpy.findBoxedTrisInBall | ( | MeshPart | mp, |
| Ball3f | ball, | ||
| func_Processing_from_Id_FaceTag_Ball_Vector3_float | foundCallback ) |
enumerates all triangles with bounding boxes at least partially in the ball (the triangles themselves can be fully out of ball) until callback returns Stop; the ball during enumeration can shrink (new ball is always within the previous one) but never expand
| Vector3f mrmeshpy.findCenterFromBBox | ( | MeshTopology | topology, |
| VertCoords | points ) |
computes bounding box and returns its center
| Vector3f mrmeshpy.findCenterFromFaces | ( | MeshTopology | topology, |
| VertCoords | points ) |
computes center of mass considering that density of all triangles is the same
| Vector3f mrmeshpy.findCenterFromPoints | ( | MeshTopology | topology, |
| VertCoords | points ) |
computes average position of all valid mesh vertices
| MeshPointAndDistance mrmeshpy.findClosestWeightedMeshPoint | ( | Vector3f | loc, |
| Mesh | mesh, | ||
| DistanceFromWeightedPointsComputeParams | params ) |
consider a mesh where each vertex has additive weight, and this weight is linearly interpolated in mesh triangles, and the distance to a point is considered equal to (euclidean distance - weight), finds the point on given mesh with minimal distance to given 3D location
| PointAndDistance mrmeshpy.findClosestWeightedPoint | ( | Vector3f | loc, |
| AABBTreePoints | tree, | ||
| DistanceFromWeightedPointsComputeParams | params ) |
consider a point cloud where each point has additive weight, and the distance to a point is considered equal to (euclidean distance - weight), finds the point with minimal distance to given 3D location
| VertBitSet mrmeshpy.findCloseVertices | ( | Mesh | mesh, |
| float | closeDist, | ||
| func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
| VertBitSet mrmeshpy.findCloseVertices | ( | PointCloud | cloud, |
| float | closeDist, | ||
| func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
| VertBitSet mrmeshpy.findCloseVertices | ( | VertCoords | points, |
| float | closeDist, | ||
| VertBitSet | valid = None, | ||
| func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
| VertBitSet mrmeshpy.findCloseVertices | ( | VertMap | smallestMap | ) |
finds all close vertices, where for each vertex there is another one located within given distance; smallestMap is the result of findSmallestCloseVertices function call
| std_vector_EdgePointPair mrmeshpy.findCollidingEdgePairs | ( | Polyline2 | a, |
| Polyline2 | b, | ||
| AffineXf2f | rigidB2A = None, | ||
| bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding edges from two 2d polylines \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting edges and returns faster
| std_vector_UndirectedEdgeUndirectedEdge mrmeshpy.findCollidingEdges | ( | Polyline2 | a, |
| Polyline2 | b, | ||
| AffineXf2f | rigidB2A = None, | ||
| bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding edges from two 2d polylines \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting edges and returns faster
| tuple[UndirectedEdgeBitSet, UndirectedEdgeBitSet] mrmeshpy.findCollidingEdgesBitsets | ( | Polyline2 | a, |
| Polyline2 | b, | ||
| AffineXf2f | rigidB2A = None ) |
\\brief finds bitset per polyline with colliding edges \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
| std_vector_EdgeTri mrmeshpy.findCollidingEdgeTrisPrecise | ( | Mesh | a, |
| std_vector_Id_EdgeTag | edgesA, | ||
| Mesh | b, | ||
| std_vector_Id_FaceTag | facesB, | ||
| func_Vector3_int_from_Vector3_float | conv, | ||
| AffineXf3f | rigidB2A = None ) |
finds all intersections between every given edge from A and given triangles from B
| std_vector_EdgeTri mrmeshpy.findCollidingEdgeTrisPrecise | ( | Mesh | a, |
| std_vector_Id_FaceTag | facesA, | ||
| Mesh | b, | ||
| std_vector_Id_EdgeTag | edgesB, | ||
| func_Vector3_int_from_Vector3_float | conv, | ||
| AffineXf3f | rigidB2A = None ) |
finds all intersections between every given triangle from A and given edge from B
| std_vector_VarEdgeTri mrmeshpy.findCollidingEdgeTrisPrecise | ( | MeshPart | a, |
| MeshPart | b, | ||
| func_Vector3_int_from_Vector3_float | conv, | ||
| AffineXf3f | rigidB2A = None, | ||
| bool | anyIntersection = False ) |
\\brief finds all pairs of colliding edges from one mesh and triangle from another mesh \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param anyIntersection if true then the function returns as fast as it finds any intersection
| tuple[FaceBitSet, FaceBitSet] mrmeshpy.findCollidingTriangleBitsets | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None ) |
the same as \\ref findCollidingTriangles, but returns one bite set per mesh with colliding triangles
| std_vector_FaceFace mrmeshpy.findCollidingTriangles | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding triangles from two meshes or two mesh regions \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting triangles and returns faster
| UndirectedEdgeBitSet mrmeshpy.findCreaseEdges | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| float | angleFromPlanar ) |
finds all mesh edges where dihedral angle is distinct from planar PI angle on at least given value
| FaceBitSet mrmeshpy.findDegenerateFaces | ( | MeshPart | mp, |
| float | criticalAspectRatio = 3.4028234663852886e+38, | ||
| func_bool_from_float | cb = '{}' ) |
finds faces having aspect ratio >= criticalAspectRatio
| VertId mrmeshpy.findDirMax | ( | Vector2f | dir, |
| Polyline2 | polyline, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the polyline having the largest projection on given direction, optionally uses aabb-tree inside for faster computation
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| AABBTreePoints | tree, | ||
| VertBitSet | region = None ) |
finds the point in the tree having the largest projection on given direction
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| Mesh | m, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-tree inside for faster computation
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| MeshPart | mp, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-tree inside for faster computation
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| MeshVertPart | mp, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-points-tree inside for faster computation
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| PointCloud | cloud, | ||
| VertBitSet | region = None, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the point in the cloud having the largest projection on given direction, optionally uses aabb-tree inside for faster computation
| VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
| Polyline3 | polyline, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the polyline having the largest projection on given direction, optionally uses aabb-tree inside for faster computation
finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices
| VertId mrmeshpy.findDirMaxBruteForce | ( | Vector2f | dir, |
| VertCoords2 | points, | ||
| VertBitSet | region = None ) |
finds the point having the largest projection on given direction by traversing all region points
finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) faces
| VertId mrmeshpy.findDirMaxBruteForce | ( | Vector3f | dir, |
| MeshVertPart | mp ) |
finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) vertices
| VertId mrmeshpy.findDirMaxBruteForce | ( | Vector3f | dir, |
| PointCloud | cloud, | ||
| VertBitSet | region = None ) |
finds the point in the cloud having the largest projection on given direction by traversing all valid points
finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices
| VertId mrmeshpy.findDirMaxBruteForce | ( | Vector3f | dir, |
| VertCoords | points, | ||
| VertBitSet | region = None ) |
finds the point having the largest projection on given direction by traversing all region points
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector2f | dir, |
| Polyline2 | polyline ) |
finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector2f | dir, |
| VertCoords2 | points, | ||
| VertBitSet | region = None ) |
finds the points having the smallest and the largest projections on given direction by traversing all region points
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector3f | dir, |
| MeshPart | mp ) |
finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) faces
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector3f | dir, |
| MeshVertPart | mp ) |
finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) vertices
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector3f | dir, |
| PointCloud | cloud, | ||
| VertBitSet | region = None ) |
finds the points in the cloud having the smallest and the largest projections on given direction by traversing all valid points
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector3f | dir, |
| Polyline3 | polyline ) |
finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices
| MinMaxArg_float_VertId mrmeshpy.findDirMinMaxBruteForce | ( | Vector3f | dir, |
| VertCoords | points, | ||
| VertBitSet | region = None ) |
finds the points having the smallest and the largest projections on given direction by traversing all region points
| FaceBitSet mrmeshpy.findDisorientedFaces | ( | Mesh | mesh, |
| FindDisorientationParams | params = '{}' ) |
returns all faces that are oriented inconsistently, based on number of ray intersections
| MeshMeshDistanceResult mrmeshpy.findDistance | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | upDistLimitSq = 3.4028234663852886e+38 ) |
\\brief computes minimal distance between two meshes or two mesh regions \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points
| None mrmeshpy.findEdgesInBall | ( | Polyline2 | polyline, |
| Vector2f | center, | ||
| float | radius, | ||
| func_void_from_Id_UndirectedEdgeTag_Vector2_float_float | foundCallback, | ||
| AffineXf2f | xf = None ) |
Finds all edges of given polyline that cross or touch given ball (center, radius)
| None mrmeshpy.findEdgesInBall | ( | Polyline3 | polyline, |
| Vector3f | center, | ||
| float | radius, | ||
| func_void_from_Id_UndirectedEdgeTag_Vector3_float_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all edges of given polyline that cross or touch given ball (center, radius)
| UndirectedEdgeBitSet mrmeshpy.findExtremeEdges | ( | Mesh | mesh, |
| VertScalars | field, | ||
| ExtremeEdgeType | type ) |
computes all edges in the mesh, where the field not-increases both in left and right triangles
| None mrmeshpy.findFewClosestPoints | ( | Vector3f | pt, |
| PointCloud | pc, | ||
| FewSmallest_PointsProjectionResult | res, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief finds a number of the closest points in the cloud (as configured in \\param res) to given point \\param upDistLimitSq upper limit on the distance in question, points with larger distance than it will not be returned \\param xf pointcloud-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, the algorithm can return given number of points within this distance even skipping closer ones
| IOFilter mrmeshpy.findFilter | ( | std_vector_IOFilter | filters, |
| str | extension ) |
find a corresponding filter for a given extension
| VertBitSet mrmeshpy.findHalfSpacePoints | ( | PointCloud | pc, |
| Plane3f | plane ) |
\\return All vertices on the positive side of the plane \\param pc Input point cloud that will be cut by the plane \\param plane Input plane to cut point cloud with
| FaceBitSet mrmeshpy.findHoleComplicatingFaces | ( | Mesh | mesh | ) |
returns all faces that complicate one of mesh holes; hole is complicated if it passes via one vertex more than once; deleting such faces simplifies the holes and makes them easier to fill
| FaceBitSet mrmeshpy.findInnerShellFacesWithSplits | ( | MeshPart | mp, |
| Mesh | shell, | ||
| FindInnerShellSettings | settings = '{}' ) |
Finds inner-shell faces on bidirectional \\param shell constructed for an open \\param mp; The function will return all shell faces (after some subdivision) that have distance to mesh of same sign as settings.side
| VertBitSet mrmeshpy.findInnerShellVerts | ( | MeshPart | mp, |
| Mesh | shell, | ||
| FindInnerShellSettings | settings = '{}' ) |
Finds inner-shell vertices on bidirectional \\param shell constructed for an open \\param mp; The function will return all shell vertices that have distance to mesh of same sign as settings.side
| InSphere mrmeshpy.findInSphere | ( | Mesh | mesh, |
| MeshPoint | m, | ||
| InSphereSearchSettings | settings ) |
finds maximal sphere inscribed in the mesh touching point (p) with center along the normal at (p)
| InSphere mrmeshpy.findInSphere | ( | Mesh | mesh, |
| VertId | v, | ||
| InSphereSearchSettings | settings ) |
| std_vector_std_vector_Vector3_float mrmeshpy.findIntersectionContours | ( | Mesh | meshA, |
| Mesh | meshB, | ||
| AffineXf3f | rigidB2A = None ) |
returns intersection contours of given meshes
| std_vector_std_vector_Id_EdgeTag mrmeshpy.findLeftBoundary | ( | MeshTopology | topology, |
| FaceBitSet | region = None ) |
returns all region boundary loops; every loop has region faces on the left, and not-region faces or holes on the right
| std_vector_std_vector_Id_EdgeTag mrmeshpy.findLeftBoundaryInsideMesh | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
returns all region boundary paths; every path has region faces on the left, and valid not-region faces on the right
| float mrmeshpy.findMaxDistanceSq | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the squared Hausdorff distance between two meshes, that is
the maximum of squared distances from each mesh vertex to the other mesh (in both directions)
\\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
\\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
| float mrmeshpy.findMaxDistanceSq | ( | PointCloud | a, |
| PointCloud | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the squared Hausdorff distance between two point clouds, that is
the maximum of squared distances from each point to the other cloud (in both directions)
\\param rigidB2A rigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation
\\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
| float mrmeshpy.findMaxDistanceSqOneWay | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the maximum of the squared distances from each B-mesh vertex to A-mesh \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
| float mrmeshpy.findMaxDistanceSqOneWay | ( | PointCloud | a, |
| PointCloud | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the maximum of the squared distances from each B-point to A-cloud \\param rigidB2A rigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
| PolylineProjectionResult3Arg mrmeshpy.findMaxProjectionOnPolyline | ( | VertCoords | points, |
| Polyline3 | polyline, | ||
| VertBitSet | pointsRegion = None, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief for each of points (pointsRegion) computes the closest point on polyline and returns the point for which maximum distance is reached, \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| None mrmeshpy.findMaxVectorDim | ( | int_output | dimX, |
| int_output | dimY, | ||
| int_output | dimZ, | ||
| Vector3d | dir ) |
\\brief finds index of maximum axis and stores it into dimZ \\details http://jcgt.org/published/0002/01/05/paper.pdf Example input: dir = (1,1,-2). Result: dimZ = 2, dimX = 1, dimY = 0. \\param[out] dimX are filled by right-hand rule from dimZ \\param[out] dimY are filled by right-hand rule from dimZ \\param[out] dimZ index of maximum axis
| None mrmeshpy.findMaxVectorDim | ( | int_output | dimX, |
| int_output | dimY, | ||
| int_output | dimZ, | ||
| Vector3f | dir ) |
\\brief finds index of maximum axis and stores it into dimZ \\details http://jcgt.org/published/0002/01/05/paper.pdf Example input: dir = (1,1,-2). Result: dimZ = 2, dimX = 1, dimY = 0. \\param[out] dimX are filled by right-hand rule from dimZ \\param[out] dimY are filled by right-hand rule from dimZ \\param[out] dimZ index of maximum axis
| None mrmeshpy.findMeshEdgesInBall | ( | Mesh | mesh, |
| AABBTreePolyline3 | tree, | ||
| Vector3f | center, | ||
| float | radius, | ||
| func_void_from_Id_UndirectedEdgeTag_Vector3_float_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all edges of given mesh edges (specified by the tree) that cross or touch given ball (center, radius)
| std_vector_std_pair_Id_VertTag_Id_VertTag mrmeshpy.findMultipleEdges | ( | MeshTopology | topology, |
| func_bool_from_float | cb = '{}' ) |
| Buffer_VertId mrmeshpy.findNClosestPointsPerPoint | ( | PointCloud | pc, |
| int | numNei, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief finds given number of closest points (excluding itself) to each valid point in the cloud; \\param numNei the number of closest points to find for each point \\return a buffer where for every valid point with index `i` its neighbours are stored at indices [i*numNei; (i+1)*numNei)
| VertBitSet mrmeshpy.findNeighborVerts | ( | Mesh | mesh, |
| PointOnFace | start, | ||
| float | rangeSq ) |
calculates all neighbor vertices within a given \\param range and to first vertices with the distance more than range \\param rangeSq square of range
| VertBitSet mrmeshpy.findNRingVerts | ( | MeshTopology | topology, |
| int | n, | ||
| VertBitSet | region = None ) |
finds vertices in region with complete ring of N edges
| FaceBitSet mrmeshpy.findOuterLayer | ( | Mesh | mesh | ) |
given a double-layer mesh with one layer having normals outside and the other layer - inside, finds all faces of the outer layer; the algorithm first detects some seed faces of each layer by casting a ray from triangle's center in both directions along the normal; then remaining faces are redistributed toward the closest seed face
| VertBitSet mrmeshpy.findOutliers | ( | PointCloud | pc, |
| FindOutliersParams | params ) |
Finding outlier points
| std_vector_TypedBitSet_Id_FaceTag mrmeshpy.findOverhangs | ( | Mesh | mesh, |
| FindOverhangsSettings | settings ) |
\\brief Find face regions that might create overhangs \\param mesh - source mesh \\param settings - parameters \\return face regions
| FaceBitSet mrmeshpy.findOverlappingTris | ( | MeshPart | mp, |
| FindOverlappingSettings | settings ) |
finds all triangles that have oppositely oriented close triangle in the mesh
| None mrmeshpy.findPointsInBall | ( | AABBTreePoints | tree, |
| Ball3f | ball, | ||
| func_Processing_from_PointsProjectionResult_Vector3_float_Ball_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all points in tree that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| None mrmeshpy.findPointsInBall | ( | Mesh | mesh, |
| Ball3f | ball, | ||
| func_Processing_from_PointsProjectionResult_Vector3_float_Ball_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all valid vertices of the mesh that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| None mrmeshpy.findPointsInBall | ( | PointCloud | pointCloud, |
| Ball3f | ball, | ||
| func_Processing_from_PointsProjectionResult_Vector3_float_Ball_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all valid points of pointCloud that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| None mrmeshpy.findPointsInBox | ( | AABBTreePoints | tree, |
| Box3f | box, | ||
| func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all points in tree that are inside or on the surface of given box \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| None mrmeshpy.findPointsInBox | ( | Mesh | mesh, |
| Box3f | box, | ||
| func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all valid vertices of the mesh that are inside or on the surface of given box \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| None mrmeshpy.findPointsInBox | ( | PointCloud | pointCloud, |
| Box3f | box, | ||
| func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
| AffineXf3f | xf = None ) |
Finds all valid points of pointCloud that are inside or on the surface of given box \\param xf points-to-center transformation, if not specified then identity transformation is assumed
| MeshProjectionResult mrmeshpy.findProjection | ( | Vector3f | pt, |
| MeshPart | mp, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}', | ||
| func_bool_from_MeshProjectionResult | validProjections = '{}' ) |
\\brief computes the closest point on mesh (or its region) to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf mesh-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param validFaces if provided then only faces from there will be considered as projections \\param validProjections if provided then only projections passed this test can be returned
| PolylineProjectionResult3 mrmeshpy.findProjectionOnMeshEdges | ( | Line3f | ln, |
| Mesh | mesh, | ||
| AABBTreePolyline3 | tree, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on the mesh edges (specified by the tree) to given straight line \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| PolylineProjectionResult3 mrmeshpy.findProjectionOnMeshEdges | ( | Vector3f | pt, |
| Mesh | mesh, | ||
| AABBTreePolyline3 | tree, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on the mesh edges (specified by the tree) to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| PointsProjectionResult mrmeshpy.findProjectionOnPoints | ( | Vector3f | pt, |
| AABBTreePoints | tree, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0, | ||
| VertBitSet | region = None, | ||
| func_bool_from_Id_VertTag | skipCb = '{}' ) |
\\brief computes the closest point on AABBTreePoints to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf pointcloud-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param region if not nullptr, all points not from the given region will be ignored \\param skipCb callback to discard VertId projection candidate
| PointsProjectionResult mrmeshpy.findProjectionOnPoints | ( | Vector3f | pt, |
| PointCloudPart | pcp, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0, | ||
| func_bool_from_Id_VertTag | skipCb = '{}' ) |
\\brief computes the closest point on point cloud to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf pointcloud-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param skipCb callback to discard VertId projection candidate
| PolylineProjectionResult3 mrmeshpy.findProjectionOnPolyline | ( | Line3f | ln, |
| Polyline3 | polyline, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given straight line \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| PolylineProjectionResult3 mrmeshpy.findProjectionOnPolyline | ( | Vector3f | pt, |
| Polyline3 | polyline, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| PolylineProjectionResult2 mrmeshpy.findProjectionOnPolyline2 | ( | Vector2f | pt, |
| Polyline2 | polyline, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf2f | xf = None, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| Polyline2ProjectionWithOffsetResult mrmeshpy.findProjectionOnPolyline2WithOffset | ( | Vector2f | pt, |
| Polyline2 | polyline, | ||
| UndirectedEdgeScalars | offsetPerEdge, | ||
| float | upDistLimit = 3.4028234663852886e+38, | ||
| AffineXf2f | xf = None, | ||
| float | loDistLimit = 0 ) |
\\brief computes the closest point on polyline to given point, respecting each edge offset \\param offsetPerEdge offset for each edge of polyline \\param upDistLimit upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimit and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimit low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| PolylineProjectionWithOffsetResult3 mrmeshpy.findProjectionOnPolylineWithOffset | ( | Vector3f | pt, |
| Polyline3 | polyline, | ||
| UndirectedEdgeScalars | offsetPerEdge, | ||
| float | upDistLimit = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimit = 0 ) |
\\brief computes the closest point on polyline to given point, respecting each edge offset \\param offsetPerEdge offset for each edge of polyline \\param upDistLimit upper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimit and no valid point or edge \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimit low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| MeshProjectionResult mrmeshpy.findProjectionSubtree | ( | Vector3f | pt, |
| MeshPart | mp, | ||
| AABBTree | tree, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| AffineXf3f | xf = None, | ||
| float | loDistLimitSq = 0, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}', | ||
| func_bool_from_MeshProjectionResult | validProjections = '{}' ) |
\\brief computes the closest point on mesh (or its region) to given point \\param tree explicitly given BVH-tree for whole mesh or part of mesh we are searching projection on, \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf mesh-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param validFaces if provided then only faces from there will be considered as projections \\param validProjections if provided then only projections passed this test can be returned
| UndirectedEdgeBitSet mrmeshpy.findRegionBoundaryUndirectedEdgesInsideMesh | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
returns all region boundary edges, where each edge has a region face on one side, and a valid not-region face on another side
| FaceBitSet mrmeshpy.findRegionOuterFaces | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
\\returns All out of region faces that have a common edge with at least one region face
| Triangulation mrmeshpy.findRepeatedOrientedTriangles | ( | AllLocalTriangulations | triangs, |
| int | repetitions ) |
from local triangulations returns all oriented triangles with given number of repetitions each in [1,3]
| None mrmeshpy.findRepeatedOrientedTriangles | ( | AllLocalTriangulations | triangs, |
| Triangulation | outRep3, | ||
| Triangulation | outRep2 ) |
from local triangulations returns all oriented triangles with 3 or 2 repetitions each; if both outRep3 and outRep2 are necessary then it is faster to call this function than above one
| std_vector_UnorientedTriangle mrmeshpy.findRepeatedUnorientedTriangles | ( | AllLocalTriangulations | triangs, |
| int | repetitions ) |
from local triangulations returns all unoriented triangles with given number of repetitions each in [1,3]
| VertBitSet mrmeshpy.findRepeatedVertsOnHoleBd | ( | MeshTopology | topology | ) |
returns set bits for all vertices present on the boundary of a hole several times;
| std_vector_std_vector_Id_EdgeTag mrmeshpy.findRightBoundary | ( | MeshTopology | topology, |
| FaceBitSet | region = None ) |
returns all region boundary loops; every loop has region faces on the right, and not-region faces or holes on the left
| Vector2f mrmeshpy.findSegmentSegmentIntersectionPrecise | ( | Vector2f | a, |
| Vector2f | b, | ||
| Vector2f | c, | ||
| Vector2f | d, | ||
| CoordinateConverters2 | converters ) |
finds intersection precise, using high precision int inside this function input should have intersection
| Vector2i mrmeshpy.findSegmentSegmentIntersectionPrecise | ( | Vector2i | a, |
| Vector2i | b, | ||
| Vector2i | c, | ||
| Vector2i | d ) |
finds intersection precise, using high precision int inside this function input should have intersection
| std_vector_EdgePointPair mrmeshpy.findSelfCollidingEdgePairs | ( | Polyline2 | polyline | ) |
finds all pairs of colliding edges from 2d polyline
| std_vector_UndirectedEdgeUndirectedEdge mrmeshpy.findSelfCollidingEdges | ( | Polyline2 | polyline | ) |
finds all pairs of colliding edges from 2d polyline
| UndirectedEdgeBitSet mrmeshpy.findSelfCollidingEdgesBS | ( | Polyline2 | polyline | ) |
finds the union of all self-intersecting edges
| std_vector_EdgeTri mrmeshpy.findSelfCollidingEdgeTrisPrecise | ( | MeshPart | mp, |
| func_Vector3_int_from_Vector3_float | conv, | ||
| bool | anyIntersection = False, | ||
| AffineXf3f | rigidB2A = None, | ||
| int | aVertSizes = 0 ) |
\\brief finds all pairs of colliding edges and triangle within one mesh \\param anyIntersection if true then the function returns as fast as it finds any intersection \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation, might be useful to obtain same result as in boolean operation would for mesh B \\param aVertsSize used in float to int conversion, might be useful to obtain same result as in boolean operation would for mesh B
| std_vector_FaceFace mrmeshpy.findSelfCollidingTriangles | ( | MeshPart | mp, |
| func_bool_from_float | cb = '{}', | ||
| Face2RegionMap | regionMap = None, | ||
| bool | touchIsIntersection = False ) |
finds all pairs of colliding triangles from one mesh or a region
| bool mrmeshpy.findSelfCollidingTriangles | ( | MeshPart | mp, |
| std_vector_FaceFace | outCollidingPairs, | ||
| func_bool_from_float | cb = '{}', | ||
| Face2RegionMap | regionMap = None, | ||
| bool | touchIsIntersection = False ) |
finds all pairs (or the fact of any self-collision) of colliding triangles from one mesh or a region
| FaceBitSet mrmeshpy.findSelfCollidingTrianglesBS | ( | MeshPart | mp, |
| func_bool_from_float | cb = '{}', | ||
| Face2RegionMap | regionMap = None, | ||
| bool | touchIsIntersection = False ) |
the same \\ref findSelfCollidingTriangles but returns the union of all self-intersecting faces
| UndirectedEdgeBitSet mrmeshpy.findShortEdges | ( | MeshPart | mp, |
| float | criticalLength, | ||
| func_bool_from_float | cb = '{}' ) |
finds edges having length <= criticalLength
| MeshMeshSignedDistanceResult mrmeshpy.findSignedDistance | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None, | ||
| float | upDistLimitSq = 3.4028234663852886e+38 ) |
\\brief computes minimal distance between two meshes \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param upDistLimitSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points
| SignedDistanceToMeshResult mrmeshpy.findSignedDistance | ( | Vector3f | pt, |
| MeshPart | mp, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| float | loDistLimitSq = 0 ) |
\\brief computes the closest point on mesh (or its region) to given point, and finds the distance with sign to it (positive - outside, negative - inside the mesh) \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exits returning nullopt \\param loDistLimitSq low limit on the distance in question, if the real distance smaller then the function exits returning nullopt
| VertScalars mrmeshpy.findSignedDistances | ( | Mesh | refMesh, |
| Mesh | mesh, | ||
| MeshProjectionParameters | params = '{}', | ||
| IPointsToMeshProjector | projector = '{}' ) |
Computes signed distances from valid vertices of test mesh to the closest point on the reference mesh: positive value - outside reference mesh, negative - inside reference mesh; this method can return wrong sign if the closest point is located on self-intersecting part of the mesh
| VertScalars mrmeshpy.findSignedDistances | ( | Mesh | refMesh, |
| VertCoords | testPoints, | ||
| VertBitSet | validTestPoints = '{}', | ||
| MeshProjectionParameters | params = '{}', | ||
| IPointsToMeshProjector | projector = '{}' ) |
Computes signed distances from given test points to the closest point on the reference mesh: positive value - outside reference mesh, negative - inside reference mesh; this method can return wrong sign if the closest point is located on self-intersecting part of the mesh
| BitSet mrmeshpy.findSkyRays | ( | Mesh | terrain, |
| VertCoords | samples, | ||
| VertBitSet | validSamples, | ||
| std_vector_SkyPatch | skyPatches, | ||
| std_vector_MeshIntersectionResult | outIntersections = None ) |
In each valid sample point tests the rays from that point in the sky;
\\return bitset where for every valid sample #i its rays are stored at indices [i*numPatches; (i+1)*numPatches),
0s for occluded rays (hitting the terrain) and 1s for the ones which don't hit anything and reach the sky
\\param outIntersections - optional output vector of MeshIntersectionResult for every valid sample point
| VertMap mrmeshpy.findSmallestCloseVertices | ( | Mesh | mesh, |
| float | closeDist, | ||
| func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself
| VertMap mrmeshpy.findSmallestCloseVertices | ( | PointCloud | cloud, |
| float | closeDist, | ||
| func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself
| VertMap mrmeshpy.findSmallestCloseVertices | ( | VertCoords | points, |
| float | closeDist, | ||
| VertBitSet | valid = None, | ||
| func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself; the search tree is constructe inside
| VertMap mrmeshpy.findSmallestCloseVerticesUsingTree | ( | VertCoords | points, |
| float | closeDist, | ||
| AABBTreePoints | tree, | ||
| VertBitSet | valid, | ||
| func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself; given tree is used as is
| VertBitSet mrmeshpy.findSpikeVertices | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| float | minSumAngle, | ||
| VertBitSet | region = None, | ||
| func_bool_from_float | cb = '{}' ) |
returns vertices where the sum of triangle angles is below given threshold
| EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
| VertScalars | field, | ||
| EdgePoint | ep ) |
finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of left and right edge triangles' union in case (ep) is inner edge point)
| EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
| VertScalars | field, | ||
| MeshTriPoint | tp ) |
finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of the triangle itself in case (tp) is inner triangle point)
| EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
| VertScalars | field, | ||
| VertId | v ) |
finds the point along minus maximal gradient on the boundary of first ring boundary around given vertex
| int mrmeshpy.findSubstringCaseInsensitive | ( | str | string, |
| str | substring ) |
Finds the substring in the string. \\return position, npos if not found
| std_vector_LineSegm_Vector3_float mrmeshpy.findTriangleSectionsByXYPlane | ( | MeshPart | mp, |
| float | zLevel, | ||
| std_vector_Id_FaceTag | faces = None, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds all intersected triangles by the plane z=zLevel \\return the section's line segment within each such triangle; \\param faces optional output of the same size as return, where for each line segment one can find its triangle's id \\details this function must be faster than extractXYPlaneSections function when connecting continuous contours take most of the time
| Vector3f mrmeshpy.findTriangleSegmentIntersectionPrecise | ( | Vector3f | a, |
| Vector3f | b, | ||
| Vector3f | c, | ||
| Vector3f | d, | ||
| Vector3f | e, | ||
| CoordinateConverters | converters ) |
finds intersection precise, using high precision int inside this function input should have intersection
| std_vector_FaceFaceFace mrmeshpy.findTripleFaceIntersections | ( | MeshTopology | topology, |
| std_vector_std_vector_VarEdgeTri | selfContours ) |
given all self-intersection contours on a mesh, finds all intersecting triangle triples (every two triangles from a triple intersect); please note that not all such triples will have a common point
| None mrmeshpy.findTrisInBall | ( | MeshPart | mp, |
| Ball3f | ball, | ||
| func_Processing_from_MeshProjectionResult_Ball_Vector3_float | foundCallback, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}' ) |
enumerates all triangles within the ball until callback returns Stop; the ball during enumeration can shrink (new ball is always within the previous one) but never expand
| std_vector_std_pair_Id_EdgeTag_Id_EdgeTag mrmeshpy.findTwinEdgePairs | ( | Mesh | mesh, |
| float | closeDist ) |
finds pairs of twin edges (each twin edge will be present at least in one of pairs)
| EdgeBitSet mrmeshpy.findTwinEdges | ( | Mesh | mesh, |
| float | closeDist ) |
finds all directed twin edges
| EdgeBitSet mrmeshpy.findTwinEdges | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
| phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag mrmeshpy.findTwinUndirectedEdgeHashMap | ( | Mesh | mesh, |
| float | closeDist ) |
provided that each edge has at most one twin, composes bidirectional mapping between twins
| phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag mrmeshpy.findTwinUndirectedEdgeHashMap | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
| UndirectedEdgeBitSet mrmeshpy.findTwinUndirectedEdges | ( | Mesh | mesh, |
| float | closeDist ) |
finds all undirected twin edges
| UndirectedEdgeBitSet mrmeshpy.findTwinUndirectedEdges | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
| tuple[VertId, VertId] mrmeshpy.findTwoClosestPoints | ( | PointCloud | pc, |
| func_bool_from_float | progress = '{}' ) |
finds two closest points (first id < second id) in whole point cloud
| Vector3i mrmeshpy.findTwoSegmentsIntersection | ( | Vector3i | ai, |
| Vector3i | bi, | ||
| Vector3i | ci, | ||
| Vector3i | di ) |
given two line segments AB and CD located in one plane, finds whether they intersect and if yes, computes their common point using integer-only arithmetic
| VertCoords mrmeshpy.findZcompensatedPositions | ( | Mesh | mesh, |
| ZCompensateParams | params ) |
finds vertices positions of the mesh after z-compensation without modifying the mesh
| VertScalars mrmeshpy.findZcompensationShifts | ( | Mesh | mesh, |
| ZCompensateParams | params ) |
finds the shift along z-axis for each vertex without modifying the mesh
| None mrmeshpy.fixMeshCreases | ( | Mesh | mesh, |
| FixCreasesParams | params = '{}' ) |
Finds creases edges and re-triangulates planar areas around them, useful to fix double faces
| None mrmeshpy.fixMeshDegeneracies | ( | Mesh | mesh, |
| FixMeshDegeneraciesParams | params ) |
Fixes degenerate faces and short edges in mesh (changes topology)
| None mrmeshpy.fixMultipleEdges | ( | Mesh | mesh | ) |
finds and resolves multiple edges
| None mrmeshpy.fixMultipleEdges | ( | Mesh | mesh, |
| std_vector_std_pair_Id_VertTag_Id_VertTag | multipleEdges ) |
resolves given multiple edges, but splitting all but one edge in each group
| None mrmeshpy.fixSelfIntersections | ( | Mesh | mesh, |
| float | voxelSize ) |
Fix self-intersections by converting to voxels and back.
fills VdbVolume data from FloatGrid (does not fill voxels size, cause we expect it outside)
| bool mrmeshpy.fromSameTriangle | ( | MeshTopology | topology, |
| EdgePoint | a, | ||
| EdgePoint | b ) |
returns true if points a and b are located on a boundary of the same triangle; \\details if true a.e and b.e are updated to have that triangle on the left \\related EdgePoint
| bool mrmeshpy.fromSameTriangle | ( | MeshTopology | topology, |
| MeshTriPoint | a, | ||
| MeshTriPoint | b ) |
returns true if points a and b are located insides or on a boundary of the same triangle; if true a.e and b.e are updated to have that triangle on the left
| LoadedObjectT mrmeshpy.fromSceneMison | ( | os.PathLike | str | bytes | path, |
| func_bool_from_float | callback = '{}' ) |
load scene from MISON file \\n JSON file with array named "Objects" or root array: \\n element fields:\\n "Filename" : required full path to file for loading object "XF": optional xf for loaded object "Name": optional name for loaded object
| LoadedObjectT mrmeshpy.fromSceneMison | ( | typing.Any | in_, |
| func_bool_from_float | callback = '{}' ) |
| SimpleVolumeMinMax mrmeshpy.functionVolumeToSimpleVolume | ( | FunctionVolume | volume, |
| func_bool_from_float | callback = '{}' ) |
converts function volume into simple volume
| VdbVolume mrmeshpy.functionVolumeToVdbVolume | ( | FunctionVolume | functoinVolume, |
| func_bool_from_float | cb = '{}' ) |
make VdbVolume from FunctionVolume make copy of data set minimum value as the background value
| None mrmeshpy.gaussianFilter | ( | FloatGrid | grid, |
| int | width, | ||
| int | iters, | ||
| func_bool_from_float | cb = '{}' ) |
returns grid with gaussian filter applied
| FloatGrid mrmeshpy.gaussianFiltered | ( | FloatGrid | grid, |
| int | width, | ||
| int | iters, | ||
| func_bool_from_float | cb = '{}' ) |
| Mesh mrmeshpy.generalOffsetMesh | ( | MeshPart | mp, |
| float | offset, | ||
| GeneralOffsetParameters | params ) |
Offsets mesh by converting it to voxels and back using one of three modes specified in the parameters \\snippet cpp-examples/MeshOffset.dox.cpp 0
| AffineXf3f mrmeshpy.getAligningXf | ( | PointToPlaneAligningTransform | p2pl, |
| ICPMode | mode, | ||
| float | angleLimit, | ||
| float | scaleLimit, | ||
| Vector3f | fixedRotationAxis ) |
given prepared (p2pl) object, finds the best transformation from it of given type with given limitations on rotation angle and global scale
| std_vector_TypedBitSet_Id_FaceTag mrmeshpy.getAllComponents | ( | Face2RegionMap | componentsMap, |
| int | componentsCount, | ||
| FaceBitSet | region, | ||
| int | maxComponentCount ) |
gets all connected components from components map ( FaceId => RegionId ) \\detail if components number more than the maxComponentCount, they will be combined into groups of the same size (this similarly changes componentsMap) \\param maxComponentCount should be more then 1 \\return components bitsets vector
| tuple[std_vector_TypedBitSet_Id_FaceTag, int] mrmeshpy.getAllComponents | ( | MeshPart | meshPart, |
| int | maxComponentCount, | ||
| MeshComponents.FaceIncidence | incidence = 'FaceIncidence::PerEdge', | ||
| UndirectedEdgeBitSet | isCompBd = '{}' ) |
gets all connected components of mesh part \\detail if components number more than the maxComponentCount, they will be combined into groups of the same size \\param maxComponentCount should be more then 1 \\return pair components bitsets vector and number components in one group if components number more than maxComponentCount
| std_vector_TypedBitSet_Id_FaceTag mrmeshpy.getAllComponents | ( | MeshPart | meshPart, |
| MeshComponents.FaceIncidence | incidence = 'FaceIncidence::PerEdge', | ||
| UndirectedEdgeBitSet | isCompBd = '{}' ) |
gets all connected components of mesh part \\note be careful, if mesh is large enough and has many components, the memory overflow will occur
| std_vector_TypedBitSet_Id_VertTag mrmeshpy.getAllComponentsVerts | ( | Mesh | mesh, |
| VertBitSet | region = None ) |
gets all connected components of mesh part
| std_vector_IOFilter mrmeshpy.getAllFilters | ( | ) |
returns filters for all supported file formats for all types of objects
| std_vector_std_shared_ptr_Object mrmeshpy.getAllObjectsInTree_Object | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectDistanceMap mrmeshpy.getAllObjectsInTree_ObjectDistanceMap | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectLines mrmeshpy.getAllObjectsInTree_ObjectLines | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectLinesHolder mrmeshpy.getAllObjectsInTree_ObjectLinesHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectMesh mrmeshpy.getAllObjectsInTree_ObjectMesh | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectMeshHolder mrmeshpy.getAllObjectsInTree_ObjectMeshHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectPoints mrmeshpy.getAllObjectsInTree_ObjectPoints | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectPointsHolder mrmeshpy.getAllObjectsInTree_ObjectPointsHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.getAllObjectsInTree_ObjectVoxels | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| std_vector_std_shared_ptr_VisualObject mrmeshpy.getAllObjectsInTree_VisualObject | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
| UndirectedEdgeId mrmeshpy.getAt | ( | Buffer_UndirectedEdgeId_UndirectedEdgeId | bmap, |
| UndirectedEdgeId | key, | ||
| UndirectedEdgeId | def_ = '{}' ) |
given some buffer map and a key, returns the value associated with the key, or default value if key is invalid
| BooleanResultPoints mrmeshpy.getBooleanPoints | ( | Mesh | meshA, |
| Mesh | meshB, | ||
| BooleanOperation | operation, | ||
| AffineXf3f | rigidB2A = None ) |
\\brief Returns the points of mesh boolean's result mesh Returns vertices and intersection points of mesh that is result of boolean operation of mesh `A` and mesh `B`. Can be used as fast alternative for cases where the mesh topology can be ignored (bounding box, convex hull, etc.) \\param meshA Input mesh `A` \\param meshB Input mesh `B` \\param operation Boolean operation to perform \\param rigidB2A Transform from mesh `B` space to mesh `A` space
| FaceBitSet mrmeshpy.getBoundaryFaces | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
returns faces from given region that have at least one neighbor face with shared edge not from the region
| VertBitSet mrmeshpy.getBoundaryVerts | ( | MeshTopology | topology, |
| FaceBitSet | region = None ) |
composes the set of all boundary vertices for given region (or whole mesh if !region)
| str mrmeshpy.getCancelMessage | ( | os.PathLike | str | bytes | path | ) |
Returns message showed when loading is canceled
| FillHoleMetric mrmeshpy.getCircumscribedMetric | ( | Mesh | mesh | ) |
This metric minimizes the sum of circumcircle radii for all triangles in the triangulation. It is rather fast to calculate, and it results in typically good triangulations.
| UndirectedEdgeId mrmeshpy.getClosestEdge | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshTriPoint | p ) |
returns one of three face edges, closest to given point
| UndirectedEdgeId mrmeshpy.getClosestEdge | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| PointOnFace | p ) |
returns one of three face edges, closest to given point
| VertId mrmeshpy.getClosestVertex | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshTriPoint | p ) |
returns one of three face vertices, closest to given point
| VertId mrmeshpy.getClosestVertex | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| PointOnFace | p ) |
returns one of three face vertices, closest to given point
| FillHoleMetric mrmeshpy.getComplexFillMetric | ( | Mesh | mesh, |
| EdgeId | e ) |
This metric minimizes the sum of triangleMetric for all triangles in the triangulation plus the sum edgeMetric for all edges inside and on the boundary of the triangulation.\\n Where\\n triangleMetric is proportional to weighted triangle area and triangle aspect ratio\\n edgeMetric grows with angle between triangles as ( ( 1 - cos( x ) ) / ( 1 + cos( x ) ) ) ^ 4.
| FillHoleMetric mrmeshpy.getComplexStitchMetric | ( | Mesh | mesh | ) |
This metric minimizes the sum of triangleMetric for all triangles in the triangulation plus the sum edgeMetric for all edges inside and on the boundary of the triangulation.\\n Where\\n triangleMetric is proportional to triangle aspect ratio\\n edgeMetric is proportional to ( 1 - dihedralAngleCos )
| int mrmeshpy.getContourPlaneIntersections | ( | std_vector_Vector3_float | path, |
| Plane3f | plane, | ||
| std_vector_Vector3_float | outIntersections = None ) |
finds all intersection points between given contour and plane, adds them in outIntersections and returns their number
| str mrmeshpy.GetCpuId | ( | ) |
returns string identification of the CPU
| FaceBitSet mrmeshpy.getCrossedFaces | ( | MeshTopology | topology, |
| std_vector_EdgePoint | isoline ) |
for a consistently oriented isoline, returns all faces it goes inside
| str mrmeshpy.getCurrentStacktrace | ( | ) |
returns string representation of the current stacktrace
| str mrmeshpy.getCurrentStacktraceInline | ( | ) |
returns string representation of the current stacktrace; the function is inlined, to put the code in any shared library; if std::stacktrace is first called from MRMesh.dll then it is not unloaded propely
| Object mrmeshpy.getDepthFirstObject_Object | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectDistanceMap mrmeshpy.getDepthFirstObject_ObjectDistanceMap | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectLines mrmeshpy.getDepthFirstObject_ObjectLines | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectLinesHolder mrmeshpy.getDepthFirstObject_ObjectLinesHolder | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectMesh mrmeshpy.getDepthFirstObject_ObjectMesh | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectMeshHolder mrmeshpy.getDepthFirstObject_ObjectMeshHolder | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectPoints mrmeshpy.getDepthFirstObject_ObjectPoints | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectPointsHolder mrmeshpy.getDepthFirstObject_ObjectPointsHolder | ( | Object | root, |
| ObjectSelectivityType | type ) |
| ObjectVoxels mrmeshpy.getDepthFirstObject_ObjectVoxels | ( | Object | root, |
| ObjectSelectivityType | type ) |
| VisualObject mrmeshpy.getDepthFirstObject_VisualObject | ( | Object | root, |
| ObjectSelectivityType | type ) |
| str mrmeshpy.GetDetailedOSName | ( | ) |
returns string with OS name with details
| FillHoleMetric mrmeshpy.getEdgeLengthFillMetric | ( | Mesh | mesh | ) |
Simple metric minimizing the sum of all edge lengths
| FillHoleMetric mrmeshpy.getEdgeLengthStitchMetric | ( | Mesh | mesh | ) |
Forbids connecting vertices from the same hole \\n Simple metric minimizing edge length
| UndirectedEdgeBMap mrmeshpy.getEdgeOrdering | ( | FaceBMap | faceMap, |
| MeshTopology | topology ) |
compute the order of edges given the order of faces: edges near first faces also appear first; \\param faceMap old face id -> new face id
| FaceBitSet mrmeshpy.getFacesByMinEdgeLength | ( | Mesh | mesh, |
| float | minLength ) |
Return faces with at least one edge longer than the specified length.
| Vector3f mrmeshpy.getFeatureDirection | ( | FeatureObject | feature | ) |
Using forEachObjectKind the template collects a list of features for which the method ...->getDirection() is available
| Vector3f mrmeshpy.getFeatureNormal | ( | FeatureObject | feature | ) |
Using forEachObjectKind the template collects a list of features for which the method ...->getNormal() is available
| std_unordered_set_std_string mrmeshpy.getFeaturesTypeWithDirections | ( | ) |
Try to getDirection from specific feature using forEachObjectKind template. Returns nullopt is ...->getDirection() is not available for given feature type.
| std_unordered_set_std_string mrmeshpy.getFeaturesTypeWithNormals | ( | ) |
Try to getNormal from specific feature using forEachObjectKind template. Returns nullopt is ...->getNormal() is not available for given feature type.
| HoleFillPlan mrmeshpy.getHoleFillPlan | ( | Mesh | mesh, |
| EdgeId | e, | ||
| FillHoleParams | params = '{}' ) |
prepares the plan how to triangulate the face or hole to the left of (e) (not filling it immediately), several getHoleFillPlan can work in parallel
| std_vector_HoleFillPlan mrmeshpy.getHoleFillPlans | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | holeRepresentativeEdges, | ||
| FillHoleParams | params = '{}' ) |
prepares the plans how to triangulate the faces or holes, each given by a boundary edge (with filling target to the left), the plans are prepared in parallel with minimal memory allocation compared to manual calling of several getHoleFillPlan(), but it can inefficient when some holes are very complex
| pathlib.Path mrmeshpy.GetHomeDirectory | ( | ) |
returns home directory
| str mrmeshpy.getICPStatusInfo | ( | int | iterations, |
| ICPExitType | exitType ) |
returns status info string
| UndirectedEdgeBitSet mrmeshpy.getIncidentEdges | ( | MeshTopology | topology, |
| FaceBitSet | faces ) |
composes the set of all undirected edges, having a face from given set from one of two sides
| UndirectedEdgeBitSet mrmeshpy.getIncidentEdges | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges ) |
composes the set of all undirected edges, having at least one common vertex with an edge from given set
| FaceBitSet mrmeshpy.getIncidentFaces | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges ) |
composes the set of all faces incident to given edges
| FaceBitSet mrmeshpy.getIncidentFaces | ( | MeshTopology | topology, |
| VertBitSet | verts ) |
composes the set of all faces incident to given vertices
| VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
| FaceBitSet | faces ) |
composes the set of all vertices incident to given faces
| VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
| FaceBitSet | faces, | ||
| VertBitSet | store ) |
if faces-parameter is null pointer then simply returns the reference on all valid vertices; otherwise performs store = getIncidentVerts( topology, *faces ) and returns reference on store
| VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges ) |
composes the set of all vertices incident to given edges
| VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges, | ||
| VertBitSet | store ) |
if edges-parameter is null pointer then simply returns the reference on all valid vertices; otherwise performs store = getIncidentVerts( topology, *edges ) and returns reference on store
| UndirectedEdgeBitSet mrmeshpy.getInnerEdges | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
composes the set of all edges having both left and right in given region
| UndirectedEdgeBitSet mrmeshpy.getInnerEdges | ( | MeshTopology | topology, |
| VertBitSet | verts ) |
composes the set of all edges with all their vertices in given set
| FaceBitSet mrmeshpy.getInnerFaces | ( | MeshTopology | topology, |
| VertBitSet | verts ) |
composes the set of all faces with all their vertices in given set
| VertBitSet mrmeshpy.getInnerVerts | ( | MeshTopology | topology, |
| FaceBitSet | region = None ) |
composes the set of all vertices not on the boundary of a hole and with all their adjacent faces in given set
| VertBitSet mrmeshpy.getInnerVerts | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges ) |
composes the set of all vertices with all their edges in given set
| std_array_Vector3_float_3 mrmeshpy.getLeftTriPoints | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
returns three points of left face of e: res[0] = orgPnt( e ), res[1] = destPnt( e )
| None mrmeshpy.getLeftTriPoints | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e, | ||
| Vector3f | v0, | ||
| Vector3f | v1, | ||
| Vector3f | v2 ) |
returns three points of left face of e: v0 = orgPnt( e ), v1 = destPnt( e )
| FillHoleMetric mrmeshpy.getMaxDihedralAngleMetric | ( | Mesh | mesh | ) |
This metric minimizes the maximal dihedral angle between the faces in the triangulation and on its boundary
| float mrmeshpy.getMeanSqDistToPlane | ( | IPointPairs | pairs | ) |
computes root-mean-square deviation from points to target planes
| float mrmeshpy.getMeanSqDistToPoint | ( | IPointPairs | pairs | ) |
computes root-mean-square deviation between points
| MeshOrPoints mrmeshpy.getMeshOrPoints | ( | Object | obj | ) |
constructs MeshOrPoints from ObjectMesh or ObjectPoints, otherwise returns nullopt
| MeshOrPointsXf mrmeshpy.getMeshOrPointsXf | ( | Object | obj | ) |
| FillHoleMetric mrmeshpy.getMinAreaMetric | ( | Mesh | mesh | ) |
This metric is for triangulation construction with minimal summed area of triangles. Warning: this metric can produce degenerated triangles
| FillHoleMetric mrmeshpy.getMinTriAngleMetric | ( | Mesh | mesh | ) |
This metric maximizes the minimal angle among all faces in the triangulation
| str mrmeshpy.GetMRVersionString | ( | ) |
returns version of MR
| FaceBitSet mrmeshpy.getNeighborFaces | ( | MeshTopology | topology, |
| UndirectedEdgeBitSet | edges ) |
composes the set of all left and right faces of given edges
| int mrmeshpy.getNumActivePairs | ( | IPointPairs | pairs | ) |
computes the number of active pairs
| int mrmeshpy.getNumNodes | ( | int | numLeaves | ) |
returns the number of nodes in the binary tree with given number of leaves
| int mrmeshpy.getNumNodesPoints | ( | int | numPoints | ) |
returns the number of nodes in the binary tree with given number of points
| int mrmeshpy.getNumSamples | ( | IPointPairs | pairs | ) |
returns the number of samples able to form pairs
| None mrmeshpy.getOneMeshIntersectionContours | ( | Mesh | meshA, |
| Mesh | meshB, | ||
| std_vector_std_vector_VarEdgeTri | contours, | ||
| std_vector_OneMeshContour | outA, | ||
| std_vector_OneMeshContour | outB, | ||
| CoordinateConverters | converters, | ||
| AffineXf3f | rigidB2A = None, | ||
| std_vector_std_vector_Vector3_float | outPtsA = None, | ||
| bool | addSelfyTerminalVerts = False ) |
Converts contours given in topological terms as the intersections of one mesh's edge and another mesh's triangle (ContinuousContours), into contours of meshA and/or meshB given as a sequence of (primitiveId and Cartesian coordinates); converters are required for better precision in case of degenerations; note that contours should not have intersections
| std_vector_OneMeshContour mrmeshpy.getOneMeshSelfIntersectionContours | ( | Mesh | mesh, |
| std_vector_std_vector_VarEdgeTri | contours, | ||
| CoordinateConverters | converters, | ||
| AffineXf3f | rigidB2A = None ) |
Converts ordered continuous self contours of single meshes to OneMeshContours converters are required for better precision in case of degenerations
computes optimal order of faces: old face id -> new face id, the order is similar as in AABB tree, but faster to compute
| str mrmeshpy.getOSNoSpaces | ( | ) |
returns string identification of the OS
| FillHoleMetric mrmeshpy.getParallelPlaneFillMetric | ( | Mesh | mesh, |
| EdgeId | e, | ||
| Plane3f | plane = None ) |
This metric minimizes summary projection of new edges to plane normal, (try do produce edges parallel to plane)
| int mrmeshpy.getPathEdgesInPlane | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | path, | ||
| Plane3f | plane, | ||
| float | tolerance = 0.0, | ||
| std_vector_Id_EdgeTag | outInPlaneEdges = None ) |
finds all path edges located in given plane with given tolerance, adds them in outInPlaneEdges and returns their number
| int mrmeshpy.getPathPlaneIntersections | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | path, | ||
| Plane3f | plane, | ||
| std_vector_EdgePoint | outIntersections = None ) |
finds all intersection points between given path and plane, adds them in outIntersections and returns their number
| Vector3f mrmeshpy.getPickedPointNormal | ( | VisualObject | object, |
| std_variant_std_monostate_MeshTriPoint_EdgePoint_Id_VertTag | point ) |
Returns object normal in local coordinates at given point, returns std::nullopt if object or point is invalid, or if it is ObjectLines or ObjectPoints without normals
| Vector3f mrmeshpy.getPickedPointPosition | ( | VisualObject | object, |
| std_variant_std_monostate_MeshTriPoint_EdgePoint_Id_VertTag | point ) |
Converts given point into local coordinates of its object, returns std::nullopt if object or point is invalid, or if it does not present in the object's topology
| HoleFillPlan mrmeshpy.getPlanarHoleFillPlan | ( | Mesh | mesh, |
| EdgeId | e ) |
prepares the plan how to triangulate the planar face or planar hole to the left of (e) (not filling it immediately), several getPlanarHoleFillPlan can work in parallel
| std_vector_HoleFillPlan mrmeshpy.getPlanarHoleFillPlans | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | holeRepresentativeEdges ) |
prepares the plans how to triangulate the planar faces or holes, each given by a boundary edge (with filling target to the left), the plans are prepared in parallel with minimal memory allocation compared to manual calling of several getPlanarHoleFillPlan(), but it can inefficient when some holes are very complex
| Plane3d mrmeshpy.getPlane3d | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
| Plane3f mrmeshpy.getPlane3f | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns the plane containing given triangular face with normal looking outwards
| FillHoleMetric mrmeshpy.getPlaneFillMetric | ( | Mesh | mesh, |
| EdgeId | e ) |
Same as getCircumscribedFillMetric, but with extra penalty for the triangles having normals looking in the opposite side of plane containing left of (e).
| FillHoleMetric mrmeshpy.getPlaneNormalizedFillMetric | ( | Mesh | mesh, |
| EdgeId | e ) |
Similar to getPlaneFillMetric with extra penalty for the triangles having normals looking in the opposite side of plane containing left of (e), but the metric minimizes the sum of circumcircle radius times aspect ratio for all triangles in the triangulation.
| VertBitSet mrmeshpy.getRegionBoundaryVerts | ( | MeshTopology | topology, |
| FaceBitSet | region ) |
composes the set of all boundary vertices for given region, unlike getBoundaryVerts the vertices of mesh boundary having no incident not-region faces are not returned
| EdgeBitSet mrmeshpy.getRegionEdges | ( | MeshTopology | topology, |
| FaceBitSet | faces ) |
composes the set of all edges, having a face from given set at the left
| FaceBitSet mrmeshpy.getSubdividePart | ( | FaceBitSet | valids, |
| int | subdivideParts, | ||
| int | myPart ) |
\\brief returns given subdivision part of all valid faces; parallel threads shall be able to safely modify these bits because they do not share any block with other parts
| NumSum mrmeshpy.getSumSqDistToPlane | ( | IPointPairs | pairs, |
| std_optional_double | inaccuracy = '{}' ) |
computes the number of active pairs and the sum of squared deviation from points to target planes or the difference between the squared distances between points to target planes and inaccuracy
| NumSum mrmeshpy.getSumSqDistToPoint | ( | IPointPairs | pairs, |
| std_optional_double | inaccuracy = '{}' ) |
computes the number of active pairs and the sum of squared distances between points or the difference between the squared distances between points and inaccuracy
| std_vector_std_vector_EdgePoint mrmeshpy.getSurfacePathsViaVertices | ( | Mesh | mesh, |
| VertBitSet | vs ) |
returns a set of mesh lines passing via most of given vertices in auto-selected order; the lines try to avoid sharp turns in the vertices
| SystemMemory mrmeshpy.getSystemMemory | ( | ) |
return information about memory available in the system
| pathlib.Path mrmeshpy.GetTempDirectory | ( | ) |
returns temp directory
| func_Vector3_float_from_Vector3_int mrmeshpy.getToFloatConverter | ( | Box3d | box | ) |
creates converter from Vector3i to Vector3f in Box range (int diapason is mapped to box range)
| func_Vector3_int_from_Vector3_float mrmeshpy.getToIntConverter | ( | Box3d | box | ) |
creates converter from Vector3f to Vector3i in Box range (int diapason is mapped to box range)
| std_vector_std_shared_ptr_Object mrmeshpy.getTopmostObjects_Object | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectDistanceMap mrmeshpy.getTopmostObjects_ObjectDistanceMap | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectLines mrmeshpy.getTopmostObjects_ObjectLines | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectLinesHolder mrmeshpy.getTopmostObjects_ObjectLinesHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectMesh mrmeshpy.getTopmostObjects_ObjectMesh | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectMeshHolder mrmeshpy.getTopmostObjects_ObjectMeshHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectPoints mrmeshpy.getTopmostObjects_ObjectPoints | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectPointsHolder mrmeshpy.getTopmostObjects_ObjectPointsHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.getTopmostObjects_ObjectVoxels | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_VisualObject mrmeshpy.getTopmostObjects_VisualObject | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable', | ||
| bool | visibilityCheck = False ) |
Returns all topmost objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_Object mrmeshpy.getTopmostVisibleObjects_Object | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectDistanceMap mrmeshpy.getTopmostVisibleObjects_ObjectDistanceMap | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectLines mrmeshpy.getTopmostVisibleObjects_ObjectLines | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectLinesHolder mrmeshpy.getTopmostVisibleObjects_ObjectLinesHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectMesh mrmeshpy.getTopmostVisibleObjects_ObjectMesh | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectMeshHolder mrmeshpy.getTopmostVisibleObjects_ObjectMeshHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectPoints mrmeshpy.getTopmostVisibleObjects_ObjectPoints | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectPointsHolder mrmeshpy.getTopmostVisibleObjects_ObjectPointsHolder | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.getTopmostVisibleObjects_ObjectVoxels | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_vector_std_shared_ptr_VisualObject mrmeshpy.getTopmostVisibleObjects_VisualObject | ( | Object | root, |
| ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root
| std_array_Vector3_float_3 mrmeshpy.getTriPoints | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns three points of given face
| None mrmeshpy.getTriPoints | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f, | ||
| Vector3f | v0, | ||
| Vector3f | v1, | ||
| Vector3f | v2 ) |
returns three points of given face
| func_float_from_char_const mrmeshpy.getTypeConverter | ( | ScalarType | scalarType, |
| int | range, | ||
| int | min ) |
get a function to convert binary data of specified format type to a scalar value \\param scalarType - binary format type \\param range - (for integer types only) the range of possible values \\param min - (for integer types only) the minimal value
| FillHoleMetric mrmeshpy.getUniversalMetric | ( | Mesh | mesh | ) |
This metric consists of two parts 1) for each triangle: it is the circumcircle diameter, this avoids the appearance of degenerate triangles; 2) for each edge: square root of double total area of triangles to its left and right times the factor depending extensionally on absolute dihedral angle between left and right triangles, this makes visually triangulated surface as smooth as possible. For planar holes it is the same as getCircumscribedMetric.
| pathlib.Path mrmeshpy.getUserConfigDir | ( | ) |
return path to the folder with user config file(s)
| pathlib.Path mrmeshpy.getUserConfigFilePath | ( | ) |
returns path of config file in APPDATA
| CoordinateConverters mrmeshpy.getVectorConverters | ( | MeshPart | a | ) |
\\brief creates simple converters from Vector3f to Vector3i and back in mesh part area range
| CoordinateConverters mrmeshpy.getVectorConverters | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None ) |
\\brief creates simple converters from Vector3f to Vector3i and back in mesh parts area range \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
| MeshTriPoint mrmeshpy.getVertexAsMeshTriPoint | ( | MeshTopology | topology, |
| EdgeId | e, | ||
| VertId | v ) |
returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible
| VertBMap mrmeshpy.getVertexOrdering | ( | FaceBMap | faceMap, |
| MeshTopology | topology ) |
compute the order of vertices given the order of faces: vertices near first faces also appear first; \\param faceMap old face id -> new face id
| std_vector_Id_VertTag mrmeshpy.getVertexOrdering | ( | MeshTopology | topology, |
| VertBitSet | region ) |
returns all vertices from given region ordered in each connected component in breadth-first way
| FillHoleMetric mrmeshpy.getVerticalStitchMetric | ( | Mesh | mesh, |
| Vector3f | upDir ) |
Forbids connecting vertices from the same hole \\n All new faces should be parallel to given direction
| AffineXf3f mrmeshpy.getXfFromOxyPlane | ( | Mesh | mesh, |
| std_vector_std_vector_Id_EdgeTag | paths ) |
| AffineXf3f mrmeshpy.getXfFromOxyPlane | ( | std_vector_std_vector_Vector3_float | contours | ) |
computes the transformation that maps O into center mass of contours' points OXY into best plane containing the points
| Mesh mrmeshpy.gridToMesh | ( | FloatGrid | grid, |
| GridToMeshSettings | settings ) |
converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm
converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm; deletes grid in the middle to reduce peak memory consumption
| None mrmeshpy.hardSmoothTetrahedrons | ( | Mesh | mesh, |
| VertBitSet | region = None ) |
move all region vertices with exactly three neighbor vertices in the center of the neighbors
| None mrmeshpy.hardSmoothTetrahedrons | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | region = None ) |
| bool mrmeshpy.hasAnyIsoline | ( | MeshTopology | topology, |
| func_float_from_Id_VertTag | vertValues, | ||
| FaceBitSet | region = None ) |
quickly returns true if extractIsolines produce not-empty set for the same arguments
| bool mrmeshpy.hasAnyIsoline | ( | MeshTopology | topology, |
| VertScalars | vertValues, | ||
| float | isoValue, | ||
| FaceBitSet | region = None ) |
quickly returns true if extractIsolines produce not-empty set for the same arguments
| bool mrmeshpy.hasAnyPlaneSection | ( | MeshPart | mp, |
| Plane3f | plane, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
quickly returns true if extractPlaneSections produce not-empty set for the same arguments
| bool mrmeshpy.hasAnyXYPlaneSection | ( | MeshPart | mp, |
| float | zLevel, | ||
| UseAABBTree | u = 'UseAABBTree::Yes' ) |
quickly returns true if extractXYPlaneSections produce not-empty set for the same arguments
| bool mrmeshpy.hasFormatPlaceholders | ( | str | str | ) |
Returns true if `str` has at least one `{...}` formatting placeholder.
| bool mrmeshpy.hasMultipleEdges | ( | MeshTopology | topology | ) |
| bool mrmeshpy.hasProhibitedChars | ( | str | line | ) |
returns true if line contains any of OS prohibited chars ('?', '*', '/', '\\', '"', '<', '>')
| int mrmeshpy.heapBytes | ( | BitSet | bs | ) |
returns the amount of memory given BitSet occupies on heap
| int mrmeshpy.heapBytes | ( | FloatGrid | grid | ) |
returns the amount of heap memory occupied by grid
| int mrmeshpy.heapBytes | ( | Mesh | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
| int mrmeshpy.heapBytes | ( | Object | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
| int mrmeshpy.heapBytes | ( | PointCloud | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
| int mrmeshpy.heapBytes | ( | Polyline3 | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
| int mrmeshpy.heapBytes | ( | std_vector_Color | vec | ) |
returns the amount of memory given vector occupies on heap
| int mrmeshpy.heapBytes | ( | std_vector_float | vec | ) |
returns the amount of memory given vector occupies on heap
| int mrmeshpy.heapBytes | ( | std_vector_std_shared_ptr_Object | vec | ) |
returns the amount of memory given vector occupies on heap
| int mrmeshpy.heapBytes | ( | std_vector_unsigned_long | vec | ) |
returns the amount of memory given vector occupies on heap
| int mrmeshpy.heapBytes | ( | Vector_MeshTexture_TextureId | vec | ) |
| Vector3d mrmeshpy.holeDirArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes directed area of the hole specified by one of its edges with no valid left face (left is hole); if the hole is planar then returned vector is orthogonal to the plane pointing outside and its magnitude is equal to hole area
| float mrmeshpy.holePerimiter | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes the perimeter of the hole specified by one of its edges with no valid left face (left is hole)
| func_float_from_Id_EdgeTag mrmeshpy.identityMetric | ( | ) |
metric returning 1 for every edge
| bool mrmeshpy.improveSampling | ( | PointCloud | cloud, |
| VertBitSet | samples, | ||
| ImproveSamplingSettings | settings ) |
Finds more representative sampling starting from a given one following k-means method; \\param samples input and output selected sample points from \\param cloud; \\return false if it was terminated by the callback
| bool mrmeshpy.inCircle | ( | PreciseVertCoords2 | vs | ) |
| bool mrmeshpy.inCircle | ( | std_array_PreciseVertCoords2_4 | vs | ) |
return true if 4th point in array lays inside circumcircle of first 3 points based triangle
| None mrmeshpy.inflate | ( | Mesh | mesh, |
| VertBitSet | verts, | ||
| InflateSettings | settings ) |
Inflates (in one of two sides) given mesh region, putting given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary; \\param verts must not include all vertices of a mesh connected component
| None mrmeshpy.inflate | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | verts, | ||
| InflateSettings | settings ) |
| None mrmeshpy.inflate1 | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | verts, | ||
| float | pressure ) |
Inflates (in one of two sides) given mesh region, putting given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary; this function makes just 1 iteration of inflation and is used inside inflate(...)
| None mrmeshpy.interpolateArcs | ( | std_vector_GCommand | commands, |
| ArcInterpolationParams | params, | ||
| Axis | axis ) |
interpolates given path with arcs
| None mrmeshpy.interpolateLines | ( | std_vector_GCommand | commands, |
| LineInterpolationParams | params, | ||
| Axis | axis ) |
interpolates several points lying on the same straight line with one move
| Vector2f mrmeshpy.intersection | ( | LineSegm2f | segm1, |
| LineSegm2f | segm2 ) |
finds an intersection between a segm1 and a segm2 \\return nullopt if they don't intersect (even if they match)
| bool mrmeshpy.isClosed | ( | std_vector_VarEdgeTri | contour | ) |
returns true if contour is closed
| bool mrmeshpy.isClosed | ( | std_vector_Vector3_float | c | ) |
| bool mrmeshpy.isConsistentlyOriented | ( | MeshTopology | topology, |
| std_vector_EdgePoint | isoline ) |
returns true if left(isoline[i].e) == right(isoline[i+1].e) and valid for all i; all above functions produce consistently oriented lines
| bool mrmeshpy.isDegree3Dest | ( | MeshTopology | topology, |
| EdgeId | e ) |
returns true if the destination of given edge has degree 3 and 3 incident triangles
| bool mrmeshpy.isEdgeBetweenDoubleTris | ( | MeshTopology | topology, |
| EdgeId | e ) |
returns true if the edge e has both left and right triangular faces and the degree of dest( e ) is 2
| bool mrmeshpy.isEdgeLoop | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | edges ) |
returns true if every next edge starts where previous edge ends, and start vertex coincides with finish vertex
| bool mrmeshpy.isEdgePath | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | edges ) |
returns true if every next edge starts where previous edge ends
| bool mrmeshpy.isHoleBd | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | loop ) |
returns true if given loop is a boundary of one hole in given mesh topology: * every edge in the loop does not have left face, * next/prev edges in the loop are related as follows: next = topology.prev( prev.sym() ) if the function returns true, then any edge from the loop passed to \\ref fillHole will fill the same hole
| bool mrmeshpy.isInside | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh part A is inside of closed mesh part B \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
| bool mrmeshpy.isInside | ( | Polyline2 | a, |
| Polyline2 | b, | ||
| AffineXf2f | rigidB2A = None ) |
\\brief checks that arbitrary 2d polyline A is inside of closed 2d polyline B \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
| bool mrmeshpy.isNanFast | ( | float | f | ) |
quickly tests whether given float is not-a-number
| bool mrmeshpy.isNonIntersectingInside | ( | Mesh | a, |
| FaceId | partFace, | ||
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh A part (whole part is represented by one face `partFace`) is inside of closed mesh part B The version of `isInside` without collision check; it is user's responsibility to guarantee that the meshes don't collide \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
| bool mrmeshpy.isNonIntersectingInside | ( | MeshPart | a, |
| MeshPart | b, | ||
| AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh part A is inside of closed mesh part B The version of `isInside` without collision check; it is user's responsibility to guarantee that the meshes don't collide \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
\\brief detect if given point is inside polyline, by counting ray intersections \\param polyline input polyline \\param point input point
| bool mrmeshpy.isSupportedFileInSubfolders | ( | os.PathLike | str | bytes | folder | ) |
check if there are any supported files folder and subfolders
| bool mrmeshpy.isTIFFFile | ( | os.PathLike | str | bytes | path | ) |
returns true if given file is tiff
| EdgeId mrmeshpy.isVertexRepeatedOnHoleBd | ( | MeshTopology | topology, |
| VertId | v ) |
if given vertex is present on the boundary of some hole several times then returns an edge of this hole (without left); returns invalid edge otherwise (not a boundary vertex, or it is present only once on the boundary of each hole it pertains to)
| ToolPathResult mrmeshpy.lacingToolPath | ( | MeshPart | mp, |
| ToolPathParams | params, | ||
| Axis | cutDirection ) |
Slices are built along the axis defined by cutDirection argument (can be Axis::X or Axis::Y)
| float mrmeshpy.leftCotan | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes cotangent of the angle in the left( e ) triangle opposite to e, and returns 0 if left face does not exist
| Vector3f mrmeshpy.leftDirDblArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes directed double area of left triangular face of given edge
| Vector3f mrmeshpy.leftNormal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes triangular face normal from its vertices
| IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing | ( | MeshTopology | topology, |
| EdgeId | edge ) |
to iterate over all edges with same left face as firstEdge (INCLUDING firstEdge) for ( Edge e : leftRing( topology, firstEdge ) ) ...
| IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing | ( | MeshTopology | topology, |
| FaceId | f ) |
| IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing0 | ( | MeshTopology | topology, |
| EdgeId | edge ) |
to iterate over all edges with same left face as firstEdge (EXCLUDING firstEdge) for ( Edge e : leftRing0( topology, firstEdge ) ) ...
| Vector3f mrmeshpy.leftTangent | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
computes unit vector that is both orthogonal to given edge and to the normal of its left triangle, the vector is directed inside left triangle
| Mesh mrmeshpy.loadASCIIStl | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in textual .STL format
| Mesh mrmeshpy.loadASCIIStl | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in textual .STL format
| Mesh mrmeshpy.loadBinaryStl | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in binary .STL format
| Mesh mrmeshpy.loadBinaryStl | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in binary .STL format; important on Windows: in stream must be open in binary mode
| DistanceMap mrmeshpy.loadDistanceMapFromImage | ( | os.PathLike | str | bytes | filename, |
| float | threshold = 0.003921568859368563 ) |
load distance map from a grayscale image file
threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
| Mesh mrmeshpy.loadDxf | ( | os.PathLike | str | bytes | path, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .DXF format;
| Mesh mrmeshpy.loadDxf | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .DXF format;
| None mrmeshpy.loadIOExtras | ( | ) |
| Polyline3 mrmeshpy.loadLines | ( | os.PathLike | str | bytes | file, |
| LinesLoadSettings | settings = '{}' ) |
loads polyline from file in the format detected from file extension
| Polyline3 mrmeshpy.loadLines | ( | typing.Any | in_, |
| str | extension, | ||
| LinesLoadSettings | settings = '{}' ) |
loads polyline from stream in the format detected from given extension-string (`*.ext`); important on Windows: in stream must be open in binary mode
| Mesh mrmeshpy.loadMesh | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in the format detected from file extension
| Mesh mrmeshpy.loadMesh | ( | typing.Any | in_, |
| str | extension, | ||
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in the format detected from given extension-string (`*.ext`); important on Windows: in stream must be open in binary mode
| Mesh mrmeshpy.loadMrmesh | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in internal MeshLib format
| Mesh mrmeshpy.loadMrmesh | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in internal MeshLib format; important on Windows: in stream must be open in binary mode
| Mesh mrmeshpy.loadObj | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .OBJ format
| Mesh mrmeshpy.loadObj | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .OBJ format; important on Windows: in stream must be open in binary mode
| LoadedObjects mrmeshpy.loadObjectFromFile | ( | os.PathLike | str | bytes | filename, |
| func_bool_from_float | callback = '{}' ) |
\\brief load all objects (or any type: mesh, lines, points, voxels or scene) from file \\param callback - callback function to set progress (for progress bar)
| Mesh mrmeshpy.loadOff | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .OFF format
| Mesh mrmeshpy.loadOff | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .OFF format
| Mesh mrmeshpy.loadPly | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .PLY format;
| Mesh mrmeshpy.loadPly | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .PLY format; important on Windows: in stream must be open in binary mode
| VertCoords mrmeshpy.loadPly | ( | typing.Any | in_, |
| PlyLoadParams | params ) |
| PointCloud mrmeshpy.loadPoints | ( | os.PathLike | str | bytes | file, |
| PointsLoadSettings | settings = '{}' ) |
detects the format from file extension and loads points from it
| PointCloud mrmeshpy.loadPoints | ( | typing.Any | in_, |
| str | extension, | ||
| PointsLoadSettings | settings = '{}' ) |
extension in `*.ext` format
| LoadedObjectT mrmeshpy.loadSceneFromAnySupportedFormat | ( | os.PathLike | str | bytes | path, |
| func_bool_from_float | callback = '{}' ) |
tries to load scene from every format listed in SceneFormatFilters
| Object mrmeshpy.loadSceneObject | ( | os.PathLike | str | bytes | path, |
| func_bool_from_float | callback = '{}' ) |
Detects the format from file extension and loads scene object from it.
| Mesh mrmeshpy.loadStl | ( | os.PathLike | str | bytes | file, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from file in any .STL format: both binary and ASCII
| Mesh mrmeshpy.loadStl | ( | typing.Any | in_, |
| MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in any .STL format: both binary and ASCII; important on Windows: in stream must be open in binary mode
| std_vector_VoxelsVolumeMinMax_FloatGrid mrmeshpy.loadVoxels | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | cb = '{}' ) |
Detects the format from file extension and loads voxels from it
| VdbVolume mrmeshpy.loadVoxelsGav | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | cb = '{}' ) |
Load voxel from Gav-file with micro CT reconstruction
| VdbVolume mrmeshpy.loadVoxelsGav | ( | typing.Any | in_, |
| func_bool_from_float | cb = '{}' ) |
Load voxel from Gav-stream with micro CT reconstruction
| VdbVolume mrmeshpy.loadVoxelsRaw | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | cb = '{}' ) |
Load raw voxels file, parsing parameters from name
| VdbVolume mrmeshpy.loadVoxelsRaw | ( | os.PathLike | str | bytes | file, |
| VoxelsLoad.RawParameters | params, | ||
| func_bool_from_float | cb = '{}' ) |
Load raw voxels from file with provided parameters
| VdbVolume mrmeshpy.loadVoxelsRaw | ( | typing.Any | in_, |
| VoxelsLoad.RawParameters | params, | ||
| func_bool_from_float | cb = '{}' ) |
Load raw voxels from stream with provided parameters; important on Windows: in stream must be open in binary mode
| FaceBitSet mrmeshpy.localFindSelfIntersections | ( | Mesh | mesh, |
| bool | touchIsIntersection = True, | ||
| func_bool_from_float | cb = '{}' ) |
Find all self-intersections faces component-wise
| None mrmeshpy.localFixSelfIntersections | ( | Mesh | mesh, |
| SelfIntersections.Settings | settings ) |
Finds and fixes self-intersections per component:
| Mesh mrmeshpy.makeArrow | ( | Vector3f | base, |
| Vector3f | vert, | ||
| float | thickness = 0.05000000074505806, | ||
| float | coneRadius = 0.10000000149011612, | ||
| float | coneSize = 0.20000000298023224, | ||
| int | qual = 32 ) |
creates hollow arrow from the 'base' to the 'vert'. Number of points on the circle 'qual' is between 3 and 256
| Mesh mrmeshpy.makeBasisAxes | ( | float | size = 1.0, |
| float | thickness = 0.05000000074505806, | ||
| float | coneRadius = 0.10000000149011612, | ||
| float | coneSize = 0.20000000298023224, | ||
| int | qual = 32 ) |
creates the mesh with 3 axis arrows
| MakeBridgeResult mrmeshpy.makeBridge | ( | MeshTopology | topology, |
| EdgeId | a, | ||
| EdgeId | b, | ||
| FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of two triangles in general or of one triangle if a and b are neighboring edges on the boundary; \\return MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear
| EdgeId mrmeshpy.makeBridgeEdge | ( | MeshTopology | topology, |
| EdgeId | a, | ||
| EdgeId | b ) |
creates a new bridge edge between origins of two boundary edges a and b (both having no valid left face); \\return invalid id if bridge cannot be created because otherwise multiple edges appear
| Mesh mrmeshpy.makeCone | ( | float | radius0 = 0.10000000149011612, |
| float | length = 1.0, | ||
| int | resolution = 32 ) |
Makes cone mesh by calling makeCylinderAdvanced with the top radius 0.
| Mesh mrmeshpy.makeConvexHull | ( | PointCloud | in_ | ) |
| std_vector_Vector2_float mrmeshpy.makeConvexHull | ( | std_vector_Vector2_float | points | ) |
computes the contour of convex hull from given input points
| Mesh mrmeshpy.makeConvexHull | ( | VertCoords | points, |
| VertBitSet | validPoints ) |
computes the mesh of convex hull from given input points
| Mesh mrmeshpy.makeCube | ( | Vector3f | size = 'Vector3f::diagonal(1.F)', |
| Vector3f | base = 'Vector3f::diagonal(-0.5F)' ) |
creates box mesh with given min-corner (base) and given size in every dimension; with default parameters, creates unit cube mesh with the centroid in (0,0,0)
| MeshTopology mrmeshpy.makeCubeTopology | ( | ) |
creates cube's topology with 8 vertices, 12 triangular faces, 18 undirected edges. The order of vertices: 0_v: x=min, y=min, z=min 1_v: x=min, y=max, z=min 2_v: x=max, y=max, z=min 3_v: x=max, y=min, z=min 4_v: x=min, y=min, z=max 5_v: x=min, y=max, z=max 6_v: x=max, y=max, z=max 7_v: x=max, y=min, z=max
| Mesh mrmeshpy.makeCylinder | ( | float | radius = 0.10000000149011612, |
| float | length = 1.0, | ||
| int | resolution = 16 ) |
Draws cylinder with radius 'radius', height - 'length', its base have 'resolution' sides
| Mesh mrmeshpy.makeCylinderAdvanced | ( | float | radius0 = 0.10000000149011612, |
| float | radius1 = 0.10000000149011612, | ||
| float | start_angle = 0.0, | ||
| float | arc_size = 6.2831854820251465, | ||
| float | length = 1.0, | ||
| int | resolution = 16 ) |
| ObjectMeshData mrmeshpy.makeDecimatedObjectMeshData | ( | ObjectMesh | obj, |
| DecimateSettings | settings, | ||
| DecimateResult | outRes = None ) |
returns the data of decimated mesh given ObjectMesh (which remains unchanged) and decimation parameters
| EdgeId mrmeshpy.makeDegenerateBandAroundHole | ( | Mesh | mesh, |
| EdgeId | a, | ||
| FaceBitSet | outNewFaces = None ) |
creates a band of degenerate triangles around given hole; \\return the edge of new hole opposite to input edge (a)
| None mrmeshpy.makeDegenerateBandAroundRegion | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| MakeDegenerateBandAroundRegionParams | params = '{}' ) |
\\brief Create a band of degenerate faces along the border of the specified region and the rest of the mesh \\details The function is useful for extruding the region without changing the existing faces and creating holes @param mesh - the target mesh @param region - the region required to be separated by a band of degenerate faces @param params - optional output parameters
| int mrmeshpy.makeDeloneEdgeFlips | ( | EdgeLengthMesh | mesh, |
| IntrinsicDeloneSettings | settings = '{}', | ||
| int | numIters = 1, | ||
| func_bool_from_float | progressCallback = '{}' ) |
improves mesh triangulation by performing flipping of edges to satisfy Intrinsic Delaunay local property, consider every edge at most numIters times, \\return the number of flips done \\param numIters Maximal iteration count \\param progressCallback Callback to report algorithm progress and cancel it by user request see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf
| int mrmeshpy.makeDeloneEdgeFlips | ( | Mesh | mesh, |
| DeloneSettings | settings = '{}', | ||
| int | numIters = 1, | ||
| func_bool_from_float | progressCallback = '{}' ) |
improves mesh triangulation by performing flipping of edges to satisfy Delone local property, consider every edge at most numIters times, and allow surface deviation at most on given value during every individual flip, \\return the number of flips done \\param numIters Maximal iteration count \\param progressCallback Callback to report algorithm progress and cancel it by user request
| int mrmeshpy.makeDeloneEdgeFlips | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| DeloneSettings | settings = '{}', | ||
| int | numIters = 1, | ||
| func_bool_from_float | progressCallback = '{}' ) |
| None mrmeshpy.makeDeloneOriginRing | ( | Mesh | mesh, |
| EdgeId | e, | ||
| DeloneSettings | settings = '{}' ) |
improves mesh triangulation in a ring of vertices with common origin and represented by edge e
| None mrmeshpy.makeDeloneOriginRing | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e, | ||
| DeloneSettings | settings = '{}' ) |
| std_vector_Vector3_float mrmeshpy.makeFreeFormOriginGrid | ( | Box3f | box, |
| Vector3i | resolution ) |
Returns positions of grid points in given box with given resolution
divides given mesh into hierarchy of mesh objects: the deepest level of the hierarchy has all details from the original mesh; top levels have progressively less number of objects and less details in each; the number of faces in any object on any level is about the same.
| Mesh mrmeshpy.makeMovementBuildBody | ( | std_vector_std_vector_Vector3_float | body, |
| std_vector_std_vector_Vector3_float | trajectory, | ||
| MovementBuildBodyParams | params = '{}' ) |
makes mesh by moving `body` along `trajectory` if allowRotation rotate it in corners
| VertCoords mrmeshpy.makeNormals | ( | PointCloud | pointCloud, |
| int | avgNeighborhoodSize = 48 ) |
\\brief Makes consistent normals for valid points of given point cloud \\param avgNeighborhoodSize avg num of neighbors of each individual point [[deprecated( "use makeOrientedNormals(...) instead" )]]
| ObjectDistanceMap mrmeshpy.makeObjectDistanceMapFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads distance map from given file in new object
| VisualObject mrmeshpy.makeObjectFromClassName | ( | str | className | ) |
Allocates an object of type `kind`, passing `params...` to its constructor.
| VisualObject mrmeshpy.makeObjectFromEnum | ( | FeaturesObjectKind | kind | ) |
Allocates an object of type `kind`, passing `params...` to its constructor.
| LoadedObjectT mrmeshpy.makeObjectFromMeshFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | cb = '{}', | ||
| bool | returnOnlyMesh = False ) |
loads data from given file and makes either ObjectMesh, ObjectLines or ObjectPoints (if the file has points or edges but not faces)
| LoadedObjects mrmeshpy.makeObjectFromVoxelsFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
| ObjectGcode mrmeshpy.makeObjectGcodeFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads gcode from given file in new object
| ObjectLines mrmeshpy.makeObjectLinesFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads lines from given file in new object
| LoadedObjectT_ObjectMesh mrmeshpy.makeObjectMeshFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | cb = '{}' ) |
loads mesh from given file in new object
| ObjectPoints mrmeshpy.makeObjectPointsFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads points from given file in new object
| std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.makeObjectVoxelsFromFile | ( | os.PathLike | str | bytes | file, |
| func_bool_from_float | callback = '{}' ) |
loads voxels from given file in new object
| Mesh mrmeshpy.makeOpenCone | ( | float | radius = 1, |
| float | zApex = 0, | ||
| float | zBase = 1, | ||
| int | numCircleSegments = 16 ) |
A hollow cone.
| Mesh mrmeshpy.makeOpenCylinder | ( | float | radius = 1, |
| float | z1 = -1, | ||
| float | z2 = 1, | ||
| int | numCircleSegments = 16 ) |
A hollow cylinder.
| VertCoords mrmeshpy.makeOrientedNormals | ( | PointCloud | pointCloud, |
| AllLocalTriangulations | triangs, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Makes normals for valid points of given point cloud; directions of close points are selected to be consistent; \\triangs triangulation neighbours of each point, which are oriented during the call as well \\return nullopt if progress returned false
| VertCoords mrmeshpy.makeOrientedNormals | ( | PointCloud | pointCloud, |
| float | radius, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Makes normals for valid points of given point cloud; directions of close points are selected to be consistent; \\param radius of neighborhood to consider \\return nullopt if progress returned false
| Mesh mrmeshpy.makeOuterHalfTorus | ( | float | primaryRadius = 1.0, |
| float | secondaryRadius = 0.10000000149011612, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
creates torus without inner half faces main application - testing fillHole and Stitch
creates parallelepiped mesh with given min-corner \\p base and given directional vectors \\p size
| Mesh mrmeshpy.makePlane | ( | ) |
Makes square plane 1x1 size with center at (0,0,0) and (0,0,1) normal
| Mesh mrmeshpy.makePrism | ( | float | baseLength, |
| float | leftAngle, | ||
| float | rightAngle, | ||
| float | height = 1.0 ) |
Creates a triangular prism. One edge of its base lies on 'x' axis and has 'baseLength' in length. 'leftAngle' and 'rightAngle' specify two adjacent angles axis of a prism is parallel to 'z' axis
| MakeBridgeResult mrmeshpy.makeQuadBridge | ( | MeshTopology | topology, |
| EdgeId | a, | ||
| EdgeId | b, | ||
| FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of one quadrangle in general (beware that it cannot be rendered) or of one triangle if a and b are neighboring edges on the boundary; \\return false if bridge cannot be created because otherwise multiple edges appear
| Mesh mrmeshpy.makeRegularGridMesh | ( | int | width, |
| int | height, | ||
| func_bool_from_unsigned_long_unsigned_long | validator, | ||
| func_Vector3_float_from_unsigned_long_unsigned_long | positioner, | ||
| func_bool_from_unsigned_long_unsigned_long_unsigned_long_unsigned_long_unsigned_long_unsigned_long | faceValidator = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
Creates regular mesh with points in valid grid lattice
| Mesh mrmeshpy.makeRegularGridMesh | ( | VertCoords | pc, |
| func_bool_from_float | cb = '{}' ) |
Creates regular mesh from monotone (connects point with closed x, y neighbors) points
| AffineXf3d mrmeshpy.makeRigidXf | ( | MeshPart | mp, |
| AffineXf3d | meshXf ) |
given a mesh part and its arbitrary transformation, computes and returns the rigid transformation that best approximates meshXf
| AffineXf3f mrmeshpy.makeRigidXf | ( | MeshPart | mp, |
| AffineXf3f | meshXf ) |
| None mrmeshpy.makeSignedByWindingNumber | ( | FloatGrid | grid, |
| Vector3f | voxelSize, | ||
| Mesh | refMesh, | ||
| MakeSignedByWindingNumberSettings | settings ) |
set signs for unsigned distance field grid using generalized winding number computed at voxel grid point from refMesh
| MakeBridgeResult mrmeshpy.makeSmoothBridge | ( | Mesh | mesh, |
| EdgeId | a, | ||
| EdgeId | b, | ||
| float | samplingStep, | ||
| FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of strip of quadrangles (each consisting of two triangles) in general or of some triangles if a and b are neighboring edges on the boundary; the bridge is made as smooth as possible with small angles in between its links and on the boundary with existed triangles; \\param samplingStep boundaries of the bridge will be subdivided until the distance between neighbor points becomes less than this distance \\return MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear
| Mesh mrmeshpy.makeSolidOfRevolution | ( | std_vector_Vector2_float | profile, |
| int | resolution = 16 ) |
Makes a solid-of-revolution mesh. The resulting mesh is symmetrical about the z-axis.
The profile points must be in the format { distance to the z-axis; z value }.
| Mesh mrmeshpy.makeSphere | ( | SphereParams | params | ) |
creates a mesh of sphere with irregular triangulation
| MarkedContour3f mrmeshpy.makeSpline | ( | MarkedContour3f | in_, |
| float | markStability = 1, | ||
| std_vector_Vector3_float | normals = None ) |
\\param in input marked contour \\param markStability a positive value, the more the value the closer marked points will be to their original positions \\param normals if provided the curve at marked points will try to be orthogonal to given normal there \\return contour with same number of points and same marked, where each return point tries to be on a smooth curve
| MarkedContour3f mrmeshpy.makeSpline | ( | MarkedContour3f | in_, |
| std_vector_Vector3_float | normals, | ||
| float | markStability = 1 ) |
\\param in input marked contour \\param normals the curve at marked points will try to be orthogonal to given normal there \\param markStability a positive value, the more the value the closer marked points will be to their original positions \\return contour with same number of points and same marked, where each return point tries to be on a smooth curve
| MarkedContour3f mrmeshpy.makeSpline | ( | std_vector_Vector3_float | controlPoints, |
| SplineSettings | settings ) |
\\param controlPoints ordered point the spline to interpolate \\return spline contour with same or more points than initially given, marks field highlights the points corresponding to input ones
| ObjectMeshData mrmeshpy.makeSubdividedObjectMeshData | ( | ObjectMesh | obj, |
| SubdivideSettings | settings ) |
returns the data of subdivided mesh given ObjectMesh (which remains unchanged) and subdivision parameters
| Mesh mrmeshpy.makeThickMesh | ( | Mesh | m, |
| ThickenParams | params ) |
given a mesh \\p m, representing a surface, creates new closed mesh by cloning mirrored mesh, and shifting original part and cloned part in different directions according to \\p params, if original mesh was open then stitches corresponding boundaries of two parts
| Mesh mrmeshpy.makeTorus | ( | float | primaryRadius = 1.0, |
| float | secondaryRadius = 0.10000000149011612, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
Z is symmetry axis of this torus points - optional out points of main circle
| Mesh mrmeshpy.makeTorusWithComponents | ( | float | primaryRadius = 1.0, |
| float | secondaryRadius = 0.10000000149011612, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
creates torus with empty sectors main application - testing Components
| Mesh mrmeshpy.makeTorusWithSelfIntersections | ( | float | primaryRadius = 1.0, |
| float | secondaryRadius = 0.10000000149011612, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
creates torus with empty sectors main application - testing Components
| Mesh mrmeshpy.makeTorusWithSpikes | ( | float | primaryRadius = 1.0, |
| float | secondaryRadiusInner = 0.10000000149011612, | ||
| float | secondaryRadiusOuter = 0.5, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
creates torus with some handed-up points main application - testing fixSpikes and Relax
| Mesh mrmeshpy.makeTorusWithUndercut | ( | float | primaryRadius = 1.0, |
| float | secondaryRadiusInner = 0.10000000149011612, | ||
| float | secondaryRadiusOuter = 0.20000000298023224, | ||
| int | primaryResolution = 16, | ||
| int | secondaryResolution = 16, | ||
| std_vector_Vector3_float | points = None ) |
creates torus with inner protruding half as undercut main application - testing fixUndercuts
| PointCloud mrmeshpy.makeUniformSampledCloud | ( | PointCloud | pointCloud, |
| UniformSamplingSettings | settings ) |
Composes new point cloud consisting of uniform samples of original point cloud; returns std::nullopt if it was terminated by the callback
| VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
| AllLocalTriangulations | triangs, | ||
| func_bool_from_float | progress = '{}', | ||
| OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by averaging neighbor triangle normals weighted by triangle's angle \\triangs triangulation neighbours of each point \\param orient OrientNormals::Smart here means orientation from normals of neigbour triangles \\return nullopt if progress returned false
| VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
| Buffer_VertId | closeVerts, | ||
| int | numNei, | ||
| func_bool_from_float | progress = '{}', | ||
| OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours \\param closeVerts a buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei) \\param orient OrientNormals::Smart here means orientation from best fit plane \\return nullopt if progress returned false
| VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
| float | radius, | ||
| func_bool_from_float | progress = '{}', | ||
| OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours \\param radius of neighborhood to consider \\param orient OrientNormals::Smart here means orientation from best fit plane \\return nullopt if progress returned false
| Mesh mrmeshpy.makeUVSphere | ( | float | radius = 1.0, |
| int | horisontalResolution = 16, | ||
| int | verticalResolution = 16 ) |
creates a mesh of sphere with regular triangulation (parallels and meridians)
| EdgeId mrmeshpy.mapEdge | ( | MapOrHashMap_UndirectedEdgeId_EdgeId | m, |
| EdgeId | src ) |
given input edge (src), converts its id using given map
| UndirectedEdgeId mrmeshpy.mapEdge | ( | MapOrHashMap_UndirectedEdgeId_EdgeId | m, |
| UndirectedEdgeId | src ) |
given input edge (src), converts its id using given map
| EdgeId mrmeshpy.mapEdge | ( | phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag | map, |
| EdgeId | src ) |
given input edge (src), converts its id using given map
| UndirectedEdgeId mrmeshpy.mapEdge | ( | phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag | map, |
| UndirectedEdgeId | src ) |
given input edge (src), converts its id using given map
| UndirectedEdgeId mrmeshpy.mapEdge | ( | UndirectedEdgeBMap | map, |
| UndirectedEdgeId | src ) |
given input edge (src), converts its id using given map
| EdgeId mrmeshpy.mapEdge | ( | WholeEdgeMap | map, |
| EdgeId | src ) |
given input edge (src), converts its id using given map
| UndirectedEdgeId mrmeshpy.mapEdge | ( | WholeEdgeMap | map, |
| UndirectedEdgeId | src ) |
given input edge (src), converts its id using given map
| UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag | map, |
| UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
| UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | UndirectedEdgeBMap | map, |
| UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
| UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | WholeEdgeMap | map, |
| UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
| Mesh mrmeshpy.marchingCubes | ( | FunctionVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
makes Mesh from FunctionVolume with given settings using Marching Cubes algorithm
| Mesh mrmeshpy.marchingCubes | ( | SimpleBinaryVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
makes Mesh from SimpleBinaryVolume with given settings using Marching Cubes algorithm
| Mesh mrmeshpy.marchingCubes | ( | SimpleVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
makes Mesh from SimpleVolume with given settings using Marching Cubes algorithm
| Mesh mrmeshpy.marchingCubes | ( | SimpleVolumeMinMax | volume, |
| MarchingCubesParams | params = '{}' ) |
makes Mesh from SimpleVolumeMinMax with given settings using Marching Cubes algorithm
| Mesh mrmeshpy.marchingCubes | ( | VdbVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
makes Mesh from VdbVolume with given settings using Marching Cubes algorithm
| TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | FunctionVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
| TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | SimpleBinaryVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
| TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | SimpleVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
| TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | SimpleVolumeMinMax | volume, |
| MarchingCubesParams | params = '{}' ) |
| TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | VdbVolume | volume, |
| MarchingCubesParams | params = '{}' ) |
| MarkedContour3f mrmeshpy.markedContour | ( | std_vector_Vector3_float | in_ | ) |
\\return marked contour with all points from (in) marked
| MarkedContour3f mrmeshpy.markedFirstLast | ( | std_vector_Vector3_float | in_ | ) |
\\return marked contour with only first and last points from (in) marked
| Mesh mrmeshpy.mcOffsetMesh | ( | MeshPart | mp, |
| float | offset, | ||
| OffsetParameters | params = '{}', | ||
| Vector_VoxelId_FaceId | outMap = None ) |
Offsets mesh by converting it to distance field in voxels (using OpenVDB library if SignDetectionMode::OpenVDB or our implementation otherwise) and back using standard Marching Cubes, as opposed to Dual Marching Cubes in offsetMesh(...)
| Mesh mrmeshpy.mcShellMeshRegion | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| float | offset, | ||
| BaseShellParameters | params, | ||
| Vector_VoxelId_FaceId | outMap = None ) |
Constructs a shell around selected mesh region with the properties that every point on the shall must 1. be located not further than given distance from selected mesh part, 2. be located not closer to not-selected mesh part than to selected mesh part.
| ObjectLines mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectLines | objsLines | ) |
constructs new ObjectLines containing the union of valid data from all input objects
| ObjectMesh mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectMesh | objsMesh | ) |
constructs new ObjectMesh containing the union of valid data from all input objects
| ObjectPoints mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectPoints | objsPoints | ) |
constructs new ObjectPoints containing the union of valid points from all input objects
| Mesh mrmeshpy.mergeMeshes | ( | std_vector_std_shared_ptr_Mesh | meshes | ) |
Merge a list of meshes to one mesh.
| None mrmeshpy.meshDenoiseViaNormals | ( | Mesh | mesh, |
| DenoiseViaNormalsSettings | settings = '{}' ) |
Reduces noise in given mesh, see the article "Mesh Denoising via a Novel Mumford-Shah Framework"
| Mesh mrmeshpy.meshFromVoxelsMask | ( | VdbVolume | volume, |
| VoxelBitSet | mask ) |
\\brief Creates mesh from voxels mask \\param mask in space of whole volume density inside mask is expected to be higher then outside
| func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitAttribute | ( | Mesh | mesh, |
| MeshAttributesToUpdate | params ) |
auto uvCoords = obj_->getUVCoords();
auto texturePerFace = obj_->getTexturePerFace();
MeshAttributesToUpdate meshParams;
if ( !uvCoords.empty() )
meshParams.uvCoords = &uvCoords;
if ( !texturePerFace.empty() )
meshParams.texturePerFace = &texturePerFace;
subs.onEdgeSplit = meshOnEdgeSplitAttribute( *obj_->varMesh(), meshParams );
subdivideMesh( *obj_->varMesh(), subs );
| func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitFaceAttribute | ( | Mesh | mesh, |
| MeshAttributesToUpdate | params ) |
| func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitVertAttribute | ( | Mesh | mesh, |
| MeshAttributesToUpdate | params ) |
| func_bool_from_Id_EdgeTag_Vector3_float mrmeshpy.meshPreCollapseVertAttribute | ( | Mesh | mesh, |
| MeshAttributesToUpdate | params ) |
Please use this callback when you decimate a mesh with associated data with each vertex
recalculate texture coordinates and mesh vertex colors for vertices moved during decimation
usage example
MeshAttributesToUpdate meshParams;
auto uvCoords = obj->getUVCoords();
auto colorMap = obj->getVertsColorMap();
if ( needUpdateUV )
meshParams.uvCoords = &uvCoords;
if ( needUpdateColorMap )
meshParams.colorMap = &colorMap;
auto preCollapse = meshPreCollapseVertAttribute( mesh, meshParams );
decimateMesh( mesh, DecimateSettings{ .preCollapse = preCollapse } );
| SimpleVolumeMinMax mrmeshpy.meshRegionToIndicatorVolume | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| float | offset, | ||
| DistanceVolumeParams | params ) |
returns a volume filled with the values: v < 0: this point is within offset distance to region-part of mesh and it is closer to region-part than to not-region-part
| std_array_VoxelsVolumeMinMax_Vector_float_Id_VoxelTag_3 mrmeshpy.meshToDirectionVolume | ( | MeshToDirectionVolumeParams | params | ) |
Converts mesh into 4d voxels, so that each cell in 3d space holds the direction from the closest point on mesh to the cell position. Resulting volume is encoded by 3 separate 3d volumes, corresponding to `x`, `y` and `z` components of vectors respectively. \\param params Expected to have valid (not null) projector, with invoked method \\ref IPointsToMeshProjector::updateMeshData
| FloatGrid mrmeshpy.meshToDistanceField | ( | MeshPart | mp, |
| AffineXf3f | xf, | ||
| Vector3f | voxelSize, | ||
| float | surfaceOffset = 3, | ||
| func_bool_from_float | cb = '{}' ) |
does not require closed surface, resulting grid cannot be used for boolean operations, surfaceOffset - the number of voxels around surface to calculate distance in (should be positive) returns null if was canceled by progress callback
| FunctionVolume mrmeshpy.meshToDistanceFunctionVolume | ( | MeshPart | mp, |
| MeshToDistanceVolumeParams | params = '{}' ) |
makes FunctionVolume representing (signed or unsigned) distances from Mesh with given settings
| VdbVolume mrmeshpy.meshToDistanceVdbVolume | ( | MeshPart | mp, |
| MeshToVolumeParams | params = '{}' ) |
converts mesh (or its part) into a volume filled with signed or unsigned distances to mesh using OpenVDB library; for signed distances the mesh must be closed; *params.outXf is untouched
| SimpleVolumeMinMax mrmeshpy.meshToDistanceVolume | ( | MeshPart | mp, |
| MeshToDistanceVolumeParams | params = '{}' ) |
makes SimpleVolume filled with (signed or unsigned) distances from Mesh with given settings
| FloatGrid mrmeshpy.meshToLevelSet | ( | MeshPart | mp, |
| AffineXf3f | xf, | ||
| Vector3f | voxelSize, | ||
| float | surfaceOffset = 3, | ||
| func_bool_from_float | cb = '{}' ) |
closed surface is required surfaceOffset - number voxels around surface to calculate distance in (should be positive) returns null if was canceled by progress callback
| PointCloud mrmeshpy.meshToPointCloud | ( | Mesh | mesh, |
| bool | saveNormals = True, | ||
| VertBitSet | verts = None ) |
Mesh to PointCloud
| VdbVolume mrmeshpy.meshToVolume | ( | MeshPart | mp, |
| MeshToVolumeParams | params = '{}' ) |
converts mesh (or its part) into a volume filled with signed or unsigned distances to mesh using OpenVDB library; for signed distances the mesh must be closed; prior to conversion, world space is shifted to ensure that the bounding box of offset mesh is in positive quarter-space, and the shift is written in *params.outXf
| VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
| AffineXf3f | meshXf, | ||
| FunctionVolume | volume, | ||
| AffineXf3f | volumeXf, | ||
| MoveMeshToVoxelMaxDerivSettings | settings, | ||
| func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. @return Vertices that were moved by the algorithm
| VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
| AffineXf3f | meshXf, | ||
| SimpleVolumeMinMax | volume, | ||
| AffineXf3f | volumeXf, | ||
| MoveMeshToVoxelMaxDerivSettings | settings, | ||
| func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. @return Vertices that were moved by the algorithm
| VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
| AffineXf3f | meshXf, | ||
| VdbVolume | volume, | ||
| AffineXf3f | volumeXf, | ||
| MoveMeshToVoxelMaxDerivSettings | settings, | ||
| func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. @return Vertices that were moved by the algorithm
| std_vector_ObjVertId mrmeshpy.multiModelGridSampling | ( | Vector_ModelPointsData_ObjId | models, |
| float | voxelSize, | ||
| func_bool_from_float | cb = '{}' ) |
performs sampling of several models respecting their world transformations subdivides models bounding box on voxels of approximately given size and returns at most one point per voxel; returns std::nullopt if it was terminated by the callback
| None mrmeshpy.multiRayMeshIntersect | ( | MeshPart | meshPart, |
| std_vector_Vector3_float | origins, | ||
| std_vector_Vector3_float | dirs, | ||
| MultiRayMeshIntersectResult | result, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 3.4028234663852886e+38, | ||
| bool | closestIntersect = True, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds intersections between a mesh and multiple rays in parallel (in float-precision). \\p rayStart and \\p rayEnd define the interval on all rays to detect an intersection. \\p vadidFaces if given then all faces for which false is returned will be skipped
| Vector3f mrmeshpy.normal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
computes triangular face normal from its vertices
| Vector3f mrmeshpy.normal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshTriPoint | p ) |
computes normal in three vertices of p's triangle, then interpolates them using barycentric coordinates and normalizes again; this is the same normal as in rendering with smooth shading
| Vector3f mrmeshpy.normal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v ) |
computes normal in a vertex using sum of directed areas of neighboring triangles
| bool mrmeshpy.objectHasSelectableChildren | ( | Object | object, |
| bool | recurse = False ) |
returns whether the object has selectable children \\param recurse - if true, look up for selectable children at any depth
| None mrmeshpy.objectSave | ( | Object | object, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
save a scene object to a given file if the file format is scene-capable, saves all the object's entities otherwise, saves only merged entities of the corresponding type (mesh, polyline, point cloud, etc.)
| std_vector_std_vector_Vector2_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector2_float | contours, |
| float | offset, | ||
| OffsetContoursParams | params = '{}' ) |
offsets 2d contours in plane
| std_vector_std_vector_Vector2_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector2_float | contours, |
| func_float_from_int_int | offset, | ||
| OffsetContoursParams | params = '{}' ) |
offsets 2d contours in plane
| std_vector_std_vector_Vector3_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector3_float | contours, |
| float | offset, | ||
| OffsetContoursParams | params = '{}', | ||
| OffsetContoursRestoreZParams | zParmas = '{}' ) |
offsets 3d contours in XY plane
| std_vector_std_vector_Vector3_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector3_float | contours, |
| func_float_from_int_int | offset, | ||
| OffsetContoursParams | params = '{}', | ||
| OffsetContoursRestoreZParams | zParmas = '{}' ) |
offsets 3d contours in XY plane
| Mesh mrmeshpy.offsetMesh | ( | MeshPart | mp, |
| float | offset, | ||
| OffsetParameters | params = '{}' ) |
Offsets mesh by converting it to distance field in voxels using OpenVDB library, signDetectionMode = Unsigned(from OpenVDB) | OpenVDB | HoleWindingRule, and then converts back using OpenVDB library (dual marching cubes), so result mesh is always closed
| Mesh mrmeshpy.offsetOneDirection | ( | MeshPart | mp, |
| float | offset, | ||
| GeneralOffsetParameters | params = '{}' ) |
offsets given MeshPart in one direction only (positive or negative) if your input mesh is open then please specify params.signDetectionMode = SignDetectionMode::Unsigned if your input mesh is closed this function is equivalent to `generalOffsetMesh`, but in SignDetectionMode::Unsigned mode it will only keep one side (just like for open mesh) unlike `thickenMesh` this functions does not keep original mesh in result
| Mesh mrmeshpy.offsetPolyline | ( | Polyline3 | polyline, |
| float | offset, | ||
| OffsetParameters | params = '{}' ) |
Offsets polyline by converting it to voxels and building iso-surface do offset in all directions so result mesh is always closed params.signDetectionMode is ignored (always assumed SignDetectionMode::Unsigned)
| std_vector_std_vector_Vector3_float mrmeshpy.offsetSurfaceLine | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| float | offset ) |
<summary> Returns contours in \\p mesh space that are offset from \\p surfaceLine on \\p offset amount in all directions </summary> <param name="mesh">mesh to perform offset on</param> <param name="surfaceLine">surface line to perofrm offset from</param> <param name="offset">amount of offset, note that absolute value is used</param> <returns>resulting offset contours or error if something goes wrong</returns>
| std_vector_std_vector_Vector3_float mrmeshpy.offsetSurfaceLine | ( | Mesh | mesh, |
| std_vector_MeshTriPoint | surfaceLine, | ||
| func_float_from_int | offsetAtPoint ) |
<summary> Returns contours in \\p mesh space that are offset from \\p surfaceLine on \\p offsetAtPoint amount in all directions </summary> <param name="mesh">mesh to perform offset on</param> <param name="surfaceLine">surface line to perofrm offset from</param> <param name="offsetAtPoint">function that can return different amount of offset in different point (argument is index of point in \\p surfaceLine), note that absolute value is used</param> <returns>resulting offset contours or error if something goes wrong</returns>
| bool mrmeshpy.offsetVerts | ( | Mesh | mesh, |
| func_float_from_Id_VertTag | offset, | ||
| func_bool_from_float | cb = '{}' ) |
Modifies \\p mesh shifting each vertex along its pseudonormal by the corresponding \\p offset @return false if cancelled.
| bool mrmeshpy.OpenDocument | ( | os.PathLike | str | bytes | path | ) |
Opens given file (or directory) in associated application
| None mrmeshpy.OpenLink | ( | str | url | ) |
Opens given link in default browser
| bool mrmeshpy.operator | ( | VertDistance | a, |
| VertDistance | b ) |
smaller distance to be the first
| std_vector_std_vector_VarEdgeTri mrmeshpy.orderIntersectionContours | ( | MeshTopology | topologyA, |
| MeshTopology | topologyB, | ||
| std_vector_VarEdgeTri | intersections ) |
Combines unordered input intersections (and flips orientation of intersected edges from mesh B) into ordered oriented contours with the properties: 1. Each contour is a. either closed (then its first and last elements are equal), b. or open (then its first and last intersected edges are boundary edges). 2. Next intersection in a contour is located to the left of the current intersected edge: a. if the current and next intersected triangles are the same, then next intersected edge is either next( curr.edge ) or prev( curr.edge.sym() ).sym(), b. otherwise next intersected triangle is left( curr.edge ) and next intersected edge is one of the edges having the current intersected triangle to the right. 3. Orientation of intersected edges in each pair of (intersected edge, intersected triangle): a. the intersected edge of mesh A is directed from negative half-space of the intersected triangle from mesh B to its positive half-space, b. the intersected edge of mesh B is directed from positive half-space of the intersected triangle from mesh A to its negative half-space. 4. Orientation of contours: a. left of contours on mesh A is inside of mesh B (consequence of 3a), b. right of contours on mesh B is inside of mesh A (consequence of 3b).
| std_vector_std_vector_VarEdgeTri mrmeshpy.orderSelfIntersectionContours | ( | MeshTopology | topology, |
| std_vector_EdgeTri | intersections ) |
Combines unordered input self-intersections (and flips orientation of some intersected edges) into ordered oriented contours with the properties: 1. Each contour is a. either closed (then its first and last elements are equal), b. or open if terminal intersection is on mesh boundary or if self-intersection terminates in a vertex. 2. Next intersection in a contour is located to the left of the current intersected edge: a. if the current and next intersected triangles are the same, then next intersected edge is either next( curr.edge ) or prev( curr.edge.sym() ).sym(), b. otherwise next intersected triangle is left( curr.edge ) and next intersected edge is one of the edges having the current intersected triangle to the right. 3. Orientation of intersected edges in each pair of (intersected edge, intersected triangle): a. isEdgeATriB() = true: the intersected edge is directed from negative half-space of the intersected triangle to its positive half-space, b. isEdgeATriB() = false: the intersected edge is directed from positive half-space of the intersected triangle to its negative half-space. 4. Contours [2*i] and [2*i+1] a. have equal lengths and pass via the same intersections but in opposite order, b. each intersection is present in two contours with different values of isEdgeATriB() flag, and opposite directions of the intersected edge. 5. Orientation of contours: a. first element of even (0,2,...) contours has isEdgeATriB() = true, left of even contours goes inside (consequence of 3a), b. first element of odd (1,3,...) contours has isEdgeATriB() = false, right of odd contours goes inside (consequence of 3b).
| Vector3f mrmeshpy.orgPnt | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e ) |
returns coordinates of the edge origin
| IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing | ( | MeshTopology | topology, |
| EdgeId | edge ) |
to iterate over all edges with same origin vertex as firstEdge (INCLUDING firstEdge) for ( Edge e : orgRing( topology, firstEdge ) ) ...
| IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing | ( | MeshTopology | topology, |
| VertId | v ) |
| IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing0 | ( | MeshTopology | topology, |
| EdgeId | edge ) |
to iterate over all edges with same origin vertex as firstEdge (EXCLUDING firstEdge) for ( Edge e : orgRing0( topology, firstEdge ) ) ...
| bool mrmeshpy.orient3d | ( | PreciseVertCoords | vs | ) |
| bool mrmeshpy.orient3d | ( | std_array_PreciseVertCoords_4 | vs | ) |
first sorts the indices in ascending order, then calls the predicate for sorted points
returns true if the plane with orientated triangle ABC has 0 point at the left; uses simulation-of-simplicity to avoid "0 is exactly on plane"
returns true if the plane with orientated triangle ABC has D point at the left; uses simulation-of-simplicity to avoid "D is exactly on plane"
| None mrmeshpy.orientLocalTriangulations | ( | AllLocalTriangulations | triangs, |
| VertCoords | coords, | ||
| VertBitSet | region, | ||
| func_Vector3_float_from_Id_VertTag | targetDir ) |
| None mrmeshpy.orientLocalTriangulations | ( | AllLocalTriangulations | triangs, |
| VertCoords | coords, | ||
| VertBitSet | region, | ||
| VertCoords | targetDir ) |
orient neighbors around each point in \\param region so they will be in clockwise order if look from the tip of target direction
| bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
| VertCoords | normals, | ||
| AllLocalTriangulations | triangs, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param radius of neighborhood to consider \\return false if progress returned false Unlike simple orientNormals this method constructs local triangulations around each point (with most neighbours within given radius and all neighbours within 2*radius) and considers all triangulation neighbors and not other points from the ball around each point.
| bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
| VertCoords | normals, | ||
| Buffer_VertId | closeVerts, | ||
| int | numNei, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param closeVerts a buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei) \\return false if progress returned false
| bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
| VertCoords | normals, | ||
| float | radius, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param radius of neighborhood to consider \\return false if progress returned false
considers 3D points obtained from 2D inputs by moving each point on paraboloid: z = x*x+y*y; returns true if the plane with orientated triangle ABC has D point at the left; uses simulation-of-simplicity to avoid "D is exactly on plane"
| ObjectPoints mrmeshpy.pack | ( | ObjectPoints | pts, |
| Reorder | reorder, | ||
| VertBitSet | newValidVerts = None, | ||
| func_bool_from_float | cb = '{}' ) |
constructs new ObjectPoints containing the packed version of input points, \\param newValidVerts if given, then use them instead of valid points from pts \\return nullptr if the operation was cancelled
| None mrmeshpy.parseFirstNum | ( | str | str, |
| int_output | num ) |
reads the first integer number in the line
| None mrmeshpy.parsePolygon | ( | str | str, |
| VertId | vertId, | ||
| int_output | numPoints ) |
reads the polygon points and optional number of polygon points example N vertex0 vertex1 ... vertexN
| Mesh mrmeshpy.partialOffsetMesh | ( | MeshPart | mp, |
| float | offset, | ||
| GeneralOffsetParameters | params = '{}' ) |
Offsets mesh part by converting it to voxels and back and unite it with original mesh (via boolean) note: only OffsetParameters.signDetectionMode = SignDetectionMode::Unsigned will work in this function
| None mrmeshpy.planeMeshIntersect | ( | MeshPart | meshPart, |
| Plane3f | plane, | ||
| FaceBitSet | fs, | ||
| UndirectedEdgeBitSet | ues, | ||
| VertBitSet | vs, | ||
| std_vector_Id_FaceTag | fsVec = None ) |
given mesh part and arbitrary plane, outputs \\param fs triangles from boxes crossed or touched by the plane \\param ues edges of these triangles \\param vs vertices of these triangles \\param fsVec triangles from boxes crossed or touched by the plane in unspecified order
| std_vector_std_vector_Vector2_float mrmeshpy.planeSectionsToContours2f | ( | Mesh | mesh, |
| std_vector_std_vector_EdgePoint | sections, | ||
| AffineXf3f | meshToPlane ) |
| std_vector_Vector2_float mrmeshpy.planeSectionToContour2f | ( | Mesh | mesh, |
| std_vector_EdgePoint | section, | ||
| AffineXf3f | meshToPlane ) |
converts PlaneSections in 2D contours by computing coordinate of each point, applying given xf to it, and retaining only x and y
| VertBitSet mrmeshpy.pointGridSampling | ( | PointCloudPart | pcp, |
| float | voxelSize, | ||
| func_bool_from_float | cb = '{}' ) |
performs sampling of cloud points; subdivides point cloud bounding box on voxels of approximately given size and returns at most one point per voxel; returns std::nullopt if it was terminated by the callback
| VertBitSet mrmeshpy.pointIterativeSampling | ( | PointCloud | cloud, |
| int | numSamples, | ||
| func_bool_from_float | cb = '{}' ) |
performs sampling of cloud points by iteratively removing one point with minimal metric (describing distance to the closest point and previous nearby removals), thus allowing stopping at any given number of samples; returns std::nullopt if it was terminated by the callback
| std_variant_std_monostate_MeshTriPoint_EdgePoint_Id_VertTag mrmeshpy.pointOnObjectToPickedPoint | ( | VisualObject | object, |
| PointOnObject | pos ) |
Converts PointOnObject coordinates depending on the object type to the PickedPoint variant
| FunctionVolume mrmeshpy.pointsToDistanceFunctionVolume | ( | PointCloud | cloud, |
| PointsToDistanceVolumeParams | params ) |
makes FunctionVolume representing signed distances to points with normals
| SimpleVolume mrmeshpy.pointsToDistanceVolume | ( | PointCloud | cloud, |
| PointsToDistanceVolumeParams | params ) |
makes SimpleVolume filled with signed distances to points with normals
| Mesh mrmeshpy.pointsToMeshFusion | ( | PointCloud | cloud, |
| PointsToMeshParameters | params ) |
makes mesh from points with normals by constructing intermediate volume with signed distances and then using marching cubes algorithm to extract the surface from there
| VertBitSet mrmeshpy.pointUniformSampling | ( | PointCloud | pointCloud, |
| UniformSamplingSettings | settings ) |
Sample vertices, removing ones that are too close; returns std::nullopt if it was terminated by the callback
constructs an offset contour for given polyline
| FloatGrid mrmeshpy.polylineToDistanceField | ( | Polyline3 | polyline, |
| PolylineToDistanceVolumeParams | params ) |
convert polyline to voxels distance field
| FunctionVolume mrmeshpy.polylineToFunctionVolume | ( | Polyline3 | polyline, |
| PolylineToVolumeParams | params ) |
convert polyline to function volume
| SimpleVolume mrmeshpy.polylineToSimpleVolume | ( | Polyline3 | polyline, |
| PolylineToVolumeParams | params ) |
convert polyline to simple volume
| VdbVolume mrmeshpy.polylineToVdbVolume | ( | Polyline3 | polyline, |
| PolylineToDistanceVolumeParams | params ) |
convert polyline to VDB volume
| None mrmeshpy.positionVertsSmoothly | ( | Mesh | mesh, |
| VertBitSet | verts, | ||
| EdgeWeights | edgeWeights = 'EdgeWeights::Cotan', | ||
| VertexMass | vmass = 'VertexMass::Unit', | ||
| VertBitSet | fixedSharpVertices = None ) |
Puts given vertices in such positions to make smooth surface both inside verts-region and on its boundary; \\param verts must not include all vertices of a mesh connected component \\param fixedSharpVertices in these vertices the surface can be not-smooth
| None mrmeshpy.positionVertsSmoothly | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertBitSet | verts, | ||
| EdgeWeights | edgeWeights = 'EdgeWeights::Cotan', | ||
| VertexMass | vmass = 'VertexMass::Unit', | ||
| VertBitSet | fixedSharpVertices = None ) |
| None mrmeshpy.positionVertsSmoothlySharpBd | ( | Mesh | mesh, |
| PositionVertsSmoothlyParams | params ) |
Puts given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary;
| None mrmeshpy.positionVertsSmoothlySharpBd | ( | Mesh | mesh, |
| VertBitSet | verts ) |
| None mrmeshpy.positionVertsSmoothlySharpBd | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| PositionVertsSmoothlyParams | params ) |
| None mrmeshpy.positionVertsWithSpacing | ( | Mesh | mesh, |
| SpacingSettings | settings ) |
Moves given vertices to make the distances between them as specified
| None mrmeshpy.positionVertsWithSpacing | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| SpacingSettings | settings ) |
| None mrmeshpy.printCurrentTimerBranch | ( | ) |
prints current timer branch
| None mrmeshpy.printStacktraceOnCrash | ( | ) |
Print stacktrace on application crash
| None mrmeshpy.printTimingTree | ( | float | minTimeSec = 0.1 | ) |
prints the current timing tree \\param minTimeSec omit printing records with time spent less than given value in seconds
| None mrmeshpy.printTimingTreeAtEnd | ( | bool | on, |
| float | minTimeSec = 0.1 ) |
enables or disables printing of timing tree when application terminates \\param minTimeSec omit printing records with time spent less than given value in seconds
| None mrmeshpy.processCloseTriangles | ( | MeshPart | mp, |
| std_array_Vector3_float_3 | t, | ||
| float | rangeSq, | ||
| func_ProcessOneResult_from_Vector3_float_Id_FaceTag_Vector3_float_float | call ) |
invokes given callback for all triangles from given mesh part located not further than given squared distance from t-triangle
| float mrmeshpy.projArea | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| Vector3f | dir, | ||
| FaceBitSet | fs = None ) |
computes the sum of absolute projected area of faces from given region as visible if look from given direction
computes the sum of absolute projected area of faces from given region (or whole mesh) as visible if look from given direction
| VertScalars mrmeshpy.projectAllMeshVertices | ( | Mesh | refMesh, |
| Mesh | mesh, | ||
| AffineXf3f | refXf = None, | ||
| AffineXf3f | xf = None, | ||
| float | upDistLimitSq = 3.4028234663852886e+38, | ||
| float | loDistLimitSq = 0.0 ) |
Computes signed distances from all mesh points to refMesh. `refMesh` - all points will me projected to this mesh `mesh` - this mesh points will be projected `refXf` - world transform for refMesh `upDistLimitSq` - upper limit on the distance in question, if the real distance is larger than the returning upDistLimit `loDistLimitSq` - low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
| None mrmeshpy.projectOnAll | ( | Vector3f | pt, |
| AABBTreeObjects | tree, | ||
| float | upDistLimitSq, | ||
| func_void_from_Id_ObjTag_MeshOrPoints_ProjectionResult | callback, | ||
| ObjId | skipObjId = '{}' ) |
finds closest point on every object within given distance
| MeshOrPoints.ProjectionResult mrmeshpy.projectWorldPointOntoObject | ( | Vector3f | p, |
| Object | obj ) |
Projects a point onto an object, in world space. Returns `.valid() == false` if this object type isn't projectable onto.
| MeshOrPoints.ProjectionResult mrmeshpy.projectWorldPointOntoObjectsRecursive | ( | Vector3f | p, |
| Object | root = None, | ||
| func_bool_from_Object | projectPred = None, | ||
| func_bool_from_Object | recursePred = None ) |
Recursively visits the objects and projects the point on each one. Returns the closest projection. If `root` is null, the scene root is used. Not passing `SceneRoot::get()` directly to avoid including that header. If `projectPred` is specified and false, will not project onto this object. If `recursePred` is specified and false, will not visit the children of this object.
| Vector3f mrmeshpy.pseudonormal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshTriPoint | p, | ||
| FaceBitSet | region = None ) |
returns pseudonormal in corresponding face/edge/vertex for signed distance calculation as suggested in the article "Signed Distance Computation Using the Angle Weighted Pseudonormal" by J. Andreas Baerentzen and Henrik Aanaes, https://backend.orbit.dtu.dk/ws/portalfiles/portal/3977815/B_rentzen.pdf unlike normal( const MeshTriPoint & p ), this is not a smooth function
| Vector3f mrmeshpy.pseudonormal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| UndirectedEdgeId | e, | ||
| FaceBitSet | region = None ) |
computes normalized half sum of face normals sharing given edge (only (region) faces will be considered);
| Vector3f mrmeshpy.pseudonormal | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v, | ||
| FaceBitSet | region = None ) |
computes angle-weighted sum of normals of incident faces of given vertex (only (region) faces will be considered); the sum is normalized before returning
| None mrmeshpy.putScanFileNameInZ | ( | std_vector_std_filesystem_path | scans, |
| std_vector_SliceInfo | zOrder ) |
Read layer heights from given scan file names
| QuadraticForm3f mrmeshpy.quadraticForm | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v, | ||
| bool | angleWeigted, | ||
| FaceBitSet | region = None, | ||
| UndirectedEdgeBitSet | creases = None ) |
computes quadratic form in the vertex as the sum of squared distances from 1) planes of adjacent triangles, with the weight equal to the angle of adjacent triangle at this vertex divided on PI in case of angleWeigted=true; 2) lines of adjacent boundary and crease edges
| MeshIntersectionResult mrmeshpy.rayInsideIntersect | ( | Mesh | mesh, |
| MeshPoint | m, | ||
| float | rayEnd = 3.4028234663852886e+38 ) |
returns the nearest intersection between the mesh and the ray from given point along minus normal (inside the mesh)
| MeshIntersectionResult mrmeshpy.rayInsideIntersect | ( | Mesh | mesh, |
| VertId | v, | ||
| float | rayEnd = 3.4028234663852886e+38 ) |
| MeshIntersectionResult mrmeshpy.rayMeshIntersect | ( | MeshPart | meshPart, |
| Line3d | line, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 1.7976931348623157e+308, | ||
| IntersectionPrecomputes_double | prec = None, | ||
| bool | closestIntersect = True, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds ray and mesh intersection in double-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). \\p vadidFaces if given then all faces for which false is returned will be skipped Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if \\p !closestIntersect.
| MeshIntersectionResult mrmeshpy.rayMeshIntersect | ( | MeshPart | meshPart, |
| Line3f | line, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 3.4028234663852886e+38, | ||
| IntersectionPrecomputes_float | prec = None, | ||
| bool | closestIntersect = True, | ||
| func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds ray and mesh intersection in float-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). \\p vadidFaces if given then all faces for which false is returned will be skipped Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if \\p !closestIntersect.
| None mrmeshpy.rayMeshIntersectAll | ( | MeshPart | meshPart, |
| Line3d | line, | ||
| func_bool_from_MeshIntersectionResult | callback, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 1.7976931348623157e+308, | ||
| IntersectionPrecomputes_double | prec = None ) |
Same as \\ref rayMeshIntersectAllF, but use double precision
| None mrmeshpy.rayMeshIntersectAll | ( | MeshPart | meshPart, |
| Line3f | line, | ||
| func_bool_from_MeshIntersectionResult | callback, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 3.4028234663852886e+38, | ||
| IntersectionPrecomputes_float | prec = None ) |
Intersects ray with mesh. Finds all intersections \\anchor rayMeshIntersectAllF
| MultiMeshIntersectionResult mrmeshpy.rayMultiMeshAnyIntersect | ( | std_vector_Line3Mesh_double | lineMeshes, |
| float | rayStart = 0.0, | ||
| float | rayEnd = 1.7976931348623157e+308 ) |
Same as \\ref rayMultiMeshAnyIntersectF, but use double precision
| MultiMeshIntersectionResult mrmeshpy.rayMultiMeshAnyIntersect | ( | std_vector_Line3Mesh_float | lineMeshes, |
| float | rayStart = 0.0, | ||
| float | rayEnd = 3.4028234663852886e+38 ) |
Intersects ray with many meshes. Finds any intersection (not the closest) \\anchor rayMultiMeshAnyIntersectF
| PolylineIntersectionResult2 mrmeshpy.rayPolylineIntersect | ( | Polyline2 | polyline, |
| Line2d | line, | ||
| float | rayStart = 0, | ||
| float | rayEnd = 1.7976931348623157e+308, | ||
| IntersectionPrecomputes2_double | prec = None, | ||
| bool | closestIntersect = True ) |
Finds ray and polyline intersection in double-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if \\p !closestIntersect.
| PolylineIntersectionResult2 mrmeshpy.rayPolylineIntersect | ( | Polyline2 | polyline, |
| Line2f | line, | ||
| float | rayStart = 0, | ||
| float | rayEnd = 3.4028234663852886e+38, | ||
| IntersectionPrecomputes2_float | prec = None, | ||
| bool | closestIntersect = True ) |
Finds ray and polyline intersection in float-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if \\p !closestIntersect.
| None mrmeshpy.rayPolylineIntersectAll | ( | Polyline2 | polyline, |
| Line2d | line, | ||
| func_Processing_from_EdgePoint_double_double_double | callback, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 1.7976931348623157e+308, | ||
| IntersectionPrecomputes2_double | prec = None ) |
Intersects 2D ray and polyline in double-precision. Reports all intersections via given callback with the tendency to do it from ray start to ray end, but without guarantee of exact order.
| None mrmeshpy.rayPolylineIntersectAll | ( | Polyline2 | polyline, |
| Line2f | line, | ||
| func_Processing_from_EdgePoint_float_float_float | callback, | ||
| float | rayStart = 0.0, | ||
| float | rayEnd = 3.4028234663852886e+38, | ||
| IntersectionPrecomputes2_float | prec = None ) |
Intersects 2D ray and polyline in single-precision. Reports all intersections via given callback with the tendency to do it from ray start to ray end, but without guarantee of exact order.
| TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3d | oriA, |
| Vector3d | oriB, | ||
| Vector3d | oriC, | ||
| IntersectionPrecomputes_double | prec ) |
| TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3d | oriA, |
| Vector3d | oriB, | ||
| Vector3d | oriC, | ||
| Vector3d | dir ) |
| TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3f | oriA, |
| Vector3f | oriB, | ||
| Vector3f | oriC, | ||
| IntersectionPrecomputes_float | prec ) |
| TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3f | oriA, |
| Vector3f | oriB, | ||
| Vector3f | oriC, | ||
| Vector3f | dir ) |
| TriIntersectResult mrmeshpy.rayTriangleIntersect_ | ( | Vector3d | oriA, |
| Vector3d | oriB, | ||
| Vector3d | oriC, | ||
| IntersectionPrecomputes_double | prec ) |
| TriIntersectResult mrmeshpy.rayTriangleIntersect_ | ( | Vector3f | oriA, |
| Vector3f | oriB, | ||
| Vector3f | oriC, | ||
| IntersectionPrecomputes_float | prec ) |
| bool mrmeshpy.readByBlocks | ( | typing.Any | in_, |
| char_output | data, | ||
| int | dataSize, | ||
| func_bool_from_float | callback = '{}', | ||
| int | blockSize = 65536 ) |
\\brief read dataSize bytes from in stream to data by blocks blockSize bytes \\details if progress callback is not set, read all data by one block \\return false if process was canceled (callback is set and return false )
| None mrmeshpy.readRawTiff | ( | os.PathLike | str | bytes | path, |
| RawTiffOutput | output ) |
load values from tiff to ouput.data
| TiffParameters mrmeshpy.readTiffParameters | ( | os.PathLike | str | bytes | path | ) |
reads parameters of tiff file
| Mesh mrmeshpy.rebuildMesh | ( | MeshPart | mp, |
| RebuildMeshSettings | settings ) |
fixes all types of issues in input mesh (degenerations, holes, self-intersections, etc.) by first converting mesh in voxel representation, and then backward
| int mrmeshpy.reducePath | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| std_vector_EdgePoint | path, | ||
| MeshTriPoint | end, | ||
| int | maxIter = 5 ) |
converts any input surface path into geodesic path (so reduces its length): start-path-end; returns actual number of iterations performed
| bool mrmeshpy.reducePathViaVertex | ( | Mesh | mesh, |
| MeshTriPoint | start, | ||
| VertId | v, | ||
| MeshTriPoint | end, | ||
| std_vector_EdgePoint | outPath, | ||
| std_vector_Vector2_float | tmp, | ||
| std_vector_EdgePoint | cachePath ) |
given path s-v-e, tries to decrease its length by moving away from v \\param outPath intermediate locations between s and e will be added here \\param tmp elements will be temporary allocated here \\param cachePath as far as we need two sides unfold, cache one to reduce allocations
| AffineXf3f mrmeshpy.refineFeatureObject | ( | FeatureObject | featObj, |
| Mesh | mesh, | ||
| RefineParameters | params = '{}' ) |
Recalculate the feature object's position so it would better fit with the given mesh
| AffineXf3f mrmeshpy.refineFeatureObject | ( | FeatureObject | featObj, |
| PointCloud | pointCloud, | ||
| RefineParameters | params = '{}' ) |
Recalculate the feature object's position so it would better fit with the given point cloud
| bool mrmeshpy.relax | ( | Mesh | mesh, |
| MeshRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) \\return true if was finished successfully, false if was interrupted by progress callback
| bool mrmeshpy.relax | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
| bool mrmeshpy.relax | ( | PointCloud | pointCloud, |
| PointCloudRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) \\return true if was finished successfully, false if was interrupted by progress callback
| bool mrmeshpy.relaxApprox | ( | Mesh | mesh, |
| MeshApproxRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) approx neighborhoods \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
| bool mrmeshpy.relaxApprox | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshApproxRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
| bool mrmeshpy.relaxApprox | ( | PointCloud | pointCloud, |
| PointCloudApproxRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) approx neighborhoods \\return true if was finished successfully, false if was interrupted by progress callback
| bool mrmeshpy.relaxKeepVolume | ( | Mesh | mesh, |
| MeshRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) \\n do not really keeps volume but tries hard \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
| bool mrmeshpy.relaxKeepVolume | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
| bool mrmeshpy.relaxKeepVolume | ( | PointCloud | pointCloud, |
| PointCloudRelaxParams | params = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) do not really keeps volume but tries hard \\return true if was finished successfully, false if was interrupted by progress callback
| bool mrmeshpy.remesh | ( | Mesh | mesh, |
| RemeshSettings | settings ) |
Splits too long and eliminates too short edges from the mesh
| None mrmeshpy.removeLoneContours | ( | std_vector_std_vector_VarEdgeTri | contours, |
| bool | ignoreOpen = False ) |
Removes contours that fully lay inside one triangle from the contours if `ignoreOpen` then do not consider non-closed contours as lone, even if they really are
| None mrmeshpy.removeLoneDegeneratedContours | ( | MeshTopology | edgesTopology, |
| std_vector_OneMeshContour | faceContours, | ||
| std_vector_OneMeshContour | edgeContours ) |
Removes contours with zero area (do not remove if contour is handle on topology) edgesTopology - topology on which contours are represented with edges faceContours - lone contours represented by faces (all intersections are in same mesh A face) edgeContours - lone contours represented by edges (all intersections are in mesh B edges, edgesTopology: meshB.topology)
| None mrmeshpy.removeSpikes | ( | Mesh | mesh, |
| int | maxIterations, | ||
| float | minSumAngle, | ||
| VertBitSet | region = None ) |
applies at most given number of relaxation iterations the spikes detected by given threshold
| None mrmeshpy.removeSpikes | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| int | maxIterations, | ||
| float | minSumAngle, | ||
| VertBitSet | region = None ) |
| str mrmeshpy.replace | ( | str | target, |
| str | from_, | ||
| str | to ) |
Returns \\param target with all \\param from replaced with \\param to, zero or more times.
| None mrmeshpy.replaceInplace | ( | std_string_output | target, |
| str | from_, | ||
| str | to ) |
Replaces \\param from with \\param to in \\param target (in-place), zero or more times.
| str mrmeshpy.replaceProhibitedChars | ( | str | line, |
| str | replacement = '_' ) |
replace OS prohibited chars ('?', '*', '/', '\\', '"', '<', '>') with `replacement` char
adjusts z-coordinates of (m) vertices to make adjusted (m) similar to (target)
| bool mrmeshpy.reportProgress | ( | func_bool_from_float | cb, |
| float | v ) |
safely invokes \\param cb with given value; just returning true for empty callback
| bool mrmeshpy.reportProgress | ( | func_bool_from_float | cb, |
| float | v, | ||
| int | counter, | ||
| int | divider ) |
safely invokes \\param cb with given value if \\param counter is divisible by \\param divider (preferably a power of 2); just returning true for empty callback
| MarkedContour3f mrmeshpy.resample | ( | MarkedContour3f | in_, |
| float | minStep, | ||
| std_vector_Vector3_float | normals = None ) |
keeps all marked points from input contour and adds/removes other points to have them as many as possible, but at the distance along the input line not shorter than (minStep) from their neighbor points \\param normals optional parameter with the normals of input points that will be resampled to become normals of output points
| FloatGrid mrmeshpy.resampled | ( | FloatGrid | grid, |
| float | voxelScale, | ||
| func_bool_from_float | cb = '{}' ) |
resample this grid to fit voxelScale
| FloatGrid mrmeshpy.resampled | ( | FloatGrid | grid, |
| Vector3f | voxelScale, | ||
| func_bool_from_float | cb = '{}' ) |
resample this grid to fit voxelScale
| bool mrmeshpy.resolveMeshDegenerations | ( | Mesh | mesh, |
| ResolveMeshDegenSettings | settings = '{}' ) |
\\brief Removes degenerate triangles in a mesh by calling decimateMesh function with appropriate settings \\details consider using \\ref fixMeshDegeneracies for more complex cases \\return true if the mesh has been changed \\sa \\ref decimateMesh
| None mrmeshpy.reverse | ( | std_vector_Id_EdgeTag | path | ) |
reverses the order of edges and flips each edge orientation, thus making the opposite directed edge path
| None mrmeshpy.reverse | ( | std_vector_std_vector_Id_EdgeTag | paths | ) |
reverse every path in the vector
| float mrmeshpy.roundToPrecision | ( | float | v, |
| int | precision ) |
returns given value rounded to given number of decimal digits
| bool mrmeshpy.same | ( | MeshTopology | topology, |
| EdgePoint | lhs, | ||
| EdgePoint | rhs ) |
returns true if two edge-points are equal considering different representations
| bool mrmeshpy.same | ( | MeshTopology | topology, |
| MeshTriPoint | lhs, | ||
| MeshTriPoint | rhs ) |
returns true if two points are equal considering different representations
| std_vector_Vector3_float mrmeshpy.sampleHalfSphere | ( | ) |
returns quasi-uniform 145 samples on unit half-sphere z>0
| None mrmeshpy.saveAllSlicesToImage | ( | VdbVolume | vdbVolume, |
| VoxelsSave.SavingSettings | settings ) |
save all slices by the active plane through all voxel planes along the active axis to an image file
| None mrmeshpy.saveDistanceMapToImage | ( | DistanceMap | distMap, |
| os.PathLike | str | bytes | filename, | ||
| float | threshold = 0.003921568859368563 ) |
saves distance map to a grayscale image file
threshold - threshold of maximum values [0.; 1.]. invalid pixel set as 0. (black)
minimum (close): 1.0 (white)
maximum (far): threshold
invalid (infinity): 0.0 (black)
| None mrmeshpy.saveLines | ( | Polyline3 | polyline, |
| os.PathLike | str | bytes | file, | ||
| SaveSettings | settings = '{}' ) |
detects the format from file extension and saves polyline in it
| None mrmeshpy.saveLines | ( | Polyline3 | polyline, |
| str | extension, | ||
| typing.Any | out, | ||
| SaveSettings | settings = '{}' ) |
extension in `*.ext` format
| None mrmeshpy.saveMesh | ( | Mesh | mesh, |
| os.PathLike | str | bytes | file, | ||
| SaveSettings | settings = '{}' ) |
detects the format from file extension and save mesh to it
| None mrmeshpy.saveMesh | ( | Mesh | mesh, |
| str | extension, | ||
| typing.Any | out, | ||
| SaveSettings | settings = '{}' ) |
extension in `*.ext` format
| None mrmeshpy.saveObjectVoxelsToFile | ( | Object | object, |
| os.PathLike | str | bytes | path, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.savePoints | ( | PointCloud | points, |
| os.PathLike | str | bytes | file, | ||
| SaveSettings | settings = '{}' ) |
detects the format from file extension and save points to it
| None mrmeshpy.savePoints | ( | PointCloud | points, |
| str | extension, | ||
| typing.Any | out, | ||
| SaveSettings | settings = '{}' ) |
extension in `*.ext` format
| None mrmeshpy.saveSliceToImage | ( | os.PathLike | str | bytes | path, |
| VdbVolume | vdbVolume, | ||
| SlicePlane | slicePlain, | ||
| int | sliceNumber, | ||
| func_bool_from_float | callback = '{}' ) |
save the slice by the active plane through the sliceNumber to an image file
| None mrmeshpy.saveVoxels | ( | VdbVolume | vdbVolume, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsGav | ( | SimpleVolume | simpleVolume, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsGav | ( | SimpleVolume | simpleVolume, |
| typing.Any | out, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsGav | ( | SimpleVolumeMinMax | simpleVolumeMinMax, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsGav | ( | SimpleVolumeMinMax | simpleVolumeMinMax, |
| typing.Any | out, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsGav | ( | VdbVolume | vdbVolume, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
Save voxels in Gav-format in given destination
| None mrmeshpy.saveVoxelsGav | ( | VdbVolume | vdbVolume, |
| typing.Any | out, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsRaw | ( | SimpleVolume | simpleVolume, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
| None mrmeshpy.saveVoxelsRaw | ( | VdbVolume | vdbVolume, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
Save raw voxels file, writing parameters in file name
| FaceBitSet mrmeshpy.segmentByGraphCut | ( | MeshTopology | topology, |
| FaceBitSet | source, | ||
| FaceBitSet | sink, | ||
| func_float_from_Id_EdgeTag | metric, | ||
| func_bool_from_float | progress = '{}' ) |
\\brief Finds segment that divide mesh on source and sink (source included, sink excluded), by minimizing the sum of metric over the boundary If the computations are terminated by \\p progress, then returns the best approximation found by the moment of termination
| bool mrmeshpy.segmentIntersectionOrder | ( | std_array_PreciseVertCoords2_6 | vs | ) |
given line segment s=01 and two other segments sa=23, sb=45 known to intersect it, finds the order of intersection using precise predicates: true: s[0], s ^ sa, s ^ sb, s[1] false: s[0], s ^ sb, s ^ sa, s[1] segments sa and sb can have at most one shared point, all other points must be unique
| bool mrmeshpy.segmentIntersectionOrder | ( | std_array_PreciseVertCoords_8 | vs | ) |
given line segment s=01 and two triangles ta=234, tb=567 known to intersect it, finds the order of intersection using precise predicates: true: s[0], s ^ ta, s ^ tb, s[1] false: s[0], s ^ tb, s ^ ta, s[1] segments ta and tb can have at most two shared points, all other points must be unique
| Mesh mrmeshpy.segmentVolume | ( | VdbVolume | volume, |
| std_vector_std_pair_Vector3_float_Vector3_float | pairs, | ||
| VolumeSegmentationParameters | params = 'MR::VolumeSegmentationParameters()' ) |
\\brief Simple segment volume \\details 1. Build paths between points pairs \\n 2. Mark paths as inside part seeds \\n 3. Mark volume part edges as outside part seeds \\n 4. Return mesh from segmented inside part
| VoxelBitSet mrmeshpy.segmentVolumeByGraphCut | ( | SimpleVolume | densityVolume, |
| float | k, | ||
| VoxelBitSet | sourceSeeds, | ||
| VoxelBitSet | sinkSeeds, | ||
| func_bool_from_float | cb = '{}' ) |
\\brief Segment voxels of given volume on two sets using graph-cut, returning source set
\\param k - coefficient in the exponent of the metric affecting edge capacity:\\n
increasing k you force to find a higher steps in the density on the boundary, decreasing k you ask for smoother boundary
\\param sourceSeeds - these voxels will be included in the result
\\param sinkSeeds - these voxels will be excluded from the result
\\sa \\ref VolumeSegmenter
| std_vector_Mesh mrmeshpy.segmentVoxelMaskToInstances | ( | VdbVolume | mask, |
| int | minSize = 100, | ||
| func_bool_from_float | cb = '{}' ) |
Given voxel mask, separate it into components using mincut algorithm @param minSize Minimum size of a segment (in voxels)
| None mrmeshpy.SegPoints | ( | Vector3f | VEC, |
| Vector3f | X, | ||
| Vector3f | Y, | ||
| Vector3f | P, | ||
| Vector3f | A, | ||
| Vector3f | Q, | ||
| Vector3f | B ) |
Returns closest points between an segment pair.
performs boolean operation on mesh with itself, cutting simple intersections contours and flipping their connectivity this function is experimental and likely to change signature and/or behavior in future
| std_vector_TypedBitSet_Id_FaceTag mrmeshpy.separateClosedContour | ( | Mesh | mesh, |
| std_vector_Vector3_float | contour, | ||
| func_void_from_EdgePoint | cb = '{}' ) |
Separates mesh into disconnected by contour components (independent components are not returned), faces that are intersected by contour does not belong to any component. Calls callback for each MeshEdgePoint in contour respecting order, ignoring MeshTriPoints (if projection of input point lay inside face)
| None mrmeshpy.serializeMesh | ( | Mesh | mesh, |
| os.PathLike | str | bytes | path, | ||
| FaceBitSet | selection = None, | ||
| str | serializeFormat = '".mrmesh"' ) |
saves mesh with optional selection to mru format; this is very convenient for saving intermediate states during algorithm debugging; ".mrmesh" save mesh format is not space efficient, but guaranties no changes in the topology after loading
| None mrmeshpy.serializeObjectTree | ( | Object | object, |
| os.PathLike | str | bytes | path, | ||
| func_bool_from_float | progress, | ||
| func_void_from_std_filesystem_path | preCompress ) |
\\brief saves object subtree in given scene file (zip/mru) \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder if preCompress is set, it is called before compression saving is controlled with Object::serializeModel_ and Object::serializeFields_
| None mrmeshpy.serializeObjectTree | ( | Object | object, |
| os.PathLike | str | bytes | path, | ||
| func_bool_from_float | progress = '{}' ) |
| None mrmeshpy.serializeObjectTreeToGltf | ( | Object | root, |
| os.PathLike | str | bytes | file, | ||
| func_bool_from_float | callback = '{}' ) |
saves scene to a glTF file
| None mrmeshpy.SetCurrentThreadName | ( | str | name | ) |
sets debug name for the current thread
| None mrmeshpy.setDefaultSerializeMeshFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectMeshHolder by default (if not overridden in specific object), the string must start from '.'; serialization falls back to the PLY format if given format support is available NOTE: CTM format support is available in the MRIOExtras library; make sure to load it if you prefer CTM
| None mrmeshpy.setDefaultSerializePointsFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectPointsHolder by default (if not overridden in specific object), the string must start from '.'; serialization falls back to the PLY format if given format support is available NOTE: CTM format support is available in the MRIOExtras library; make sure to load it if you prefer CTM
| None mrmeshpy.setDefaultSerializeVoxelsFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectVoxels by default (if not overridden in specific object), the string must start from '.'
| None mrmeshpy.setLevelSetType | ( | FloatGrid | grid | ) |
sets type of this grid as LEVEL SET (for normal flipping)
| None mrmeshpy.setNewHandlerIfNeeded | ( | ) |
sets new handler for operator new if needed for some platforms
| None mrmeshpy.setupLoggerByDefault | ( | ) |
Setups logger: 1) makes stdout sink 2) makes file sink (MRLog.txt) 3) redirect std streams to logger 4) print stacktrace on crash (not in wasm) log level - trace
sets given region voxels value \\note region is in grid space (0 voxel id is minimum active voxel in grid)
| None mrmeshpy.setValue | ( | FloatGrid | grid, |
| VoxelBitSet | region, | ||
| float | value ) |
sets given region voxels value \\note region is in grid space (0 voxel id is minimum active voxel in grid)
| None mrmeshpy.sharpenMarchingCubesMesh | ( | MeshPart | ref, |
| Mesh | vox, | ||
| Vector_VoxelId_FaceId | face2voxel, | ||
| SharpenMarchingCubesMeshSettings | settings ) |
adjust the mesh \\param vox produced by marching cubes method (NOT dual marching cubes) by 1) correcting positions of all vertices to given offset relative to \\param ref mesh (if correctOldVertPos == true); 2) introducing new vertices in the voxels where the normals change abruptly. \\param face2voxel mapping from Face Id to Voxel Id where it is located
| Mesh mrmeshpy.sharpOffsetMesh | ( | MeshPart | mp, |
| float | offset, | ||
| SharpOffsetParameters | params = '{}' ) |
Offsets mesh by converting it to voxels and back post process result using reference mesh to sharpen features
| None mrmeshpy.shrink | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| int | hops = 1 ) |
removes from the region all faces within given number of hops (stars) from the initial region boundary
| None mrmeshpy.shrink | ( | MeshTopology | topology, |
| VertBitSet | region, | ||
| int | hops = 1 ) |
removes from the region all vertices within given number of hops (stars) from the initial region boundary
| FaceBitSet mrmeshpy.shrinkFaces | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| UndirectedEdgeBitSet | stopEdges = None ) |
returns given region without all faces sharing an edge with not-region face; \\param stopEdges - neighborhood via this edges will be ignored
| None mrmeshpy.shrinkPixelMask | ( | PixelBitSet | mask, |
| RectIndexer | indexer, | ||
| int | shrinkage = 1 ) |
shrinks PixelBitSet with given number of steps
| None mrmeshpy.shrinkVoxelsMask | ( | VoxelBitSet | mask, |
| VolumeIndexer | indexer, | ||
| int | shrinkage = 1 ) |
shrinks VoxelBitSet with given number of steps
| float mrmeshpy.signedDistanceToMesh | ( | MeshPart | mp, |
| Vector3f | p, | ||
| SignedDistanceToMeshOptions | op ) |
computes signed distance from point (p) to mesh part (mp) following options (op); returns std::nullopt if distance is smaller than op.minDist or larger than op.maxDist (except for op.signMode == HoleWindingRule)
| FloatGrid mrmeshpy.simpleVolumeToDenseGrid | ( | SimpleVolume | simpleVolume, |
| float | background = 0.0, | ||
| func_bool_from_float | cb = '{}' ) |
make FloatGrid from SimpleVolume make copy of data background - the new background value for FloatGrid grid can be used to make iso-surface later with gridToMesh function
| VdbVolume mrmeshpy.simpleVolumeToVdbVolume | ( | SimpleVolumeMinMax | simpleVolume, |
| func_bool_from_float | cb = '{}' ) |
set the simpleVolume.min as the background value
| bool mrmeshpy.smaller | ( | PreciseVertCoord | l, |
| PreciseVertCoord | r ) |
return true if l is smaller than r, uses simulation-of-simplicity (assuming larger perturbations of points with smaller id) to avoid "coordinates are the same"
| bool mrmeshpy.smaller2 | ( | std_array_PreciseVertCoords2_4 | vs | ) |
given the line passing via points vs[0] and vs[1], which defines linear signed scalar distance field: zero on the line, positive for x where ccw(vs[0], vs[1], x) == true, and negative for x where ccw(vs[0], vs[1], x) == false finds whether sdistance(vs[2]) < sdistance(vs[3]); avoids equality of signed distances using simulation-of-simplicity approach (assuming larger perturbations of points with smaller id)
| None mrmeshpy.smoothRegionBoundary | ( | Mesh | mesh, |
| FaceBitSet | regionFaces, | ||
| int | numIters = 4 ) |
given a region of faces on the mesh, moves boundary vertices of the region to make the region contour much smoother with minor optimization of mesh topology near region boundary; \\param numIters >= 1 how many times to run the algorithm to achieve a better quality, solution is typically oscillates back and forth so even number of iterations is recommended
| FaceBitSet mrmeshpy.smoothSelection | ( | Mesh | mesh, |
| FaceBitSet | region, | ||
| float | expandOffset, | ||
| float | shrinkOffset ) |
makes the given selection more smooth with shifthing a boundary of the selection outside and back. Input mesh is changed because we have to cut new edges along the new boundaries \\param expandOffset defines how much the boundary is expanded \\param expandOffset defines how much the boundary is shrinked after that
| None mrmeshpy.sortPathsByLength | ( | std_vector_std_vector_Id_EdgeTag | paths, |
| Mesh | mesh ) |
| None mrmeshpy.sortPathsByMetric | ( | std_vector_std_vector_Id_EdgeTag | paths, |
| func_float_from_Id_EdgeTag | metric ) |
sorts given paths in ascending order of their metrics
| None mrmeshpy.sortScanFilesByName | ( | std_vector_std_filesystem_path | scans | ) |
Sort scan files in given vector by names (respect numbers in it)
| None mrmeshpy.sortScansByOrder | ( | std_vector_std_filesystem_path | scans, |
| std_vector_SliceInfo | zOrder ) |
Sort scan files in given vector by given slice information
| std_vector_std_string mrmeshpy.split | ( | str | string, |
| str | delimiter ) |
Splits given string by delimiter. \\return vector of split strings
| IteratorRange_ChunkIterator mrmeshpy.splitByChunks | ( | int | totalSize, |
| int | chunkSize, | ||
| int | overlap = 0 ) |
returns a pair of iterators for chunks covering the array of given size
| std_vector_unsigned_long mrmeshpy.splitByLines | ( | str | data, |
| int | size ) |
returns offsets for each new line in monolith char block
| std_vector_std_vector_Id_EdgeTag mrmeshpy.splitOnSimpleLoops | ( | MeshTopology | topology, |
| std_vector_std_vector_Id_EdgeTag | loops ) |
given a number of edge loops, splits every loop that passes via a vertex more than once on smaller loops without self-intersections
| None mrmeshpy.splitQuad | ( | MeshTopology | topology, |
| EdgeId | a, | ||
| FaceBitSet | outNewFaces = None ) |
given quadrangle face to the left of a, splits it in two triangles with new diagonal edge via dest(a)
| float mrmeshpy.sqr | ( | Vector2d | a | ) |
squared length
| float mrmeshpy.sqr | ( | Vector2f | a | ) |
squared length
| int mrmeshpy.sqr | ( | Vector2i | a | ) |
squared length
| float mrmeshpy.sqr | ( | Vector3d | a | ) |
squared length
| float mrmeshpy.sqr | ( | Vector3f | a | ) |
squared length
| int mrmeshpy.sqr | ( | Vector3i | a | ) |
squared length
| None mrmeshpy.stitchContours | ( | MeshTopology | topology, |
| std_vector_Id_EdgeTag | c0, | ||
| std_vector_Id_EdgeTag | c1 ) |
given two contours: 1) of equal size; 2) all edges of c0 have no left faces; 3) all edges of c1 have no right faces; merge the surface along corresponding edges of two contours, and deletes all vertices and edges from c1
| None mrmeshpy.straightenBoundary | ( | Mesh | mesh, |
| EdgeId | bd, | ||
| float | minNeiNormalsDot, | ||
| float | maxTriAspectRatio, | ||
| FaceBitSet | newFaces = None ) |
adds triangles along the boundary to straighten it; \\details new triangle is added only if 1) aspect ratio of the new triangle is at most maxTriAspectRatio, 2) dot product of its normal with neighbor triangles is at least minNeiNormalsDot.
| None mrmeshpy.subdivideLoneContours | ( | Mesh | mesh, |
| std_vector_OneMeshContour | contours, | ||
| phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2oldMap = None ) |
Divides faces that fully own contours into 3 parts with center in center mass of one of the face contours if there is more than one contour on face it guarantee to subdivide at least one lone contour on this face
| int mrmeshpy.subdivideMesh | ( | Mesh | mesh, |
| SubdivideSettings | settings = '{}' ) |
splits edges in mesh region according to the settings;\\n \\return The total number of edge splits performed
| int mrmeshpy.subdivideMesh | ( | ObjectMeshData | data, |
| SubdivideSettings | settings ) |
subdivides mesh with per-element attributes according to given settings; \\detail if settings.region is not null, then given region must be a subset of current face selection or face selection must absent \\return The total number of edge splits performed
| int mrmeshpy.subdividePolyline | ( | Polyline2 | polyline, |
| PolylineSubdivideSettings | settings = '{}' ) |
Split edges in polyline according to the settings;\\n \\return The total number of edge splits performed
| int mrmeshpy.subdividePolyline | ( | Polyline3 | polyline, |
| PolylineSubdivideSettings | settings = '{}' ) |
| FaceBitSet mrmeshpy.subdivideWithPlane | ( | Mesh | mesh, |
| Plane3f | plane, | ||
| phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2Old = None, | ||
| float | eps = 0, | ||
| func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = None ) |
subdivides all triangles intersected by given plane, leaving smaller triangles that only touch the plane; \\return all triangles on the positive side of the plane \\param new2Old receive mapping from newly appeared triangle to its original triangle (part to full) \\param eps if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
| UndirectedEdgeBitSet mrmeshpy.subdivideWithPlane | ( | Polyline3 | polyline, |
| Plane3f | plane, | ||
| EdgeBitSet | newPositiveEdges = '{}', | ||
| func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = '{}' ) |
This function splits edges intersected by the plane \\return edges located above the plane (in direction of normal to plane) \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param newPositiveEdges edges with origin on the plane and oriented to the positive direction (only adds bits to the existing ones) \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
| func_bool_from_float mrmeshpy.subprogress | ( | func_bool_from_float | cb, |
| float | from_, | ||
| float | to ) |
returns a callback that maps [0,1] linearly into [from,to] in the call to \\param cb (which can be empty)
| func_bool_from_float mrmeshpy.subprogress | ( | func_bool_from_float | cb, |
| int | index, | ||
| int | count ) |
returns a callback that maps [0,1] linearly into [(index+0)/count,(index+1)/count] in the call to \\param cb (which can be empty)
| float mrmeshpy.suggestVoxelSize | ( | MeshPart | mp, |
| float | approxNumVoxels ) |
computes size of a cubical voxel to get approximately given number of voxels during rasterization
| float mrmeshpy.sumAngles | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v, | ||
| bool_output | outBoundaryVert = None ) |
computes the sum of triangle angles at given vertex; optionally returns whether the vertex is on boundary
| float mrmeshpy.surfacePathLength | ( | Mesh | mesh, |
| std_vector_EdgePoint | surfacePath ) |
computes the length of surface path
| std_vector_std_vector_Vector3_float mrmeshpy.surfacePathsToContours3f | ( | Mesh | mesh, |
| std_vector_std_vector_EdgePoint | lines ) |
| std_vector_Vector3_float mrmeshpy.surfacePathToContour3f | ( | Mesh | mesh, |
| std_vector_EdgePoint | line ) |
converts lines on mesh in 3D contours by computing coordinate of each point
| std_vector_Id_EdgeTag mrmeshpy.surroundingContour | ( | Mesh | mesh, |
| std_vector_Id_EdgeTag | includeEdges, | ||
| func_float_from_Id_EdgeTag | edgeMetric, | ||
| Vector3f | dir ) |
\\brief Find the best closed edge loop passing through given edges, which minimizes the sum of given edge metric. The algorithm assumes that input edges can be projected on the plane orthogonal to given direction, then the center point of all input edges is found, and each segment of the searched loop is within infinite pie sector with this center and the borders passing via two sorted input edges. \\param includeEdges contain all edges in arbitrary order that must be present in the returned loop, probably with reversed direction (should have at least 2 elements) \\param edgeMetric returned loop will minimize the sum of this metric \\param dir direction approximately orthogonal to the loop, the resulting loop will be oriented clockwise if look from the direction's tip
| std_vector_Id_EdgeTag mrmeshpy.surroundingContour | ( | Mesh | mesh, |
| std_vector_Id_VertTag | keyVertices, | ||
| func_float_from_Id_EdgeTag | edgeMetric, | ||
| Vector3f | dir ) |
\\brief Find the best closed edge loop passing through given vertices, which minimizes the sum of given edge metric. The algorithm assumes that input vertices can be projected on the plane orthogonal to given direction, then the center point of all input vertices is found, and each segment of the searched loop is within infinite pie sector with this center and the borders passing via two sorted input vertices. \\param keyVertices contain all vertices in arbitrary order that returned loop must pass (should have at least 2 elements) \\param edgeMetric returned loop will minimize the sum of this metric \\param dir direction approximately orthogonal to the loop, the resulting loop will be oriented clockwise if look from the direction's tip
| str mrmeshpy.systemToUtf8 | ( | str | system | ) |
converts system encoded string to UTF8-encoded string
| std_array_VoxelsVolumeMinMax_Vector_float_Id_VoxelTag_3 mrmeshpy.teethMaskToDirectionVolume | ( | VdbVolume | volume, |
| std_vector_int | additionalIds = '{}' ) |
A shortcut for \\ref TeethMaskToDirectionVolumeConvertor::create and \\ref TeethMaskToDirectionVolumeConvertor::convertAll
| Mesh mrmeshpy.terrainTriangulation | ( | std_vector_Vector3_float | points, |
| func_bool_from_float | cb = '{}' ) |
Creates Delaunay triangulation using only XY components of points points will be changed inside this function take argument by value
| Mesh mrmeshpy.thickenMesh | ( | Mesh | mesh, |
| float | offset, | ||
| GeneralOffsetParameters | params = '{}', | ||
| PartMapping | map = '{}' ) |
in case of positive offset, returns the mesh consisting of offset mesh merged with inversed original mesh (thickening mode); in case of negative offset, returns the mesh consisting of inversed offset mesh merged with original mesh (hollowing mode); if your input mesh is open then please specify params.signDetectionMode = SignDetectionMode::Unsigned, and you will get open mesh (with several components) on output if your input mesh is closed then please specify another sign detection mode, and you will get closed mesh (with several components) on output;
| EdgePoint mrmeshpy.toEdgePoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| EdgeId | e, | ||
| Vector3f | p ) |
converts edge and 3d point into edge-point representation
| str mrmeshpy.toLower | ( | str | str | ) |
return a copy of the string with all alphabetic ASCII characters replaced with upper-case variants
| MeshTopology mrmeshpy.topologyFromTriangles | ( | Triangulation | t, |
| MeshBuilder.BuildSettings | settings = '{}', | ||
| func_bool_from_float | progressCb = '{}' ) |
construct mesh topology from a set of triangles with given ids; if skippedTris is given then it receives all input triangles not added in the resulting topology
| str mrmeshpy.toString | ( | DimensionsVisualizePropertyType | value | ) |
| str mrmeshpy.toString | ( | PathError | error | ) |
| MeshTriPoint mrmeshpy.toTriPoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f, | ||
| Vector3f | p ) |
converts face id and 3d point into barycentric representation
| MeshTriPoint mrmeshpy.toTriPoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| PointOnFace | p ) |
converts face id and 3d point into barycentric representation
| std_vector_Id_EdgeTag mrmeshpy.trackLeftBoundaryLoop | ( | MeshTopology | topology, |
| EdgeId | e0, | ||
| FaceBitSet | region = None ) |
returns closed loop of region boundary starting from given region boundary edge (region faces on the left, and not-region faces or holes on the right); if more than two boundary edges connect in one vertex, then the function makes the most abrupt turn to right
| std_vector_Id_EdgeTag mrmeshpy.trackLeftBoundaryLoop | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| EdgeId | e0 ) |
| std_vector_Id_EdgeTag mrmeshpy.trackRightBoundaryLoop | ( | MeshTopology | topology, |
| EdgeId | e0, | ||
| FaceBitSet | region = None ) |
returns closed loop of region boundary starting from given region boundary edge (region faces on the right, and not-region faces or holes on the left); if more than two boundary edges connect in one vertex, then the function makes the most abrupt turn to left
| std_vector_Id_EdgeTag mrmeshpy.trackRightBoundaryLoop | ( | MeshTopology | topology, |
| FaceBitSet | region, | ||
| EdgeId | e0 ) |
| std_vector_EdgePoint mrmeshpy.trackSection | ( | MeshPart | mp, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| Vector3f | direction, | ||
| float | distance ) |
track section of plane set by start point, direction and surface normal in start point in given direction while given distance or mesh boundary is not reached, or track looped negative distance means moving in opposite direction returns track on surface and end point (same as start if path has looped)
| std_vector_EdgePoint mrmeshpy.trackSection | ( | MeshPart | mp, |
| MeshTriPoint | start, | ||
| MeshTriPoint | end, | ||
| Vector3f | planePoint, | ||
| bool | ccw ) |
track section of plane set by start point, end point and planePoint from start to end \\param ccw - if true use start->end->planePoint plane, otherwise use start->planePoint->end (changes direction of plane tracking) returns track on surface without end point (return error if path was looped or reached boundary)
| VertCoords mrmeshpy.transformNormals | ( | VertCoords | normals, |
| VertBitSet | validVerts, | ||
| Matrix3d | m, | ||
| VertCoords | buf ) |
if (m) is null then just returns (normals); otherwise copies transformed normals in (buf) and returns it
| VertCoords mrmeshpy.transformPoints | ( | VertCoords | verts, |
| VertBitSet | validVerts, | ||
| AffineXf3d | xf, | ||
| VertCoords | buf, | ||
| VertRenumber | vertRenumber = None ) |
if (xf) is null then just returns (verts); otherwise copies transformed points in (buf) and returns it
| TransformVdbVolumeResult mrmeshpy.transformVdbVolume | ( | VdbVolume | volume, |
| AffineXf3f | xf, | ||
| bool | fixBox = False, | ||
| Box3f | box = '{}' ) |
Transform volume
@param volume Volume to transform
@param xf The transformation
@param fixBox If true, and if \\p box is valid and represents the bounding box of the \\p volume, then
the result will be shifted so that no data has negative coordinate by any of dimensions
| float mrmeshpy.triangleAspectRatio | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns aspect ratio of given mesh triangle equal to the ratio of the circum-radius to twice its in-radius
| Mesh mrmeshpy.triangulateContours | ( | std_vector_std_vector_Vector2_double | contours, |
| std_vector_std_vector_Id_VertTag | holeVertsIds = None ) |
@brief triangulate 2d contours only closed contours are allowed (first point of each contour should be the same as last point of the contour) @param holeVertsIds if set merge only points with same vertex id, otherwise merge all points with same coordinates @return return created mesh
| Mesh mrmeshpy.triangulateContours | ( | std_vector_std_vector_Vector2_float | contours, |
| std_vector_std_vector_Id_VertTag | holeVertsIds = None ) |
| Mesh mrmeshpy.triangulatePointCloud | ( | PointCloud | pointCloud, |
| TriangulationParameters | params = '{}', | ||
| func_bool_from_float | progressCb = '{}' ) |
\\brief Creates mesh from given point cloud according params
Returns empty optional if was interrupted by progress bar
<table border=0>
<caption id="triangulatePointCloud_examples"></caption>
<tr>
<td> \\image html triangulate/triangulate_0.png "Before" width = 350cm </td>
<td> \\image html triangulate/triangulate_3.png "After" width = 350cm </td>
</tr>
</table>
| Vector3f mrmeshpy.triCenter | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceId | f ) |
returns the centroid of given triangle
\\brief computes the closest points on two triangles, and returns the squared distance between them. \\param s,t are the triangles, stored tri[point][dimension]. \\details If the triangles are disjoint, p and q give the closest points of s and t respectively. However, if the triangles overlap, p and q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.
| str mrmeshpy.trim | ( | str | str | ) |
Removes all whitespace character (detected by std::isspace) at the beginning and the end of string view
| str mrmeshpy.trimLeft | ( | str | str | ) |
Removes all whitespace character (detected by std::isspace) at the beginning of string view
| str mrmeshpy.trimRight | ( | str | str | ) |
Removes all whitespace character (detected by std::isspace) at the end of string view
| None mrmeshpy.trimWithPlane | ( | Mesh | mesh, |
| TrimWithPlaneParams | params, | ||
| TrimOptionalOutput | optOut = '{}' ) |
\\brief trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal \\param mesh Input mesh that will be cut \\param params stores basic params for trimWithPlane function \\param optOut stores optional output params for trimWithPlane function
| None mrmeshpy.trimWithPlane | ( | Polyline3 | polyline, |
| Plane3f | plane, | ||
| DividePolylineParameters | params = '{}' ) |
This function divides polyline with a plane, leaving only part of polyline that lies in positive direction of normal \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param params Parameters of the function, containing optional output
| Vector3f mrmeshpy.triPoint | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| MeshTriPoint | p ) |
computes coordinates of point given as face and barycentric representation
| IteratorRange_UndirectedEdgeIterator mrmeshpy.undirectedEdges | ( | MeshTopology | topology | ) |
| IteratorRange_PolylineUndirectedEdgeIterator mrmeshpy.undirectedEdges | ( | PolylineTopology | topology | ) |
| int mrmeshpy.uniteCloseVertices | ( | Mesh | mesh, |
| float | closeDist, | ||
| bool | uniteOnlyBd = True, | ||
| VertMap | optionalVertOldToNew = None ) |
the function finds groups of mesh vertices located closer to each other than \\param closeDist, and unites such vertices in one; then the mesh is rebuilt from the remaining triangles \\param optionalVertOldToNew is the mapping of vertices: before -> after \\param uniteOnlyBd if true then only boundary vertices can be united, all internal vertices (even close ones) will remain \\return the number of vertices united, 0 means no change in the mesh
| int mrmeshpy.uniteCloseVertices | ( | Mesh | mesh, |
| MeshBuilder.UniteCloseParams | params = '{}' ) |
the function finds groups of mesh vertices located closer to each other than \\param params.closeDist, and unites such vertices in one; then the mesh is rebuilt from the remaining triangles \\return the number of vertices united, 0 means no change in the mesh
| AllLocalTriangulations mrmeshpy.uniteLocalTriangulations | ( | std_vector_SomeLocalTriangulations | in_, |
| func_bool_from_float | progress = '{}' ) |
converts a set of SomeLocalTriangulations containing local triangulations of all points arbitrary distributed among them into one AllLocalTriangulations with records for all points
| Mesh mrmeshpy.uniteManyMeshes | ( | std_vector_Mesh_const | meshes, |
| UniteManyMeshesParams | params = '{}' ) |
Computes the surface of objects' union each of which is defined by its own surface mesh - merge non intersecting meshes first - unite merged groups
| Vector3d mrmeshpy.unitVector3_double | ( | float | azimuth, |
| float | altitude ) |
returns a point on unit sphere given two angles
| Vector3f mrmeshpy.unitVector3_float | ( | float | azimuth, |
| float | altitude ) |
returns a point on unit sphere given two angles
| None mrmeshpy.updateGroupPairs | ( | ICPGroupPairs | pairs, |
| Vector_MeshOrPointsXf_ObjId | objs, | ||
| func_void_from_Vector3_float_MeshOrPoints_ProjectionResult_Id_ObjTag | srcProjector, | ||
| func_void_from_Vector3_float_MeshOrPoints_ProjectionResult_Id_ObjTag | tgtProjector, | ||
| float | cosThreshold, | ||
| float | distThresholdSq, | ||
| bool | mutualClosest ) |
in each pair updates the target data and performs basic filtering (activation)
| None mrmeshpy.updateIndicator | ( | Mesh | mesh, |
| UndirectedEdgeScalars | v, | ||
| FaceNormals | normals, | ||
| float | beta, | ||
| float | gamma ) |
Compute edge indicator function (1 - smooth edge, 0 - crease edge) by solving large system of linear equations \\param mesh contains topology information and coordinates for equation weights \\param normals per-face normals \\param beta 0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20)
| None mrmeshpy.updateIndicatorFast | ( | MeshTopology | topology, |
| UndirectedEdgeScalars | v, | ||
| FaceNormals | normals, | ||
| float | beta, | ||
| float | gamma ) |
Compute edge indicator function (1 - smooth edge, 0 - crease edge) by approximation without solving the system of linear equations \\param normals per-face normals \\param beta 0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20)
| None mrmeshpy.updatePointPairs | ( | PointPairs | pairs, |
| MeshOrPointsXf | src, | ||
| MeshOrPointsXf | tgt, | ||
| float | cosThreshold, | ||
| float | distThresholdSq, | ||
| bool | mutualClosest ) |
in each pair updates the target data and performs basic filtering (activation)
| str mrmeshpy.utf8string | ( | os.PathLike | str | bytes | path | ) |
| str mrmeshpy.utf8substr | ( | str | s, |
| int | pos, | ||
| int | count ) |
given on input a valid utf8-encoded string, returns its substring starting at \\p pos unicode symbol, and containing at most \\p count unicode symbols (but res.size() can be more than \\p count since a unicode symbol can be represented by more than 1 byte)
| str mrmeshpy.utf8ToSystem | ( | str | utf8 | ) |
converts UTF8-encoded string to system encoded string, returns empty string if such conversion cannot be made
| SimpleVolumeMinMax mrmeshpy.vdbVolumeToSimpleVolume | ( | VdbVolume | vdbVolume, |
| Box3i | activeBox = 'MR::Box3i()', | ||
| func_bool_from_float | cb = '{}' ) |
make SimpleVolume from VdbVolume make copy of data
| SimpleVolumeMinMax mrmeshpy.vdbVolumeToSimpleVolumeNorm | ( | VdbVolume | vdbVolume, |
| Box3i | activeBox = 'MR::Box3i()', | ||
| std_optional_Box_float | sourceScale = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
Makes normalized SimpleVolume from VdbVolume
Normalisation consist of scaling values linearly from the source scale to the interval [0;1]
@note Makes copy of data
@param sourceScale if specified, defines the initial scale of voxels.
If not specified, it is estimated as min. and max. values from the voxels
| SimpleVolumeMinMaxU16 mrmeshpy.vdbVolumeToSimpleVolumeU16 | ( | VdbVolume | vdbVolume, |
| Box3i | activeBox = 'MR::Box3i()', | ||
| std_optional_Box_float | sourceScale = '{}', | ||
| func_bool_from_float | cb = '{}' ) |
Makes SimpleVolumeU16 from VdbVolume
Values are linearly scaled from the source scale to the range corresponding to uint16_t
@note Makes copy of data
@param sourceScale if specified, defines the initial scale of voxels.
If not specified, it is estimated as min. and max. values from the voxels
computes position of a vertex, when all neighbor triangles have almost equal areas, more precisely it minimizes sum_i (area_i)^2 by adjusting the position of this vertex only
| Vector3f mrmeshpy.vertexPosEqualNeiAreas | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| VertId | v, | ||
| bool | noShrinkage ) |
| VertBitSet mrmeshpy.verticesGridSampling | ( | MeshPart | mp, |
| float | voxelSize, | ||
| func_bool_from_float | cb = '{}' ) |
performs sampling of mesh vertices; subdivides mesh bounding box on voxels of approximately given size and returns at most one vertex per voxel; returns std::nullopt if it was terminated by the callback
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
| float mrmeshpy.volume | ( | MeshTopology | topology, |
| VertCoords | points, | ||
| FaceBitSet | region = None ) |
returns volume of the object surrounded by given region (or whole mesh if (region) is nullptr); if the region has holes then each hole will be virtually filled by adding triangles for each edge and the hole's geometrical center
Intersect mesh A and mesh B.
Subtract mesh B from mesh A.
Unite mesh A and mesh B.
| VdbVolume mrmeshpy.voxelFilter | ( | VdbVolume | volume, |
| VoxelFilterType | type, | ||
| int | width ) |
Performs voxels filtering. @param type Type of fitler @param width Width of the filtering window, must be an odd number greater or equal to 1.
| float mrmeshpy.voxelizeAndComputeVolume | ( | std_vector_std_shared_ptr_Mesh | meshes, |
| AffineXf3f | xf, | ||
| Vector3f | voxelSize ) |
Computes summary volume of given meshes converting it to voxels of given size note that each mesh should have closed topology speed and precision depends on voxelSize (smaller voxel - faster, less precise; bigger voxel - slower, more precise)
| bool mrmeshpy.voxelsApplyTransform | ( | ObjectVoxels | obj, |
| AffineXf3f | xf, | ||
| bool | fixBox ) |
Same as above but for the SceneObject @return true, if \\p fixBox is true and the box was "fixed" (see parameter `fixBox` of \\ref transformVdbVolume)
| func_float_from_unsigned_long_unsigned_long mrmeshpy.voxelsExponentMetric | ( | VdbVolume | voxels, |
| VoxelMetricParameters | parameters, | ||
| float | modifier = -1.0 ) |
e^(modifier*(dens1+dens2))
| func_float_from_unsigned_long_unsigned_long mrmeshpy.voxelsSumDiffsMetric | ( | VdbVolume | voxels, |
| VoxelMetricParameters | parameters ) |
sum of dense differences with start and stop voxels
| bool mrmeshpy.writeByBlocks | ( | typing.Any | out, |
| str | data, | ||
| int | dataSize, | ||
| func_bool_from_float | callback = '{}', | ||
| int | blockSize = 65536 ) |
\\brief write dataSize bytes from data to out stream by blocks blockSize bytes \\details if progress callback is not set, write all data by one block \\return false if process was canceled (callback is set and return false )
| None mrmeshpy.writeRawTiff | ( | int | bytes, |
| os.PathLike | str | bytes | path, | ||
| BaseTiffParameters | params ) |
writes bytes to tiff file
| None mrmeshpy.xyPlaneMeshIntersect | ( | MeshPart | meshPart, |
| float | zLevel, | ||
| FaceBitSet | fs, | ||
| UndirectedEdgeBitSet | ues, | ||
| VertBitSet | vs, | ||
| std_vector_Id_FaceTag | fsVec = None ) |
given mesh part and plane z=zLevel, outputs \\param fs triangles crossed or touched by the plane \\param ues edges of these triangles \\param vs vertices of these triangles \\param fsVec triangles crossed or touched by the plane in unspecified order
| bool mrmeshpy.zCompensate | ( | Mesh | mesh, |
| ZCompensateParams | params ) |
For 3D printers: shifts every vertex with normal having negative projection on Z-axis, along Z-axis; mesh's topology is preserved unchanged @return false if cancelled.
| None mrmeshpy.zlibCompressStream | ( | typing.Any | in_, |
| typing.Any | out, | ||
| int | level = -1 ) |
@brief compress the input data using the Deflate algorithm @param in - input data stream @param out - output data stream @param level - compression level (0 - no compression, 1 - the fastest but the most inefficient compression, 9 - the most efficient but the slowest compression) @return nothing or error string
| None mrmeshpy.zlibDecompressStream | ( | typing.Any | in_, |
| typing.Any | out ) |
/brief decompress the input data compressed using the Deflate algorithm @param in - input data stream @param out - output data stream @return nothing or error string
| mrmeshpy.AABBTreeNode_AABBTreeBase_ObjTreeTraits_Traits = AABBTreeNode_ObjTreeTraits |
| mrmeshpy.AffineXf_Vector2d_M = Matrix2d |
| mrmeshpy.AffineXf_Vector2f_M = Matrix2f |
| mrmeshpy.AffineXf_Vector3d_M = Matrix3d |
| mrmeshpy.AffineXf_Vector3f_M = Matrix3f |
| mrmeshpy.AllVisualizeProperties = std_vector_ViewportMask |
| mrmeshpy.BMap_Id_VoxelTag_Id_VoxelTag = BMap_VoxelId_VoxelId |
| mrmeshpy.BMap_TypedBitSet_Id_ICPElemtTag_IndexType_TypedBitSet_Id_ICPElemtTag_IndexType = BMap_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.BMap_TypedBitSet_Id_VoxelTag_IndexType_TypedBitSet_Id_VoxelTag_IndexType = BMap_VoxelId_VoxelId |
| mrmeshpy.BooleanResMapObj = BooleanResultMapper.MapObject |
| mrmeshpy.Box_Vector2d_Vb = Vector2b |
| mrmeshpy.Box_Vector2f_Vb = Vector2b |
| mrmeshpy.Box_Vector2i64_Vb = Vector2b |
| mrmeshpy.Box_Vector2i_Vb = Vector2b |
| mrmeshpy.Box_Vector3d_Vb = Vector3b |
| mrmeshpy.Box_Vector3f_Vb = Vector3b |
| mrmeshpy.Box_Vector3i64_Vb = Vector3b |
| mrmeshpy.Box_Vector3i_Vb = Vector3b |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag = Buffer_EdgeId_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag_const_iterator = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag_const_reference = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag_iterator = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag_reference = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_Id_EdgeTag_T = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_UndirectedEdgeId_const_iterator = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_UndirectedEdgeId_const_reference = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_UndirectedEdgeId_iterator = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_UndirectedEdgeId_reference = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_EdgeTag_UndirectedEdgeId_T = NoDefInit_EdgeId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag = Buffer_VoxelId_VoxelId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag_const_iterator = NoDefInit_VoxelId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag_const_reference = NoDefInit_VoxelId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag_iterator = NoDefInit_VoxelId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag_reference = NoDefInit_VoxelId |
| mrmeshpy.Buffer_Id_VoxelTag_Id_VoxelTag_T = NoDefInit_VoxelId |
| mrmeshpy.ColorMapAggregator_FaceTag_ColorMap = FaceColors |
| mrmeshpy.ColorMapAggregator_FaceTag_ElementBitSet = FaceBitSet |
| mrmeshpy.ColorMapAggregator_UndirectedEdgeTag_ColorMap = UndirectedEdgeColors |
| mrmeshpy.ColorMapAggregator_UndirectedEdgeTag_ElementBitSet = UndirectedEdgeBitSet |
| mrmeshpy.ColorMapAggregator_VertTag_ColorMap = VertColors |
| mrmeshpy.ColorMapAggregator_VertTag_ElementBitSet = VertBitSet |
| mrmeshpy.ContinuousContour = std_vector_VarEdgeTri |
| mrmeshpy.ContinuousContours = std_vector_std_vector_VarEdgeTri |
| mrmeshpy.Contour2d = std_vector_Vector2_double |
| mrmeshpy.Contour2f = std_vector_Vector2_float |
| mrmeshpy.Contour3d = std_vector_Vector3_double |
| mrmeshpy.Contour3f = std_vector_Vector3_float |
| mrmeshpy.Contours2d = std_vector_std_vector_Vector2_double |
| mrmeshpy.Contours2f = std_vector_std_vector_Vector2_float |
| mrmeshpy.Contours3d = std_vector_std_vector_Vector3_double |
| mrmeshpy.Contours3f = std_vector_std_vector_Vector3_float |
| mrmeshpy.copyMesh = Mesh |
| mrmeshpy.DashPattern = Vector4_unsigned_char |
| mrmeshpy.DecimatePolylineSettings2 = DecimatePolylineSettings_Vector2f |
| mrmeshpy.DecimatePolylineSettings3 = DecimatePolylineSettings_Vector3f |
| mrmeshpy.EdgeHashMap = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.EdgeLoop = std_vector_Id_EdgeTag |
| mrmeshpy.EdgeLoops = std_vector_std_vector_Id_EdgeTag |
| mrmeshpy.EdgeMapOrHashMap = MapOrHashMap_EdgeId_EdgeId |
| mrmeshpy.EdgePath = std_vector_Id_EdgeTag |
| mrmeshpy.EdgePathsBuilder = EdgePathsBuilderT_TrivialMetricToPenalty |
| mrmeshpy.FaceHashMap = phmap_flat_hash_map_Id_FaceTag_Id_FaceTag |
| mrmeshpy.FaceMapOrHashMap = MapOrHashMap_FaceId_FaceId |
| mrmeshpy.FaceTreeTraits3 = AABBTreeTraits_FaceTag_Box3f |
| mrmeshpy.FeaturesPropertyTypesVariant = std_variant_float_Vector3_float |
| mrmeshpy.FileNamesStack = std_vector_std_filesystem_path |
| mrmeshpy.FixSelfIntersectionMethod = SelfIntersections.Settings.Method |
| mrmeshpy.FixSelfIntersectionSettings = SelfIntersections.Settings |
| mrmeshpy.GcodeSource = std_vector_std_string |
| mrmeshpy.GeneralOffsetParametersMode = OffsetMode |
| mrmeshpy.HashMap_EdgeId_EdgeId = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.HashMap_Id_EdgeTag_Id_EdgeTag = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.HashMap_TypedBitSet_Id_EdgeTag_IndexType_TypedBitSet_Id_EdgeTag_IndexType = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.HashMap_TypedBitSet_Id_ICPElemtTag_IndexType_TypedBitSet_Id_ICPElemtTag_IndexType = phmap_flat_hash_map_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.HashMap_TypedBitSet_Id_VoxelTag_IndexType_TypedBitSet_Id_VoxelTag_IndexType = phmap_flat_hash_map_Id_VoxelTag_Id_VoxelTag |
| mrmeshpy.HistoryActionsVector = std_vector_std_shared_ptr_HistoryAction |
| mrmeshpy.ICPElementBitSet = TypedBitSet_Id_ICPElemtTag |
| mrmeshpy.ICPElementId = Id_ICPElemtTag |
| mrmeshpy.ICPObjects = Vector_MeshOrPointsXf_ObjId |
| mrmeshpy.ICPPairsGrid = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.Id_EdgeTag = EdgeId |
| mrmeshpy.Id_VoxelTag = VoxelId |
| mrmeshpy.IOFilters = std_vector_IOFilter |
| mrmeshpy.IsoLine = std_vector_EdgePoint |
| mrmeshpy.IsoLines = std_vector_std_vector_EdgePoint |
| mrmeshpy.IteratorRange_LeftRingIterator = IteratorRange_RingIterator_NextEdgeSameLeft |
| mrmeshpy.IteratorRange_OrgRingIterator = IteratorRange_RingIterator_NextEdgeSameOrigin |
| mrmeshpy.LaplacianEdgeWeightsParam = EdgeWeights |
| mrmeshpy.LeftRingIterator = RingIterator_NextEdgeSameLeft |
| mrmeshpy.Line3dMesh = Line3Mesh_double |
| mrmeshpy.Line3fMesh = Line3Mesh_float |
| mrmeshpy.LineTreeTraits2 = AABBTreeTraits_UndirectedEdgeTag_Box2f |
| mrmeshpy.LineTreeTraits3 = AABBTreeTraits_UndirectedEdgeTag_Box3f |
| mrmeshpy.LoadedObject = LoadedObjectT |
| mrmeshpy.LoadedObjectLines = LoadedObjectT_ObjectLines |
| mrmeshpy.LoadedObjectMesh = LoadedObjectT_ObjectMesh |
| mrmeshpy.LoadedObjectPoints = LoadedObjectT_ObjectPoints |
| mrmeshpy.LoadedObjectT_Object = LoadedObjectT |
| mrmeshpy.LoadedObjectVoxels = LoadedObjectT_ObjectVoxels |
| mrmeshpy.MapOrHashMap_Id_EdgeTag_Id_EdgeTag = MapOrHashMap_EdgeId_EdgeId |
| mrmeshpy.MapOrHashMap_Id_EdgeTag_Id_EdgeTag_Dense = EdgeMap |
| mrmeshpy.MapOrHashMap_Id_EdgeTag_Id_EdgeTag_Hash = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.MapOrHashMap_UndirectedEdgeId_Id_EdgeTag_Dense = WholeEdgeMap |
| mrmeshpy.MapOrHashMap_UndirectedEdgeId_Id_EdgeTag_Hash = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |
| mrmeshpy.Matrix2_bool_VectorType = Vector2b |
| mrmeshpy.Matrix2_double_VectorType = Vector2d |
| mrmeshpy.Matrix2_float_VectorType = Vector2f |
| mrmeshpy.Matrix2_int_VectorType = Vector2i |
| mrmeshpy.Matrix2_long_VectorType = Vector2i64 |
| mrmeshpy.Matrix3_bool_VectorType = Vector3b |
| mrmeshpy.Matrix3_double_VectorType = Vector3d |
| mrmeshpy.Matrix3_float_VectorType = Vector3f |
| mrmeshpy.Matrix3_int_VectorType = Vector3i |
| mrmeshpy.Matrix3_long_VectorType = Vector3i64 |
| mrmeshpy.Matrix4_bool_VectorType = Vector4b |
| mrmeshpy.Matrix4_double_VectorType = Vector4d |
| mrmeshpy.Matrix4_float_VectorType = Vector4f |
| mrmeshpy.Matrix4_int_VectorType = Vector4i |
| mrmeshpy.Matrix4_long_VectorType = Vector4i64 |
| mrmeshpy.MeshBuilderSettings = MeshBuilder.BuildSettings |
| mrmeshpy.MeshEdgePoint = EdgePoint |
| mrmeshpy.MeshOnVoxelsFunction = MeshOnVoxelsT_Mesh_FunctionVolume |
| mrmeshpy.MeshOnVoxelsFunctionC = MeshOnVoxelsT_const_Mesh_FunctionVolume |
| mrmeshpy.MeshOnVoxelsSimple = MeshOnVoxelsT_Mesh_SimpleVolumeMinMax |
| mrmeshpy.MeshOnVoxelsSimpleC = MeshOnVoxelsT_const_Mesh_SimpleVolumeMinMax |
| mrmeshpy.MeshOnVoxelsVdb = MeshOnVoxelsT_Mesh_VdbVolume |
| mrmeshpy.MeshOnVoxelsVdbC = MeshOnVoxelsT_const_Mesh_VdbVolume |
| mrmeshpy.MeshToVolumeParamsType = MeshToVolumeParams.Type |
| mrmeshpy.MinMax_VoxelsVolume_Vector_unsigned_short_Id_VoxelTag_ValueType = Box_unsigned_short |
| mrmeshpy.MinMaxd = Box1d |
| mrmeshpy.MinMaxf = Box1f |
| mrmeshpy.MinMaxi = Box1i |
| mrmeshpy.MultiObjsSamples = std_vector_ObjVertId |
| mrmeshpy.NoCtor_Id_EdgeTag = NoCtor_EdgeId |
| mrmeshpy.NoCtor_Id_EdgeTag_type = NoDefInit_EdgeId |
| mrmeshpy.NoCtor_Id_VoxelTag = NoCtor_VoxelId |
| mrmeshpy.NoCtor_Id_VoxelTag_type = NoDefInit_VoxelId |
| mrmeshpy.NoDefInit_Id_EdgeTag = NoDefInit_EdgeId |
| mrmeshpy.NoDefInit_Id_VoxelTag = NoDefInit_VoxelId |
| mrmeshpy.ObjectPtr = Object |
| mrmeshpy.OffsetContoursVertMap = std_vector_OffsetContoursOrigins |
| mrmeshpy.OffsetContoursVertMaps = std_vector_std_vector_OffsetContoursOrigins |
| mrmeshpy.OneMeshContours = std_vector_OneMeshContour |
| mrmeshpy.OrgRingIterator = RingIterator_NextEdgeSameOrigin |
| mrmeshpy.PdfGeneralFont = std_variant_PdfBuildinFont_std_filesystem_path |
| mrmeshpy.phmap_flat_hash_map_EdgeId_EdgeId = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.phmap_flat_hash_map_FaceId_FaceId = phmap_flat_hash_map_Id_FaceTag_Id_FaceTag |
| mrmeshpy.phmap_flat_hash_map_GraphEdgeId_GraphEdgeId = phmap_flat_hash_map_Id_GraphEdgeTag_Id_GraphEdgeTag |
| mrmeshpy.phmap_flat_hash_map_GraphVertId_GraphVertId = phmap_flat_hash_map_Id_GraphVertTag_Id_GraphVertTag |
| mrmeshpy.phmap_flat_hash_map_int_Box3i_phmap_Hash_int32_t = phmap_flat_hash_map_int_Box_Vector3_int |
| mrmeshpy.phmap_flat_hash_map_NodeId_NodeId = phmap_flat_hash_map_Id_NodeTag_Id_NodeTag |
| mrmeshpy.phmap_flat_hash_map_ObjId_ObjId = phmap_flat_hash_map_Id_ObjTag_Id_ObjTag |
| mrmeshpy.phmap_flat_hash_map_PixelId_PixelId = phmap_flat_hash_map_Id_PixelTag_Id_PixelTag |
| mrmeshpy.phmap_flat_hash_map_RegionId_RegionId = phmap_flat_hash_map_Id_RegionTag_Id_RegionTag |
| mrmeshpy.phmap_flat_hash_map_TextureId_TextureId = phmap_flat_hash_map_Id_TextureTag_Id_TextureTag |
| mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_EdgeId = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |
| mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_int = phmap_flat_hash_map_Id_UndirectedEdgeTag_int |
| mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_UndirectedEdgeId = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag |
| mrmeshpy.phmap_flat_hash_map_unsigned_long_std_array_VertId_3_phmap_Hash_uint64_t = phmap_flat_hash_map_unsigned_long_std_array_Id_VertTag_3ul |
| mrmeshpy.phmap_flat_hash_map_VertId_float = phmap_flat_hash_map_Id_VertTag_float |
| mrmeshpy.phmap_flat_hash_map_VertId_FlowAggregator_Flows = phmap_flat_hash_map_Id_VertTag_FlowAggregator_Flows |
| mrmeshpy.phmap_flat_hash_map_VertId_VertId = phmap_flat_hash_map_Id_VertTag_Id_VertTag |
| mrmeshpy.phmap_flat_hash_map_VertId_VertPathInfo = phmap_flat_hash_map_Id_VertTag_VertPathInfo |
| mrmeshpy.phmap_flat_hash_map_VoxelId_VoxelId = phmap_flat_hash_map_Id_VoxelTag_Id_VoxelTag |
| mrmeshpy.PickedPoint = std_variant_std_monostate_MeshTriPoint_EdgePoint_Id_VertTag |
| mrmeshpy.PlaneSection = std_vector_EdgePoint |
| mrmeshpy.PlaneSections = std_vector_std_vector_EdgePoint |
| mrmeshpy.Polynomial_double_0ul_0_0_0ulminus1 = Polynomial_double_0 |
| mrmeshpy.Polynomial_double_1ul_0_0_1ulminus1 = Polynomial_double_0 |
| mrmeshpy.Polynomial_double_2ul_0_0_2ulminus1 = Polynomial_double_1 |
| mrmeshpy.Polynomial_double_3ul_0_0_3ulminus1 = Polynomial_double_2 |
| mrmeshpy.Polynomial_double_4ul_0_0_4ulminus1 = Polynomial_double_3 |
| mrmeshpy.Polynomial_double_5ul_0_0_5ulminus1 = Polynomial_double_4 |
| mrmeshpy.Polynomial_double_6ul_0_0_6ulminus1 = Polynomial_double_5 |
| mrmeshpy.Polynomial_float_0ul_0_0_0ulminus1 = Polynomial_float_0 |
| mrmeshpy.Polynomial_float_1ul_0_0_1ulminus1 = Polynomial_float_0 |
| mrmeshpy.Polynomial_float_2ul_0_0_2ulminus1 = Polynomial_float_1 |
| mrmeshpy.Polynomial_float_3ul_0_0_3ulminus1 = Polynomial_float_2 |
| mrmeshpy.Polynomial_float_4ul_0_0_4ulminus1 = Polynomial_float_3 |
| mrmeshpy.Polynomial_float_5ul_0_0_5ulminus1 = Polynomial_float_4 |
| mrmeshpy.Polynomial_float_6ul_0_0_6ulminus1 = Polynomial_float_5 |
| mrmeshpy.PolynomialWrapperd = PolynomialWrapper_double |
| mrmeshpy.PolynomialWrapperf = PolynomialWrapper_float |
| mrmeshpy.Polynomialx_double = std_variant_Polynomial_double_0ul_Polynomial_double_1ul_Polynomial_double_2ul_Polynomial_double_3ul_Polynomial_double_4ul_Polynomial_double_5ul_Polynomial_double_6ul |
| mrmeshpy.Polynomialx_float = std_variant_Polynomial_float_0ul_Polynomial_float_1ul_Polynomial_float_2ul_Polynomial_float_3ul_Polynomial_float_4ul_Polynomial_float_5ul_Polynomial_float_6ul |
| mrmeshpy.PreciseCollisionResult = std_vector_VarEdgeTri |
| mrmeshpy.QuadraticForm_Vector2d_SM = SymMatrix2d |
| mrmeshpy.QuadraticForm_Vector2f_SM = SymMatrix2f |
| mrmeshpy.QuadraticForm_Vector3d_SM = SymMatrix3d |
| mrmeshpy.QuadraticForm_Vector3f_SM = SymMatrix3f |
| mrmeshpy.RigidScaleXf3_double_V = Vector3d |
| mrmeshpy.RigidScaleXf3_float_V = Vector3f |
| mrmeshpy.RigidXf3_double_V = Vector3d |
| mrmeshpy.RigidXf3_float_V = Vector3f |
| mrmeshpy.SeparationPointMap = phmap_flat_hash_map_unsigned_long_std_array_Id_VertTag_3ul |
| mrmeshpy.SeparationPointSet = std_array_Id_VertTag_3 |
| mrmeshpy.std_array_AffineXf3d_4 = std_array_AffineXf_Vector3_double_4 |
| mrmeshpy.std_array_AffineXf3f_4 = std_array_AffineXf_Vector3_float_4 |
| mrmeshpy.std_array_BooleanResultMapper_Maps_size_t_MapObject_Count = std_array_BooleanResultMapper_Maps_2 |
| mrmeshpy.std_array_CubicBezierCurve_Vector2d_T_4 = std_array_double_4 |
| mrmeshpy.std_array_CubicBezierCurve_Vector2f_T_4 = std_array_float_4 |
| mrmeshpy.std_array_CubicBezierCurve_Vector3d_T_4 = std_array_double_4 |
| mrmeshpy.std_array_CubicBezierCurve_Vector3f_T_4 = std_array_float_4 |
| mrmeshpy.std_array_SimpleVolumeMinMax_3 = std_array_VoxelsVolumeMinMax_Vector_float_Id_VoxelTag_3 |
| mrmeshpy.std_array_std_filesystem_path_size_t_SystemFontType_Count = std_array_std_filesystem_path_4 |
| mrmeshpy.std_array_Vector3d_3 = std_array_Vector3_double_3 |
| mrmeshpy.std_array_Vector3f_3 = std_array_Vector3_float_3 |
| mrmeshpy.std_array_Vector3i_3 = std_array_Vector3_int_3 |
| mrmeshpy.std_array_VertId_2 = std_array_Id_VertTag_2 |
| mrmeshpy.std_array_VertId_3 = std_array_Id_VertTag_3 |
| mrmeshpy.std_optional_Box1f = std_optional_Box_float |
| mrmeshpy.std_optional_Box3f = std_optional_Box_Vector3_float |
| mrmeshpy.std_optional_Edges = std_optional_Vector_std_array_Id_VertTag_2ul_Id_UndirectedEdgeTag |
| mrmeshpy.std_optional_std_variant_float_Vector3f = std_optional_std_variant_float_Vector3_float |
| mrmeshpy.std_optional_Triangulation = std_optional_Vector_std_array_Id_VertTag_3ul_Id_FaceTag |
| mrmeshpy.std_optional_Vector2f = std_optional_Vector2_float |
| mrmeshpy.std_optional_Vector3f = std_optional_Vector3_float |
| mrmeshpy.std_shared_ptr_ChangeActiveBoxAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_ChangeDualMarchingCubesAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_ChangeGridAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_ChangeIsoAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_ChangeSurfaceAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_ChangVoxelSelectionAction_Obj = ObjectVoxels |
| mrmeshpy.std_shared_ptr_const_Mesh = Mesh |
| mrmeshpy.std_shared_ptr_const_PointCloud = PointCloud |
| mrmeshpy.std_shared_ptr_const_Polyline3 = Polyline3 |
| mrmeshpy.std_shared_ptr_DistanceMap = DistanceMap |
| mrmeshpy.std_shared_ptr_GcodeSource = std_vector_std_string |
| mrmeshpy.std_shared_ptr_Mesh = Mesh |
| mrmeshpy.std_shared_ptr_Object = Object |
| mrmeshpy.std_shared_ptr_ObjectLines = ObjectLines |
| mrmeshpy.std_shared_ptr_ObjectLinesHolder = ObjectLinesHolder |
| mrmeshpy.std_shared_ptr_ObjectMesh = ObjectMesh |
| mrmeshpy.std_shared_ptr_ObjectMeshHolder = ObjectMeshHolder |
| mrmeshpy.std_shared_ptr_ObjectPoints = ObjectPoints |
| mrmeshpy.std_shared_ptr_ObjectVoxels = ObjectVoxels |
| mrmeshpy.std_shared_ptr_PointCloud = PointCloud |
| mrmeshpy.std_shared_ptr_Polyline3 = Polyline3 |
| mrmeshpy.std_shared_ptr_std_vector_std_string = std_vector_std_string |
| mrmeshpy.std_shared_ptr_VisualObject = VisualObject |
| mrmeshpy.std_unique_ptr_NoDefInit_Id_EdgeTag_pointer = NoDefInit_EdgeId |
| mrmeshpy.std_unique_ptr_NoDefInit_Id_ICPElemtTag_pointer = NoDefInit_Id_ICPElemtTag |
| mrmeshpy.std_unique_ptr_NoDefInit_Id_VoxelTag_pointer = NoDefInit_VoxelId |
| mrmeshpy.std_variant_EdgeMap_phmap_flat_hash_map_EdgeId_EdgeId = std_variant_Vector_Id_EdgeTag_Id_EdgeTag_phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.std_variant_FaceId_EdgeId_VertId = std_variant_Id_FaceTag_Id_EdgeTag_Id_VertTag |
| mrmeshpy.std_variant_FaceMap_phmap_flat_hash_map_FaceId_FaceId = std_variant_Vector_Id_FaceTag_Id_FaceTag_phmap_flat_hash_map_Id_FaceTag_Id_FaceTag |
| mrmeshpy.std_variant_float_Vector3f = std_variant_float_Vector3_float |
| mrmeshpy.std_variant_Polynomial_double_0_Polynomial_double_1_Polynomial_double_2_Polynomial_double_3_Polynomial_double_4_Polynomial_double_5_Polynomial_double_6 = std_variant_Polynomial_double_0ul_Polynomial_double_1ul_Polynomial_double_2ul_Polynomial_double_3ul_Polynomial_double_4ul_Polynomial_double_5ul_Polynomial_double_6ul |
| mrmeshpy.std_variant_Polynomial_float_0_Polynomial_float_1_Polynomial_float_2_Polynomial_float_3_Polynomial_float_4_Polynomial_float_5_Polynomial_float_6 = std_variant_Polynomial_float_0ul_Polynomial_float_1ul_Polynomial_float_2ul_Polynomial_float_3ul_Polynomial_float_4ul_Polynomial_float_5ul_Polynomial_float_6ul |
| mrmeshpy.std_variant_Sphere3f_Features_Primitives_ConeSegment_Features_Primitives_Plane = std_variant_Sphere_Vector3_float_Features_Primitives_ConeSegment_Features_Primitives_Plane |
| mrmeshpy.std_variant_std_monostate_MeshTriPoint_EdgePoint_VertId = std_variant_std_monostate_MeshTriPoint_EdgePoint_Id_VertTag |
| mrmeshpy.std_variant_std_reference_wrapper_const_FillingSurface_TPMS_MeshParams_std_reference_wrapper_const_FillingSurface_CellularSurface_Params = std_variant_std_reference_wrapper_FillingSurface_TPMS_MeshParams_const_std_reference_wrapper_FillingSurface_CellularSurface_Params_const |
| mrmeshpy.std_variant_UndirectedEdgeMap_phmap_flat_hash_map_UndirectedEdgeId_UndirectedEdgeId = std_variant_Vector_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag_phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag |
| mrmeshpy.std_variant_VertMap_phmap_flat_hash_map_VertId_VertId = std_variant_Vector_Id_VertTag_Id_VertTag_phmap_flat_hash_map_Id_VertTag_Id_VertTag |
| mrmeshpy.std_variant_WholeEdgeMap_phmap_flat_hash_map_UndirectedEdgeId_EdgeId = std_variant_Vector_Id_EdgeTag_Id_UndirectedEdgeTag_phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |
| mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_FaceTag_Box3f = std_vector_AABBTreeNode_AABBTreeTraits_FaceTag_Box_Vector3_float |
| mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box2f = std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box_Vector2_float |
| mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box3f = std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box_Vector3_float |
| mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_const_reference = AABBTreeNode_ObjTreeTraits |
| mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_reference = AABBTreeNode_ObjTreeTraits |
| mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_value_type = AABBTreeNode_ObjTreeTraits |
| mrmeshpy.std_vector_AABBTreePoints_Node_const_reference = AABBTreePoints.Node |
| mrmeshpy.std_vector_AABBTreePoints_Node_reference = AABBTreePoints.Node |
| mrmeshpy.std_vector_AABBTreePoints_Node_value_type = AABBTreePoints.Node |
| mrmeshpy.std_vector_AffineXf3f = std_vector_AffineXf_Vector3_float |
| mrmeshpy.std_vector_Color_const_reference = Color |
| mrmeshpy.std_vector_Color_reference = Color |
| mrmeshpy.std_vector_Color_value_type = Color |
| mrmeshpy.std_vector_const_Mesh = std_vector_Mesh_const |
| mrmeshpy.std_vector_ContinuousContour = std_vector_std_vector_VarEdgeTri |
| mrmeshpy.std_vector_Dipole_const_reference = Dipole |
| mrmeshpy.std_vector_Dipole_reference = Dipole |
| mrmeshpy.std_vector_Dipole_value_type = Dipole |
| mrmeshpy.std_vector_EdgeBitSet = std_vector_TypedBitSet_Id_EdgeTag |
| mrmeshpy.std_vector_EdgeId = std_vector_Id_EdgeTag |
| mrmeshpy.std_vector_EdgeLoop = std_vector_std_vector_Id_EdgeTag |
| mrmeshpy.std_vector_EdgePair = std_vector_std_pair_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.std_vector_EdgePath = std_vector_std_vector_Id_EdgeTag |
| mrmeshpy.std_vector_FaceBitSet = std_vector_TypedBitSet_Id_FaceTag |
| mrmeshpy.std_vector_FaceId = std_vector_Id_FaceTag |
| mrmeshpy.std_vector_FanRecord_const_reference = FanRecord |
| mrmeshpy.std_vector_FanRecord_reference = FanRecord |
| mrmeshpy.std_vector_FanRecord_value_type = FanRecord |
| mrmeshpy.std_vector_Graph_EndVertices_const_reference = Graph.EndVertices |
| mrmeshpy.std_vector_Graph_EndVertices_reference = Graph.EndVertices |
| mrmeshpy.std_vector_Graph_EndVertices_value_type = Graph.EndVertices |
| mrmeshpy.std_vector_GraphEdgeId = std_vector_Id_GraphEdgeTag |
| mrmeshpy.std_vector_GraphVertId = std_vector_Id_GraphVertTag |
| mrmeshpy.std_vector_Heap_float_GraphVertId_std_greater_float_Element = std_vector_Heap_float_Id_GraphVertTag_std_greater_float_Element |
| mrmeshpy.std_vector_ICPGroupPairs_const_reference = ICPGroupPairs |
| mrmeshpy.std_vector_ICPGroupPairs_reference = ICPGroupPairs |
| mrmeshpy.std_vector_ICPGroupPairs_value_type = ICPGroupPairs |
| mrmeshpy.std_vector_Id_EdgeTag_const_reference = EdgeId |
| mrmeshpy.std_vector_Id_EdgeTag_reference = EdgeId |
| mrmeshpy.std_vector_Id_EdgeTag_value_type = EdgeId |
| mrmeshpy.std_vector_Id_ICPElemtTag_const_reference = Id_ICPElemtTag |
| mrmeshpy.std_vector_Id_ICPElemtTag_reference = Id_ICPElemtTag |
| mrmeshpy.std_vector_Id_ICPElemtTag_value_type = Id_ICPElemtTag |
| mrmeshpy.std_vector_Id_VoxelTag_const_reference = VoxelId |
| mrmeshpy.std_vector_Id_VoxelTag_reference = VoxelId |
| mrmeshpy.std_vector_Id_VoxelTag_value_type = VoxelId |
| mrmeshpy.std_vector_Line3dMesh = std_vector_Line3Mesh_double |
| mrmeshpy.std_vector_Line3fMesh = std_vector_Line3Mesh_float |
| mrmeshpy.std_vector_LineSegm3f = std_vector_LineSegm_Vector3_float |
| mrmeshpy.std_vector_MeshBuilder_VertSpan_const_reference = MeshBuilder.VertSpan |
| mrmeshpy.std_vector_MeshBuilder_VertSpan_reference = MeshBuilder.VertSpan |
| mrmeshpy.std_vector_MeshBuilder_VertSpan_value_type = MeshBuilder.VertSpan |
| mrmeshpy.std_vector_MeshEdgePoint = std_vector_EdgePoint |
| mrmeshpy.std_vector_MeshOrPointsXf_const_reference = MeshOrPointsXf |
| mrmeshpy.std_vector_MeshOrPointsXf_reference = MeshOrPointsXf |
| mrmeshpy.std_vector_MeshOrPointsXf_value_type = MeshOrPointsXf |
| mrmeshpy.std_vector_MeshTexture_const_reference = MeshTexture |
| mrmeshpy.std_vector_MeshTexture_reference = MeshTexture |
| mrmeshpy.std_vector_MeshTexture_value_type = MeshTexture |
| mrmeshpy.std_vector_ModelPointsData_const_reference = ModelPointsData |
| mrmeshpy.std_vector_ModelPointsData_reference = ModelPointsData |
| mrmeshpy.std_vector_ModelPointsData_value_type = ModelPointsData |
| mrmeshpy.std_vector_NodeId = std_vector_Id_NodeTag |
| mrmeshpy.std_vector_ObjectPtr = std_vector_std_shared_ptr_Object |
| mrmeshpy.std_vector_ObjId = std_vector_Id_ObjTag |
| mrmeshpy.std_vector_OffsetContoursVertMap = std_vector_std_vector_OffsetContoursOrigins |
| mrmeshpy.std_vector_PixelId = std_vector_Id_PixelTag |
| mrmeshpy.std_vector_PlanarTriangulation_ContourIdMap = std_vector_std_vector_PlanarTriangulation_IntersectionInfo |
| mrmeshpy.std_vector_Polyline3 = std_vector_Polyline_Vector3_float |
| mrmeshpy.std_vector_QuadraticForm2f = std_vector_QuadraticForm_Vector2_float |
| mrmeshpy.std_vector_QuadraticForm3f = std_vector_QuadraticForm_Vector3_float |
| mrmeshpy.std_vector_RegionId = std_vector_Id_RegionTag |
| mrmeshpy.std_vector_RigidXf3d = std_vector_RigidXf3_double |
| mrmeshpy.std_vector_size_t = std_vector_unsigned_long |
| mrmeshpy.std_vector_std_array_std_filesystem_path_4 = std_vector_std_array_std_filesystem_path_4ul |
| mrmeshpy.std_vector_std_array_Vector3f_3 = std_vector_std_array_Vector3_float_3ul |
| mrmeshpy.std_vector_std_array_VertId_2 = std_vector_std_array_Id_VertTag_2ul |
| mrmeshpy.std_vector_std_array_VertId_3 = std_vector_std_array_Id_VertTag_3ul |
| mrmeshpy.std_vector_std_pair_EdgeId_EdgeId = std_vector_std_pair_Id_EdgeTag_Id_EdgeTag |
| mrmeshpy.std_vector_std_pair_size_t_size_t = std_vector_std_pair_unsigned_long_unsigned_long |
| mrmeshpy.std_vector_std_pair_Vector3f_Vector3f = std_vector_std_pair_Vector3_float_Vector3_float |
| mrmeshpy.std_vector_std_pair_VertId_VertId = std_vector_std_pair_Id_VertTag_Id_VertTag |
| mrmeshpy.std_vector_std_shared_ptr_const_Object = std_vector_std_shared_ptr_Object_const |
| mrmeshpy.std_vector_std_variant_Sphere3f_Features_Primitives_ConeSegment_Features_Primitives_Plane = std_vector_std_variant_Sphere_Vector3_float_Features_Primitives_ConeSegment_Features_Primitives_Plane |
| mrmeshpy.std_vector_std_vector_EdgeId = std_vector_std_vector_Id_EdgeTag |
| mrmeshpy.std_vector_std_vector_EdgePoint_const_reference = std_vector_EdgePoint |
| mrmeshpy.std_vector_std_vector_EdgePoint_reference = std_vector_EdgePoint |
| mrmeshpy.std_vector_std_vector_EdgePoint_value_type = std_vector_EdgePoint |
| mrmeshpy.std_vector_std_vector_GraphEdgeId = std_vector_std_vector_Id_GraphEdgeTag |
| mrmeshpy.std_vector_std_vector_ObjVertId_const_reference = std_vector_ObjVertId |
| mrmeshpy.std_vector_std_vector_ObjVertId_reference = std_vector_ObjVertId |
| mrmeshpy.std_vector_std_vector_ObjVertId_value_type = std_vector_ObjVertId |
| mrmeshpy.std_vector_std_vector_Vector2d = std_vector_std_vector_Vector2_double |
| mrmeshpy.std_vector_std_vector_Vector2f = std_vector_std_vector_Vector2_float |
| mrmeshpy.std_vector_std_vector_Vector3d = std_vector_std_vector_Vector3_double |
| mrmeshpy.std_vector_std_vector_Vector3f = std_vector_std_vector_Vector3_float |
| mrmeshpy.std_vector_std_vector_VertId = std_vector_std_vector_Id_VertTag |
| mrmeshpy.std_vector_SurfacePath = std_vector_std_vector_EdgePoint |
| mrmeshpy.std_vector_SystemPath_SystemFontPaths = std_vector_std_array_std_filesystem_path_4ul |
| mrmeshpy.std_vector_TextureId = std_vector_Id_TextureTag |
| mrmeshpy.std_vector_tl_expected_VoxelsLoad_DicomVolume_std_string = std_vector_tl_expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_Vector_float_Id_VoxelTag_std_string |
| mrmeshpy.std_vector_tl_expected_VoxelsLoad_DicomVolumeAsVdb_std_string = std_vector_tl_expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_FloatGrid_std_string |
| mrmeshpy.std_vector_TriPointf = std_vector_TriPoint_float |
| mrmeshpy.std_vector_uint8_t = std_vector_unsigned_char |
| mrmeshpy.std_vector_UndirectedEdgeBitSet = std_vector_TypedBitSet_Id_UndirectedEdgeTag |
| mrmeshpy.std_vector_UndirectedEdgeId = std_vector_Id_UndirectedEdgeTag |
| mrmeshpy.std_vector_VdbVolume = std_vector_VoxelsVolumeMinMax_FloatGrid |
| mrmeshpy.std_vector_Vector2d = std_vector_Vector2_double |
| mrmeshpy.std_vector_Vector2f = std_vector_Vector2_float |
| mrmeshpy.std_vector_Vector3d = std_vector_Vector3_double |
| mrmeshpy.std_vector_Vector3f = std_vector_Vector3_float |
| mrmeshpy.std_vector_Vector3i = std_vector_Vector3_int |
| mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_const_reference = Vector_ICPGroupPairs_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_reference = Vector_ICPGroupPairs_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_value_type = Vector_ICPGroupPairs_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_const_reference = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_reference = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_value_type = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_const_reference = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_reference = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_value_type = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.std_vector_VertBitSet = std_vector_TypedBitSet_Id_VertTag |
| mrmeshpy.std_vector_VertId = std_vector_Id_VertTag |
| mrmeshpy.std_vector_VoxelBitSet = std_vector_TypedBitSet_Id_VoxelTag |
| mrmeshpy.std_vector_VoxelId = std_vector_Id_VoxelTag |
| mrmeshpy.std_vector_WatershedGraph_BasinInfo_const_reference = WatershedGraph.BasinInfo |
| mrmeshpy.std_vector_WatershedGraph_BasinInfo_reference = WatershedGraph.BasinInfo |
| mrmeshpy.std_vector_WatershedGraph_BasinInfo_value_type = WatershedGraph.BasinInfo |
| mrmeshpy.std_vector_WatershedGraph_BdInfo_const_reference = WatershedGraph.BdInfo |
| mrmeshpy.std_vector_WatershedGraph_BdInfo_reference = WatershedGraph.BdInfo |
| mrmeshpy.std_vector_WatershedGraph_BdInfo_value_type = WatershedGraph.BdInfo |
| mrmeshpy.SurfacePath = std_vector_EdgePoint |
| mrmeshpy.SurfacePaths = std_vector_std_vector_EdgePoint |
| mrmeshpy.TaggedBitSet_ICPElemtTag = TypedBitSet_Id_ICPElemtTag |
| mrmeshpy.TextAlignParams = TextMeshAlignParams |
| mrmeshpy.ThreeVertIds = std_array_Id_VertTag_3 |
| mrmeshpy.tl_expected_VoxelsLoad_DicomVolume_std_string = expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_Vector_float_Id_VoxelTag_std_string |
| mrmeshpy.tl_expected_VoxelsLoad_DicomVolumeAsVdb_std_string = expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_FloatGrid_std_string |
| mrmeshpy.Triangle3d = std_array_Vector3_double_3 |
| mrmeshpy.Triangle3f = std_array_Vector3_float_3 |
| mrmeshpy.Triangle3i = std_array_Vector3_int_3 |
| mrmeshpy.TriangleCornerNormals = std_array_Vector3_float_3 |
| mrmeshpy.TrianglesRepetitions = std_array_int_4 |
| mrmeshpy.TriangulationHelpersSettings = TriangulationHelpers.Settings |
| mrmeshpy.TwoVertIds = std_array_Id_VertTag_2 |
| mrmeshpy.TypedBitSet_FaceId_base = BitSet |
| mrmeshpy.TypedBitSet_FaceId_IndexType = FaceId |
| mrmeshpy.TypedBitSet_GraphEdgeId_base = BitSet |
| mrmeshpy.TypedBitSet_GraphEdgeId_IndexType = GraphEdgeId |
| mrmeshpy.TypedBitSet_GraphVertId_base = BitSet |
| mrmeshpy.TypedBitSet_GraphVertId_IndexType = GraphVertId |
| mrmeshpy.TypedBitSet_Id_EdgeTag_base = BitSet |
| mrmeshpy.TypedBitSet_Id_EdgeTag_IndexType = EdgeId |
| mrmeshpy.TypedBitSet_Id_VoxelTag_base = BitSet |
| mrmeshpy.TypedBitSet_Id_VoxelTag_IndexType = VoxelId |
| mrmeshpy.TypedBitSet_NodeId_base = BitSet |
| mrmeshpy.TypedBitSet_NodeId_IndexType = NodeId |
| mrmeshpy.TypedBitSet_ObjId_base = BitSet |
| mrmeshpy.TypedBitSet_ObjId_IndexType = ObjId |
| mrmeshpy.TypedBitSet_PixelId_base = BitSet |
| mrmeshpy.TypedBitSet_PixelId_IndexType = PixelId |
| mrmeshpy.TypedBitSet_RegionId_base = BitSet |
| mrmeshpy.TypedBitSet_RegionId_IndexType = RegionId |
| mrmeshpy.TypedBitSet_TextureId_base = BitSet |
| mrmeshpy.TypedBitSet_TextureId_IndexType = TextureId |
| mrmeshpy.TypedBitSet_UndirectedEdgeId_base = BitSet |
| mrmeshpy.TypedBitSet_UndirectedEdgeId_IndexType = UndirectedEdgeId |
| mrmeshpy.TypedBitSet_VertId_base = BitSet |
| mrmeshpy.TypedBitSet_VertId_IndexType = VertId |
| mrmeshpy.UndirectedEdgeHashMap = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag |
| mrmeshpy.UndirectedEdgeMapOrHashMap = MapOrHashMap_UndirectedEdgeId_UndirectedEdgeId |
| mrmeshpy.UVCoord = Vector2f |
| mrmeshpy.VdbVolumes = std_vector_VoxelsVolumeMinMax_FloatGrid |
| mrmeshpy.Vector2_bool_MatrixType = Matrix2b |
| mrmeshpy.Vector2_bool_SymMatrixType = SymMatrix2b |
| mrmeshpy.Vector2_double_MatrixType = Matrix2d |
| mrmeshpy.Vector2_double_SymMatrixType = SymMatrix2d |
| mrmeshpy.Vector2_float_MatrixType = Matrix2f |
| mrmeshpy.Vector2_float_SymMatrixType = SymMatrix2f |
| mrmeshpy.Vector2_int_MatrixType = Matrix2i |
| mrmeshpy.Vector2_int_SymMatrixType = SymMatrix2i |
| mrmeshpy.Vector2_long_MatrixType = Matrix2i64 |
| mrmeshpy.Vector2_long_SymMatrixType = SymMatrix2i64 |
| mrmeshpy.Vector3_bool_MatrixType = Matrix3b |
| mrmeshpy.Vector3_bool_SymMatrixType = SymMatrix3b |
| mrmeshpy.Vector3_double_MatrixType = Matrix3d |
| mrmeshpy.Vector3_double_SymMatrixType = SymMatrix3d |
| mrmeshpy.Vector3_float_MatrixType = Matrix3f |
| mrmeshpy.Vector3_float_SymMatrixType = SymMatrix3f |
| mrmeshpy.Vector3_int_MatrixType = Matrix3i |
| mrmeshpy.Vector3_int_SymMatrixType = SymMatrix3i |
| mrmeshpy.Vector3_long_MatrixType = Matrix3i64 |
| mrmeshpy.Vector3_long_SymMatrixType = SymMatrix3i64 |
| mrmeshpy.Vector4_bool_MatrixType = Matrix4b |
| mrmeshpy.Vector4_bool_SymMatrixType = SymMatrix4b |
| mrmeshpy.Vector4_double_MatrixType = Matrix4d |
| mrmeshpy.Vector4_double_SymMatrixType = SymMatrix4d |
| mrmeshpy.Vector4_float_MatrixType = Matrix4f |
| mrmeshpy.Vector4_float_SymMatrixType = SymMatrix4f |
| mrmeshpy.Vector4_int_MatrixType = Matrix4i |
| mrmeshpy.Vector4_int_SymMatrixType = SymMatrix4i |
| mrmeshpy.Vector4_long_MatrixType = Matrix4i64 |
| mrmeshpy.Vector4_long_SymMatrixType = SymMatrix4i64 |
| mrmeshpy.Vector4_uint8_t = Vector4_unsigned_char |
| mrmeshpy.Vector_Color_FaceId_const_reference = Color |
| mrmeshpy.Vector_Color_FaceId_reference = Color |
| mrmeshpy.Vector_Color_FaceId_value_type = Color |
| mrmeshpy.Vector_Color_Id_EdgeTag_const_reference = Color |
| mrmeshpy.Vector_Color_Id_EdgeTag_reference = Color |
| mrmeshpy.Vector_Color_Id_EdgeTag_value_type = Color |
| mrmeshpy.Vector_Color_UndirectedEdgeId_const_reference = Color |
| mrmeshpy.Vector_Color_UndirectedEdgeId_reference = Color |
| mrmeshpy.Vector_Color_UndirectedEdgeId_value_type = Color |
| mrmeshpy.Vector_Color_VertId_const_reference = Color |
| mrmeshpy.Vector_Color_VertId_reference = Color |
| mrmeshpy.Vector_Color_VertId_value_type = Color |
| mrmeshpy.Vector_Dipole_NodeId_const_reference = Dipole |
| mrmeshpy.Vector_Dipole_NodeId_reference = Dipole |
| mrmeshpy.Vector_Dipole_NodeId_value_type = Dipole |
| mrmeshpy.Vector_FaceId_FaceId_const_reference = FaceId |
| mrmeshpy.Vector_FaceId_FaceId_reference = FaceId |
| mrmeshpy.Vector_FaceId_FaceId_value_type = FaceId |
| mrmeshpy.Vector_float_Id_VoxelTag = Vector_float_VoxelId |
| mrmeshpy.Vector_ICPPairsGrid_ICPLayer = Vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_int |
| mrmeshpy.Vector_Id_EdgeTag_FaceId_const_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_FaceId_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_FaceId_value_type = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_const_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_value_type = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_const_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_value_type = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_VertId_const_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_VertId_reference = EdgeId |
| mrmeshpy.Vector_Id_EdgeTag_VertId_value_type = EdgeId |
| mrmeshpy.Vector_Id_VoxelTag_FaceId_const_reference = VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_FaceId_reference = VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_FaceId_value_type = VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_Id_VoxelTag = Vector_VoxelId_VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_Id_VoxelTag_const_reference = VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_Id_VoxelTag_reference = VoxelId |
| mrmeshpy.Vector_Id_VoxelTag_Id_VoxelTag_value_type = VoxelId |
| mrmeshpy.Vector_ObjId_ObjId_const_reference = ObjId |
| mrmeshpy.Vector_ObjId_ObjId_reference = ObjId |
| mrmeshpy.Vector_ObjId_ObjId_value_type = ObjId |
| mrmeshpy.Vector_RegionId_FaceId_const_reference = RegionId |
| mrmeshpy.Vector_RegionId_FaceId_reference = RegionId |
| mrmeshpy.Vector_RegionId_FaceId_value_type = RegionId |
| mrmeshpy.Vector_RegionId_UndirectedEdgeId_const_reference = RegionId |
| mrmeshpy.Vector_RegionId_UndirectedEdgeId_reference = RegionId |
| mrmeshpy.Vector_RegionId_UndirectedEdgeId_value_type = RegionId |
| mrmeshpy.Vector_RegionId_VertId_const_reference = RegionId |
| mrmeshpy.Vector_RegionId_VertId_reference = RegionId |
| mrmeshpy.Vector_RegionId_VertId_value_type = RegionId |
| mrmeshpy.Vector_std_array_VertId_2_UndirectedEdgeId_const_reference = std_array_Id_VertTag_2 |
| mrmeshpy.Vector_std_array_VertId_2_UndirectedEdgeId_reference = std_array_Id_VertTag_2 |
| mrmeshpy.Vector_std_array_VertId_2_UndirectedEdgeId_value_type = std_array_Id_VertTag_2 |
| mrmeshpy.Vector_std_array_VertId_3_FaceId_const_reference = std_array_Id_VertTag_3 |
| mrmeshpy.Vector_std_array_VertId_3_FaceId_reference = std_array_Id_VertTag_3 |
| mrmeshpy.Vector_std_array_VertId_3_FaceId_value_type = std_array_Id_VertTag_3 |
| mrmeshpy.Vector_TextureId_FaceId_const_reference = TextureId |
| mrmeshpy.Vector_TextureId_FaceId_reference = TextureId |
| mrmeshpy.Vector_TextureId_FaceId_value_type = TextureId |
| mrmeshpy.Vector_TypedBitSet_Id_ICPElemtTag_IndexType_TypedBitSet_Id_ICPElemtTag_IndexType = Vector_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.Vector_TypedBitSet_Id_VoxelTag_IndexType_TypedBitSet_Id_VoxelTag_IndexType = Vector_VoxelId_VoxelId |
| mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_const_reference = UndirectedEdgeId |
| mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_reference = UndirectedEdgeId |
| mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_value_type = UndirectedEdgeId |
| mrmeshpy.Vector_unsigned_short_Id_VoxelTag = Vector_unsigned_short_VoxelId |
| mrmeshpy.Vector_Vector2f_VertId_const_reference = Vector2f |
| mrmeshpy.Vector_Vector2f_VertId_reference = Vector2f |
| mrmeshpy.Vector_Vector2f_VertId_value_type = Vector2f |
| mrmeshpy.Vector_Vector3f_FaceId_const_reference = Vector3f |
| mrmeshpy.Vector_Vector3f_FaceId_reference = Vector3f |
| mrmeshpy.Vector_Vector3f_FaceId_value_type = Vector3f |
| mrmeshpy.Vector_Vector3f_VertId_const_reference = Vector3f |
| mrmeshpy.Vector_Vector3f_VertId_reference = Vector3f |
| mrmeshpy.Vector_Vector3f_VertId_value_type = Vector3f |
| mrmeshpy.Vector_Vector_ICPGroupPairs_ICPElementId_ICPElementId = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
| mrmeshpy.Vector_VertId_Id_EdgeTag_const_reference = VertId |
| mrmeshpy.Vector_VertId_Id_EdgeTag_reference = VertId |
| mrmeshpy.Vector_VertId_Id_EdgeTag_value_type = VertId |
| mrmeshpy.Vector_VertId_VertId_const_reference = VertId |
| mrmeshpy.Vector_VertId_VertId_reference = VertId |
| mrmeshpy.Vector_VertId_VertId_value_type = VertId |
| mrmeshpy.vectorConstMeshPtr = std_vector_Mesh_const |
| mrmeshpy.vectorEdges = std_vector_Id_EdgeTag |
| mrmeshpy.VertHashMap = phmap_flat_hash_map_Id_VertTag_Id_VertTag |
| mrmeshpy.VertMapOrHashMap = MapOrHashMap_VertId_VertId |
| mrmeshpy.VertNormals = VertCoords |
| mrmeshpy.VertPathInfoMap = phmap_flat_hash_map_Id_VertTag_VertPathInfo |
| mrmeshpy.VertUVCoords = VertCoords2 |
| mrmeshpy.ViewportProperty_uint8_t = ViewportProperty_unsigned_char |
| mrmeshpy.VoxelsSaveSavingSettings = VoxelsSave.SavingSettings |
| mrmeshpy.VoxelTraits_Vector_float_Id_VoxelTag = VoxelTraits_Vector_float_VoxelId |
| mrmeshpy.VoxelTraits_Vector_unsigned_short_Id_VoxelTag = VoxelTraits_Vector_unsigned_short_VoxelId |
| mrmeshpy.WholeEdgeHashMap = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |
| mrmeshpy.WholeEdgeMapOrHashMap = MapOrHashMap_UndirectedEdgeId_EdgeId |