TSplineSurface
Whether t-spline is is open.
Whether t-spline is extractable (Could be displayed in smooth mode)
Whether t-spline in box or smooth mode
Check all guarantees required for standardization to determine
if the t-spline is standard
All closed surfaces are watertight, but some watertight surfaces are open.
A list of reflections applied to the t-spline
public static TSplineSurface BuildFromLines(IEnumerable<Curve> lines, int maxFaceValence = 4, double snappingTolerance = 1E-05, bool creaseOuterVertices = true, bool inSmoothMode = false)
Create a T-Spline Surface from the list of lines.
Accepts curves, but takes only start and end points from them.
public static TSplineSurface BuildPipes(IEnumerable<Curve> curves, double defaultRadius, double snappingTolerance, IEnumerable<int> segmentsCount, IEnumerable<double> endRotations, IEnumerable<double> endRadii, IEnumerable<double> endPercentage, bool inSmoothMode)
Make a piped surface out of a network of curves or lines.
A smooth joint is created at each curve intersection.
Some parameter take single value or list - two valies per curve.
public static TSplineSurface BuildPipes(IEnumerable<Curve> curves, double defaultRadius, double snappingTolerance, IEnumerable<int> segmentsCount, bool autoHandleStart, bool autoHandleEnd, IEnumerable<double> startRotations, IEnumerable<double> endRotations, IEnumerable<double> startRadii, IEnumerable<double> endRadii, IEnumerable<double> startPositions, IEnumerable<double> endPositions, bool inSmoothMode)
Make a piped surface out of a network of curves or lines.
A smooth joint is created at each curve intersection.
Some parameters take single value or list - one value per curve.
public static TSplineSurface ByBoxCorners(Point lowPoint, Point highPoint, int xSpans, int ySpans, int zSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create an T-Spline Box spanning from low Point to high Point.
public static TSplineSurface ByBoxLengths(double width, double length, double height, int xSpans, int ySpans, int zSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Box centered at WCS origin, with width, length, and height.
public static TSplineSurface ByBoxLengths(Point origin, double width, double length, double height, int xSpans, int ySpans, int zSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Box centered at input Point, with specified width, length, and height.
public static TSplineSurface ByBoxLengths(CoordinateSystem cs, double width, double length, double height, int xSpans, int ySpans, int zSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Box centered and oriented to input CoordinateSystem, with specified width, length, and height.
Combine given T-Spline Surfaces into single one.
Surface can be not connected to each other.
If at least one surface is in box mode - output surface will be in box mode as well.
public static TSplineSurface ByConeCoordinateSystemHeightRadii(CoordinateSystem cs, double height, double startRadius, double endRadius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Cone with base Point at CoordinateSystem origin, extending in the direction of CoordinateSystem Z-axis,
with its circular base in the CoordinateSystem XY Plane.
public static TSplineSurface ByConeCoordinateSystemHeightRadius(CoordinateSystem cs, double height, double radius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Cone with base Point at CoordinateSystem origin, extending in the direction of CoordinateSystem's Z-axis,
with a circular base in the CoordinateSystem XY Plane.
public static TSplineSurface ByConePointsRadii(Point startPoint, Point endPoint, double startRadius, double endRadius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Cone with axis from start Point to end Point, with given radii at start and end.
This object does not have an apex, and is in the shape of a frustum.
public static TSplineSurface ByConePointsRadius(Point startPoint, Point endPoint, double radius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Cone with given base radius at start Point,
extending to an apex at end Point.
public static TSplineSurface ByCylinderPointsRadius(Point startPoint, Point endPoint, double radius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Construct a T-Splines Cylinder given the bottom and top center point of the Cylinder.
public static TSplineSurface ByCylinderRadiusHeight(CoordinateSystem cs, double radius, double height, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Construct a T-Spline Cylinder defined by a parent CoordinateSystem, the radius, and the height of the cylinder
public static TSplineSurface ByExtrude(Curve curve, Vector direction, double frontDistance = 1, double backDistance = 1, int frontSpans = 1, int backSpans = 0, int profileSpans = 0, bool uniform = true, bool inSmoothMode = false)
Construct a T-Spline by extruding a curve along the given vector.
public static TSplineSurface ByNurbsSurfaceCurvature(NurbsSurface nurbsSurface, bool inSmoothMode = false)
Construct T-Spline surface from NURBS Surface using curvature subdivision strategy.
Input NURBS surface is rebuilt to degree 3. Output T-Spline has span counts and
positions in each direction detected automatically depending on curvature.
public static TSplineSurface ByNurbsSurfaceUniform(NurbsSurface nurbsSurface, int uSpans, int vSpans, bool uUseArcLen, bool vUseArcLen, bool inSmoothMode)
Construct T-Spline surface from NURBS Surface using uniform strategy.
Input NURBS surface is rebuilt with uniform knots placed at equal parametric or
arc length intervals depending on corresponding useArcLen flag, and approximated by
degree 3 NURBS surface. Output T-Spline is divided by given span counts
in u and v directions.
public static TSplineSurface ByPlaneBestFitThroughPoints(IEnumerable<Point> points, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Fit a T-Spline Plane to the input Points; basically a 3D scatterplot fit.
public static TSplineSurface ByPlaneLineAndPoint(Line line, Point point, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create the T-Spline Plane containing the input Line and external Point. Point cannot lie on the Line or anywhere on the axis of the Line.
public static TSplineSurface ByPlaneOriginNormal(Point origin, Vector normal, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Plane centered at root Point, with input normal Vector.
public static TSplineSurface ByPlaneOriginNormalXAxis(Point origin, Vector normal, Vector xAxis, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create an "oriented" T-Spline Plane, positioned at Point origin with Vector normal, but with a specific X-axis orientation.
This has no impact to splitting, intersect, project, etc. operations, it only specifies the orientation of the input CoordinateSystem.
public static TSplineSurface ByPlaneOriginXAxisYAxis(Point origin, Vector xAxis, Vector yAxis, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a Plane by origin and X, Y axis.
The Z axis is the cross product of the two Vectors.
public static TSplineSurface ByPlaneThreePoints(Point p1, Point p2, Point p3, Point minCorner, Point maxCorner, int xSpans, int ySpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Plane containing the three input Points. The Points cannot lie on a straight line
public static TSplineSurface ByQuadballCenterRadius(Point center, double radius, int spans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Quadball with given center and radius, aligned with default World XY plane
public static TSplineSurface ByQuadballCoordinateSystemRadius(CoordinateSystem cs, double radius, int spans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Quadball with center at CoordinateSystem origin and given radius
public static TSplineSurface ByRevolve(Curve profile, Point axisOrigin, Vector axisDirection, double startAngle, double sweepAngle, int radialSpans, int axialSpans, bool uniform, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Surface by sweeping the profile Curve around the axis formed
by the axis origin and axis direction, starting at start_angle in degrees,
and sweeping by sweep_angle in degrees.
public static TSplineSurface BySphereBestFit(IEnumerable<Point> points, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Fit a T-Spline Sphere as close as possible to the input Points.
public static TSplineSurface BySphereCenterPointRadius(Point centerPoint, double radius, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Sphere cetered at the input Point, with given radius.
public static TSplineSurface BySphereFourPoints(IEnumerable<Point> points, int radiusSpans, int heightSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Spline Sphere containing four input Points on the surface.
public static TSplineSurface BySweep(Curve profile, Curve path, bool parallel = true, int pathSpans = 1, int profileSpans = 0, bool pathUniform = true, bool profileUniform = true, bool inSmoothMode = false)
Construct a T-Spline by sweeping a cross section Curve along a path.
public static TSplineSurface ByTorusCenterRadii(Point center, double innerRadius, double outerRadius, int innerRadiusSpans, int outerRadiusSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Torus with given center and radii, aligned with default World XY plane
public static TSplineSurface ByTorusCoordinateSystemRadii(CoordinateSystem cs, double innerRadius, double outerRadius, int innerRadiusSpans, int outerRadiusSpans, TSplineInitialSymmetry symmetry, bool inSmoothMode)
Create a T-Splines Torus with center at CoordinateSystem origin and given radii
Export given T-Spline surface to T-Spline Mesh file
Export given set of T-Spline surfaces to T-Spline Scene file
Load a T-Spline Surface from given T-Spline Mesh file
Load a T-Spline Surface from given T-Spline Mesh file
Load set of a T-Spline surfaces from given T-Spline Scene file
Load set of a T-Spline surfaces from given T-Spline Scene file
Write T-Spline Surface into a string in T-Spline Mesh format.
public TSplineSurface AddReflections(IEnumerable<TSplineReflection> reflections, bool weldSymmetricPortions = false, double weldTolerance = 1E-05)
Append given list of reflections to the t-spline
public TSplineSurface BevelEdges(IEnumerable<TSplineEdge> edges, double percentage = 0.5, int segments = 3, bool keepOnFace = false, double roundness = 0)
Replace given edges with a channel of faces.
public TSplineSurface BridgeEdgesToEdges(IEnumerable<TSplineEdge> firstGroup, IEnumerable<TSplineEdge> secondGroup, IEnumerable<Curve> followCurves, IEnumerable<int> frameRotations, IEnumerable<int> spansCounts, bool cleanBorderBridges, bool keepSubdCreases, IEnumerable<TSplineVertex> firstAlignVertices, IEnumerable<TSplineVertex> secondAlignVertices, IEnumerable<bool> flipAlignmentFlags)
Build bridge between two sets of edges. Items of the
first group are considered as children of this surface. Items of
the second group can either be children of this surface or belong
to a different surface. Topology within each group might not be
adjacent but should create the same count of distinct loops.
public TSplineSurface BridgeEdgesToFaces(IEnumerable<TSplineEdge> firstGroup, IEnumerable<TSplineFace> secondGroup, IEnumerable<Curve> followCurves, IEnumerable<int> frameRotations, IEnumerable<int> spansCounts, bool cleanBorderBridges, bool keepSubdCreases, IEnumerable<TSplineVertex> firstAlignVertices, IEnumerable<TSplineVertex> secondAlignVertices, IEnumerable<bool> flipAlignmentFlags)
Build bridge between set of edges and set of faces. Items of the
first group are considered as children of this surface. Items of
the second group can be either children of this surface or belong
to a different surface. Topology within each group might not be
adjacent, but should create the same count of distinct loops.
public TSplineSurface BridgeFacesToEdges(IEnumerable<TSplineFace> firstGroup, IEnumerable<TSplineEdge> secondGroup, IEnumerable<Curve> followCurves, IEnumerable<int> frameRotations, IEnumerable<int> spansCounts, bool cleanBorderBridges, bool keepSubdCreases, IEnumerable<TSplineVertex> firstAlignVertices, IEnumerable<TSplineVertex> secondAlignVertices, IEnumerable<bool> flipAlignmentFlags)
Build bridge between set of faces and set of edges. Items of the
first group are considered as children of this surface. Items of
the second group can be either children of this surface or belong
to a different surface. Topology within each group might not be
adjacent, but should create the same count of distinct loops.
public TSplineSurface BridgeFacesToFaces(IEnumerable<TSplineFace> firstGroup, IEnumerable<TSplineFace> secondGroup, IEnumerable<Curve> followCurves, IEnumerable<int> frameRotations, IEnumerable<int> spansCounts, bool cleanBorderBridges, bool keepSubdCreases, IEnumerable<TSplineVertex> firstAlignVertices, IEnumerable<TSplineVertex> secondAlignVertices, IEnumerable<bool> flipAlignmentFlags)
Build bridge between two sets of faces. Items of the first group
are considered as children of this surface. Items of the second
group can be either children of this surface or belong to
a different surface. Topology within each group might not be adjacent,
but should create the same count of distinct loops.
Compress all topology on the surface and make the indices contiguous. This function maintains the relative order of the indices.
Perform crease on given set of edges
Perform crease on given set of vertices
public TSplineSurface CreateMatch(IEnumerable<TSplineEdge> tsEdges, IEnumerable<Curve> curves, int continuity, bool useArclength, bool useRefinement, int numRefinementSteps, double refinementTolerance, bool usePropagation, double widthOfPropagation, double tangentScale, double curvParamWeight, bool flipSourceTargetAlignment)
Create match with T-Spline and closed loop of curves
public TSplineSurface CreateMatch(IEnumerable<TSplineEdge> tsEdges, IEnumerable<Curve> curves, int continuity, bool useArclength, bool useRefinement, int numRefinementSteps, double refinementTolerance, bool usePropagation, double widthOfPropagation, double scale, bool flipSourceTargetAlignment)
Create match with T-Spline and closed loop of curves
public TSplineSurface CreateMatch(IEnumerable<TSplineEdge> tsEdges, IEnumerable<Edge> brepEdges, int continuity, bool useArclength, bool useRefinement, int numRefinementSteps, double refinementTolerance, bool usePropagation, double widthOfPropagation, double tangentScale, double curvParamWeight, bool flipSourceTargetAlignment)
Create match with T-Spline and closed loop of BRep edges. First,
edge loop is converted to curve loop and then match is performed
public TSplineSurface CreateMatch(IEnumerable<TSplineEdge> tsEdges, IEnumerable<Edge> brepEdges, int continuity, bool useArclength, bool useRefinement, int numRefinementSteps, double refinementTolerance, bool usePropagation, double widthOfPropagation, double scale, bool flipSourceTargetAlignment)
Create match with T-Spline and closed loop of BRep edges. First,
edge loop is converted to curve loop and then match is performed
Remove edges from t-spline topology
Remove faces from t-spline topology
Remove vertices from t-spline topology
Copy chosen faces to the new surface. New surface has no symmetry
Change visualization style of t-spline.
Smooth visualization if true passed, box otherwise.
Perform a single or multiple symmetric extrudes on a set of edges and move new edges by given vector.
public TSplineSurface ExtrudeEdgesAlongCurve(IEnumerable<TSplineEdge> edges, Curve curve, int spans = 1)
Perform a single or multiple symmetric extrudes on a set of edges and move new edges by the path of given curve.
Perform a single or multiple symmetric extrudes on a set of faces and move new edges by given vector.
public TSplineSurface ExtrudeFacesAlongCurve(IEnumerable<TSplineFace> faces, Curve curve, int spans = 1)
Perform a single or multiple symmetric extrudes on a set of faces and move new edges by the path of given curve.
public TSplineSurface FillHole(IEnumerable<TSplineEdge> edges, int fillMethod = 0, bool keepSubdCreases = false)
Fill holes in a T-spline
Flatten control points of given vertices to a single plane.
This command requires an input of at least four vertices
Flatten control points of given vertices to a single plane
which will be parallel with the given plane.
This command requires an input of at least four vertices
Inverts the normals of all faces in the mesh.
Forward interpolation moves control points to their parametric locations on the surface. Reverse interpolation generates a point on the surface for each original control point and moves this control point to its corresponding surface point.
Set all knot intervals uniform.
public TSplineSurface MergeEdges(IEnumerable<TSplineEdge> firstGroup, IEnumerable<TSplineEdge> secondGroup, bool insertCreases = false)
Merge given edges. Edges in each groups should create equal counts
of continuous sets. Edges from the first group are considered as
edges of this surface. Edges from the second group can be either
from this surface or any other surface. In case of different
surfaces, combine is performed before merge
public TSplineSurface MoveVertices(IEnumerable<TSplineVertex> vertices, Vector vector, bool onSurface = false)
Move given vertices along given vector
public TSplineSurface PullVertices(IEnumerable<TSplineVertex> vertices, IEnumerable<Geometry> geometries, bool surfacePoints = true)
Take every given t-spline vertex and pull it towards the closest point
on the target geometries. If surfacePoints is true then surface point
of the vertex is pulled, control grip otherwise
Remove all reflections from the t-spline
public TSplineSurface SlideEdges(IEnumerable<TSplineEdge> edges, double amount = 0.5, double roundness = 0)
Slide given edges along neighboring edges
Standardize the t-spline to the point where exact insertion
can be performed. If it cannot be standardized, exception is thrown
with the reason
Subdivide given faces into four faces each in exact or simple mode
depending on given flag value.
Thicken TSpline surface by given distance in the direction of its face normals
Thicken TSpline surface by given vector.
Convert TSpline surface to Solid or Surface depending on shape
Convert t-spline surface to mesh. Mesh can have both triangles and quads.
Perform uncrease on given set of edges
Perform uncrease on given set of vertices
Unweld all the given edges, It will unweld each vertex on all the edges.
Unweld all the specified vertices. All edges on every vertex will be unwelded.
Find all coincident vertices and weld them together.
public TSplineSurface WeldVertices(IEnumerable<TSplineVertex> vertices, Point newPosition, bool keepSubdCreases)
Weld given list of vertices into a single vertex.
public TSplineSurface WeldVertices(IEnumerable<TSplineVertex> firstGroup, IEnumerable<TSplineVertex> secondGroup, bool keepSubdCreases = false)
Weld vertices of first and second groups pairwise.
First group is considered as vertices of this t-spline.
Second group vertices can be either from this surface or from any other.
In case of different t-splines combine is performed before the weld operation