Message 1 of 4
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I can use the following code to pick a Face:
var pickedObject = uidoc.Selection.PickObject(ObjectType.Face, "Select a face");
var element = doc.GetElement(pickedObject);
var face = element.GetGeometryObjectFromReference(pickedObject) as Face;
But I can't use the following code to pick a ModelLine:
var pickedObject = uidoc.Selection.PickObject(ObjectType.Element, "Select a curve");
var element = doc.GetElement(pickedObject);
var modelLine = element.GetGeometryObjectFromReference(pickedObject) as ModelLine;
The last line reports an error: "Cannot convert type 'Autodesk.Revit.DB.GeometryObject' to 'ModelLine' via a built-in conversion".
If I change the cast on the last line to Curve, it doesn't complain, but it doesn't work.
I checked some of the types and this is the result:
var pickedObject = uidoc.Selection.PickObject(ObjectType.Element, "Select a curve");
var element = doc.GetElement(pickedObject);
Debug.Print(element.GetType().Name);
// output: ModelLine
var geometryObject = element.GetGeometryObjectFromReference(pickedObject);
Debug.Print(geometryObject.GetType().Name);
// output: GeometryElement
var curve = geometryObject as Curve;
// curve is null
Solved! Go to Solution.