NCF参数化建筑论坛

标题: monkey 新手问题。。。线面交点怎么求?? [打印本页]

作者: 552zxp64    时间: 2010-4-14 23:44
标题: monkey 新手问题。。。线面交点怎么求??
本帖最后由 552zxp64 于 2010-4-15 00:06 编辑

一个面与一个curve 求交点 是哪个命令?
试了半天CurveBrepIntersect总是说我类型不对啊啊啊。。。
作者: richo    时间: 2010-4-15 18:27
没有研究过,等待高人解答
作者: xdyang    时间: 2010-4-15 20:10
楼主可以试试CurveSurfaceIntersection命令
作者: tgbyhnbgt    时间: 2010-4-15 20:42
曲线-物件交集
作者: qiqiyunyan    时间: 2010-5-19 23:52
也是初学,所以不懂
作者: Tony    时间: 2010-5-25 23:38
同意3楼...
作者: tony_tsang    时间: 2010-5-27 15:19
我看了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
作者: 夜神    时间: 2010-5-28 23:45
如果要大量的做线面求交,且不在乎交点的精度,建议把曲面离散成mesh,然后抽出每个三角面片的顶点,再用几何算法计算交点。这种算法的速度比CurveSurfaceIntersection能提高差不多1~2个数量级。

p.s. 希望你的中学数学还没忘光
作者: 人子    时间: 2013-2-22 08:07
做标记做标记做标记做标记做标记做标记做标记




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2