NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14614|回复: 8
打印 上一主题 下一主题

[工作记录] monkey 新手问题。。。线面交点怎么求??

[复制链接]
跳转到指定楼层
1m
发表于 2010-4-14 23:44:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 552zxp64 于 2010-4-15 00:06 编辑

一个面与一个curve 求交点 是哪个命令?
试了半天CurveBrepIntersect总是说我类型不对啊啊啊。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2010-4-15 18:27:22 | 只看该作者
没有研究过,等待高人解答
3m
发表于 2010-4-15 20:10:21 | 只看该作者
楼主可以试试CurveSurfaceIntersection命令

评分

参与人数 1强度 +3 照度 +22 收起 理由
tony_tsang + 3 + 22

查看全部评分

4m
发表于 2010-4-15 20:42:39 | 只看该作者
曲线-物件交集
5m
发表于 2010-5-19 23:52:28 | 只看该作者
也是初学,所以不懂
6m
发表于 2010-5-25 23:38:03 | 只看该作者
同意3楼...
7m
发表于 2010-5-27 15:19:02 | 只看该作者
我看了help可以直接用。
Sub CSX()

Const rhObjectCurve = 4

Const rhObjectSurface = 8

Dim strCurve, strSurface, arrCSX

strCurve = Rhino.GetObject("Select curve", rhObjectCurve)

If IsNull(strCurve) Or Rhino.IsCurve(strCurve) = False Then Exit Sub

strSurface = Rhino.GetObject("Select surface", rhObjectSurface)

If IsNull(strSurface) Or Rhino.IsSurface(strSurface) = False Then Exit Sub

arrCSX = Rhino.CurveSurfaceIntersection(strCurve, strSurface)

If Not IsArray(arrCSX) Then

Rhino.Print "Curve and surface do not intersect."

Exit Sub

End If

For i = 0 To UBound(arrCSX)

If arrCSX(i,0) = 1 Then

Rhino.Print "Point"

Rhino.Print "Intersection point on curve: " & Rhino.Pt2Str(arrCSX(i,1))

Rhino.Print "Intersection point on surface: " & Rhino.Pt2Str(arrCSX(i,3))

Rhino.Print "Curve parameter: " & CStr(arrCSX(i,5))

Rhino.Print "Surface parameter: " & CStr(arrCSX(i,7)) & "," & CStr(arrCSX(i,8))

Else

Rhino.Print "Overlap"

Rhino.Print "Intersection start point on curve: " & Rhino.Pt2Str(arrCSX(i,1))

Rhino.Print "Intersection end point on curve: " & Rhino.Pt2Str(arrCSX(i,2))

Rhino.Print "Intersection start point on surface: " & Rhino.Pt2Str(arrCSX(i,3))

Rhino.Print "Intersection end point on surface: " & Rhino.Pt2Str(arrCSX(i,4))

Rhino.Print "Curve parameter range: " & CStr(arrCSX(i,5)) & " to " & CStr(arrCSX(i,6))

Rhino.Print "Surface parameter range: " & CStr(arrCSX(i,7)) & "," & CStr(arrCSX(i,8)) & " to " &  CStr(arrCSX(i,9)) & "," & CStr(arrCSX(i,10))

End If

Next

End Sub
8m
发表于 2010-5-28 23:45:32 | 只看该作者
如果要大量的做线面求交,且不在乎交点的精度,建议把曲面离散成mesh,然后抽出每个三角面片的顶点,再用几何算法计算交点。这种算法的速度比CurveSurfaceIntersection能提高差不多1~2个数量级。

p.s. 希望你的中学数学还没忘光

评分

参与人数 1强度 +2 照度 +24 收起 理由
tony_tsang + 2 + 24 我很赞同

查看全部评分

9m
发表于 2013-2-22 08:07:51 | 只看该作者
做标记做标记做标记做标记做标记做标记做标记

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-6 01:01 , Processed in 0.258961 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表