silent_missile wrote: ↑Wed Nov 06, 2019 3:29 am

I find help(Part.Edge) has a function: paramval = getParameterByLength(pos, [tolerance = 1e-7])

But Part.Curve is different from Part.Edge

Part.BSplineCurve has

**parameterAtDistance**.

Code: Select all

`help(Part.BSplineCurve.parameterAtDistance)`

silent_missile wrote: ↑Wed Nov 06, 2019 3:29 am

actually I'm really confused the difference among Part.Curve, Part.Edge, Part.Line, can any body clarify it?

There are 2 different groups of entities : geometry and topology.

Geometry entities are mathematical objects, like vectors, curves (bspline, bezier, circle, ellipse, line, etc) and surfaces (cone, cylinder, plane, bspline surface, etc)

They are invisible objects.

Part.Curve is the parent class of all the curves.

On the other hand, what you see in the 3D view are topology objects, like vertexes, edges, faces.

Vertexes, edges, faces are created on top of geometry objects.

The parent class of the topology objects is Shape.

There are also some aggregation of these 3 base types, like wires, compounds, shells, solids, compsolids.

Depending on your needs, you will work at the geometry level, or the topology level.

geom_object.toShape() is handy for converting a geometry obj to topology.

The other way, to go from topology to geometry, you would do :

Code: Select all

```
my_vector = aVertex.Point
my_curve = anEdge.Curve
my_surface = aFace.Surface
```

silent_missile wrote: ↑Wed Nov 06, 2019 3:29 am

By the way, is there any way to get a curve from a BSplineSurface with specific u or v?

Code: Select all

```
my_U_isocurve = aBSplineSurface.uIso(param)
my_V_isocurve = aBSplineSurface.vIso(param)
```