社区
Revit,Navisworks建筑施工BIM讨论区
欢迎访问欧特克Revit, Navisworks论坛!分享知识,发帖提问,浏览论坛热帖。
取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

二次开发,如何获取两根线的重叠部分的线?

7 条回复7
回复
1 条消息(共 8 条)
b134679258123
1281 次查看, 7 条回复

二次开发,如何获取两根线的重叠部分的线?

两个Curve对象之间重叠部分,该如何获取?

微信截图_20221229151806.png

如图中红色的线便是重叠的。有没有官方提供api方法?

标签 (3)
7 条回复7
2 条消息(共 8 条)

参考一下这个是否是你需要的

https://www.revitapidocs.com/2015/90e86110-9bce-6e43-c18a-4d67380008bb.htm

CONG XU
您认为此帖子是否有用?欢迎为此帖点赞。
您的问题是否已得到解答?请点击“接受解答”按钮。

EESignature


- BIM THE FUTURE - 
3 条消息(共 8 条)

感谢回复。这个我知道,可以通过这个api判断是否有重叠,可却无法获取重叠的数据,如返回一个新的Curve对象或XYZ集合等。

4 条消息(共 8 条)

按照上面的图两个curve,如果判断二者重叠,那么想要得到的数据不就是其中的一个curve吗

CONG XU
您认为此帖子是否有用?欢迎为此帖点赞。
您的问题是否已得到解答?请点击“接受解答”按钮。

EESignature


- BIM THE FUTURE - 
5 条消息(共 8 条)

Curve的Intersect另一个重载方法:

public SetComparisonResult Intersect(
	Curve curve,
	out IntersectionResultArray resultArray
)

IntersectionResultArray里就是你要的重叠数据。 

6 条消息(共 8 条)

返回枚举是Equal,但是 IntersectionResultArray 返回的是null。
7 条消息(共 8 条)

你好,

 

我也尝试了:

line1:Line.CreateBound(new XYZ(0, 0, 0), new XYZ(100, 0, 0))

line2:Line.CreateBound(new XYZ(40, 0, 0), new XYZ(90, 0, 0))

的Intersect情况,确实为equal,IntersectionResultArray为null。

 

我认为RevitAPI是将两个Bound Curve同线的这种情况视为Equal。(Subset与Superset要求至少有一个为unBound Curve)。这种情况重叠部分数据可以直接通过Length比较拿到较短的那个curve。

 

建议官方最好再释义下。这个例子是很好的Example。@jing_shen 

8 条消息(共 8 条)

谢谢梁老师😊





Jing Shen
Community Coordinator



找不到想要的内容?向社区提问或分享您的知识。

到论坛发帖  

”