(请参阅下面的评论以获取答案)我有一个经过严格测试(我认为)的程序,它使用:
Options options = new Options();
AnalyticalModel model = Source_Beam.GetAnalyticalModel() as AnalyticalModel; ;
Curve Curvy = model.GetCurve();
XYZ End1 = Curvy.GetEndPoint(0); XYZ End2 = Curvy.GetEndPoint(1);
这曾经工作得很好,但现在在一个项目中使用它(与以前使用的相同系列的梁),当它尝试执行“Curvy.GetEndPoint(0)”时它失败了。
我得到的错误是“Revit 遇到 System.NullReferenceException:对象引用未设置为任何对象的实例。”
当然,这很奇怪,因为 Element Source_Beam 肯定是一个梁,它知道如何从中获取分析模型,并且编译器很乐意允许“model.GetCurve()”。
请注意,我在尝试修补错误第一次失败后添加了“as AnalyticalModel”,因为我在网上看到了一个添加该代码的示例——无论是否进行强制转换,它都会失败。正如我所提到的,该程序已在使用完全相同的梁族的测试项目中使用。
有谁知道我的现实世界项目中是否有一些设置禁用了 GetAnalyticalModel 的功能,或者可能是一种更好的方法来简单地获取光束的定义起点/终点?