Revit 二次开发 异常:Curve must be in the plane Parameter name: curve

博客探讨了在绘制详图线时遇到的'Curvemustbeintheplane'异常,解释了该异常产生的原因——线段必须在同一个XY平面内。通过代码示例展示了如何在Revit中创建详图线,并强调Revit会自动将所有线段置于同一XY平面。同时,文章通过实例说明了线段端点Z值一致的重要性。

 

画详图线的时候有时候会出现异常Curve must be in the plane Parameter name: curve。

看这异常的意思,是线段必需在平面内,那这是为什么呢?

这是因为,详图线是画在XY平面上的,其中只有X,Y轴是有效的,如果Start点和End点的Z值不一样,那实际上Start点和End点就构成了两个平行于XY平面的平面,由Start点和End点定义的线段就横跨了这两个平面,所以才会抛出这个异常。其实这个异常的意思是线段必需在XY平面内,当然这个平面不一定是处于原点的XY平面(Z值为0),只要平行于XY平面的平面都是可以的,这就要求Start点和End点的Z值必需一致。

再深处一点,我们来探究以下的情况,看代码:

//由min和max定义一个BoundingBoxXYZ
min = new XYZ(-1, -1, -1);
max = new XYZ(1, 1, 1);

//再由定义的BoundingBoxXYZ画投影到XY平面上的线框
//线1
XYZ xyzStart = min;
XYZ xyzEnd = new XYZ(max.X, min.Y, min.Z);
DrawLine(sheet, xyzStart, xyzEnd);

//线2
xyzStart = min;
xyzEnd = new XYZ(min.X, max.Y, min.Z);
DrawLine(sheet, xyzStart, xyzEnd);

//线3
xyzStart = max;
xyzEnd = new XYZ(min.X, max.Y, max.Z);
DrawLine(sheet, xyzStart, xyzEnd);

//线4
xyzStart = max;
xyzEnd = new XYZ(max.X, min.Y, max.Z);
DrawLine(sheet, xyzStart, xyzEnd);

由上面代码可看到,线1和线2是画在Z值为-1的XY平面上,线3和线4是来在Z值为1的XY平面上。生成的效果如下图:

上图中,选中的线段就是线1,当我们把其拖住上下移动,左右两条线的长度是会跟着变化的。所以其实Revit在生成详图线的时候,会自动把所有线都生成在一个XY平面中。

查看线1的左右端点的坐标值,如下图:

 其Z值都是0,所以,Revit在生成详图线的时候,会自动把所有线都生成在处于原点的XY平面中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值