Element.Curves is to be used on Elements to extract their curves. For example if you feed in a wall, each wall is based on a base curve. You can “probably” get that curve using this node.
CurveElement.Curve is to be used on a Model Line or Detail Line to extract its underlying geometry curve.
CurveElement.ElementCurveReference is a reference to the previously mentioned geometry curve of a Model Line for example. References are used for things like dimensions. To make a Dimension in Revit you don’t attach it to the geometry as the UI might make you believe but actually to the reference of that curves geometry.
Does that make more sense?
why I extract a curve from a model line instead of using this line ?
in some tutorials they use Element.Curves after they pick a line from revit file and can’t understand why not using the picked line directly.
Because when you select an object in a model its being cast to its base class, which in this case is Element. Element in itself is not geometry, its a container for geometry so what you do by using Element.Curve is you take that curve geometry from that container and now you can use it to do other things with it.
But without converting the element to Element.Curve I can divide the line with points at parameters and working with the selected line, which type of works I can’t do without using Element.Curve process?
Can you help me here ? @Thomas_Mahon
@Konrad_K_Sobon has given a solid answer: its to do with classes. Revit curves are not the same as Dynamo curves as they use independent geometry engines. In your case, the respective curves have to be cast from one type to another for interoperability. The Element.Curve casts a Revit curve into a Dynamo curve so you can use all of the nodes delivered by Dynamo.
The only way you have been able to divide a curve from Revit in Dynamo directly is by using the Revit node library (
DividedPath.ByCurveAndDivisions) in a Family document, like a Conceptual Mass. But this is a pretty restrictive workflow.
If you want access to the full range of methods (nodes) available in the Dynamo Geometry library, including all of the Core functions, you need to convert the Revit curve to a Dynamo curve…using Element.Curve