NCF参数化建筑论坛

标题: vb运算器script基础中的疑问! [打印本页]

作者: 多吃水果蔬菜    时间: 2012-2-28 17:35
标题: vb运算器script基础中的疑问!
本帖最后由 多吃水果蔬菜 于 2012-2-28 21:57 编辑

在以前的版本中的on3dpoint  , 现在变成了point3d;
                         on3dvictor  , 现在变成了victor3d;

   (1)那么请问以前版本中的on3dpointarray  , 在gh0.7以后的版本中,变成了什么??

  (2)有没有 查找这些变化后命令 的 方法?


刚接触vb运算器不久,编写脚本处于起步阶段,还望高手们指教!嘿嘿!
作者: 1235813    时间: 2012-2-28 18:21
on3dpoint 不是一样可以用吗?
作者: 多吃水果蔬菜    时间: 2012-2-28 20:59
本帖最后由 多吃水果蔬菜 于 2018-7-21 11:56 编辑

2# 1235813


如下是我的脚本及运算器!
(出错部位已用红色字体标记)


  Private Sub RunScript(ByVal ptSetA As List(Of Point3d), ByVal ptSetB As List(Of Point3d), ByVal divU As Integer, ByVal divV As Integer, ByRef A As Object, ByRef B As Object)

    'your code goes here…

    Dim n As Integer = 0
    Dim ptListA As New List(Of List(Of point3d))
    Dim ptListB As New List(Of List(Of point3d))
    For i As Integer=0 To divU
      Dim ptrowA As New List(Of point3d)
      Dim ptrowB As New List(Of point3d)
      For j As Integer=0 To divV
        Dim ptA As New point3d(ptrowA(n))
        Dim ptB As New point3d(ptrowB(n))
        ptRowA.Add(ptA)
        ptRowB.Add(ptB)

        n = n + 1

      Next
      ptListA.Add(ptRowA)
      ptListB.Add(ptRowB)
    Next


    For i As Integer = 0 To divU - 1 Step 2
      For j As Integer = 0 To divV - 1 Step 1
        Dim pt01A As New point3d((ptListA(i)(j) + ptListA(i)(j + 1)) / 2)
        Dim pt02A As New point3d((ptListA(i + 1)(j) + ptListB(i + 1)(j)) / 2)
        Dim pt03A As New point3d((ptListA(i + 2)(j) + ptListA(i + 2)(j + 1)) / 2)
        Dim pt04A As New point3d((ptListA(i + 1)(j) + ptListA(i + 1)(j + 1)) / 2)
        Dim dis01A As Double = pt01A.DistanceTo(pt04A)
        Dim dis02A As Double = pt03A.DistanceTo(pt04A)
        Dim vt01A As New  Vector3d((pt04A - pt01A) / dis01A)
        Dim vt02A As New  Vector3d((pt03A - pt04A) / dis02A)
        Dim pt01B As New point3d((ptListB(i)(j) + ptListB(i)(j + 1)) / 2)
        Dim pt02B As New point3d((ptListA(i + 1)(j + 1) + ptListB(i + 1)(j + 1)) / 2)
        Dim pt03B As New point3d((ptListB(i + 2)(j) + ptListB(i + 2)(j + 1)) / 2)
        Dim pt04B As New point3d((ptListB(i + 1)(j) + ptListB(i + 1)(j + 1)) / 2)
        Dim dis01B As Double = pt01B.DistanceTo(pt04B)
        Dim dis02B As Double = pt03B.DistanceTo(pt04B)
        Dim vt01B As New  Vector3d((pt04B - pt01B) / dis01B)
        Dim vt02B As New  Vector3d((pt03B - pt04B) / dis02B)


        Dim ptArrA As New pointArray3d()
        ptArrA.Append(pt01A)
        ptArrA.Append(pt02A)
        ptArrA.Append(pt03A)
        Dim intcvA As New onNurbscurve()
        intcvA = rhutil.RhinoInterpCurve(3, ptArrA, vt01A, vt02A, Nothing)
        intcvListA.Add(intcvA)


       Dim ptArrB As New on3dPointArray()
        ptArrB.Append(pt01B)
        ptArrB.Append(pt02B)
        ptArrB.Append(pt03B)
        Dim intcvB As New onNurbscurve()
        intcvB = rhutil.RhinoInterpCurve(3, ptArrB, vt01B, vt02B, Nothing)
        intcvListB.Add(intcvB)


      Next
    Next
    A = intcvListA
    B = intcvListB

  End Sub
[attach]24738[/attach]

麻烦您 和大家帮我看看,真的万分感谢!!
作者: liouchungang    时间: 2012-2-29 12:10
不错的问题 期待回答
作者: ping58972    时间: 2012-2-29 13:27
先问一下 头像照片是你本人吗? 哈哈哈~~~ VB。net 或 c# 在 GH新版本 没有放弃以前旧版本的 里面也有 旧版本存在的 没有 去掉 可以用以前的版本VB。net 或 c#   。。。 新本版的那些新名字 可以在 rhino 帮助 和GH帮助手续 里参考啊 ~~~  官网有下。。。  旧的 也有下的~~~~ 加油啦~~~最后 如果头像照片是你本人 我可以帮你的更多 哈哈哈~~~~
作者: panhao1    时间: 2012-3-1 03:34
on3dPointArray是opennurbs里面的 想用吗 可以啊 加载opennurbs。net就行 gh文件夹中就有一个
但是你输出不能装箱~ 所以还得写类来转化为List<Point3d>
作者: panhao1    时间: 2012-3-1 03:36
http://ncfchina.ning.com/profiles/blogs/6469268:BlogPost:2683

private void RunScript(Curve x, Curve y, ref object A)
{
//your code here…

On3dPoint p1 = new On3dPoint(x.PointAtStart.X, x.PointAtStart.Y, x.PointAtStart.Z);
On3dPoint p2 = new On3dPoint(x.PointAtEnd.X, x.PointAtEnd.Y, x.PointAtEnd.Z);
OnLine l1 = new OnLine(p1, p2);
p1 = new On3dPoint(y.PointAtStart.X, y.PointAtStart.Y, y.PointAtStart.Z);
p2 = new On3dPoint(y.PointAtEnd.X, y.PointAtEnd.Y, y.PointAtEnd.Z);
OnLine l2 = new OnLine(p1, p2);
A = l1.MinimumDistanceTo(l2);


}

加载opennurbs.net.dll后的正确写法
作者: 多吃水果蔬菜    时间: 2012-3-1 21:50
本帖最后由 多吃水果蔬菜 于 2012-3-1 22:03 编辑

6# panhao1

太感谢你啦! !!
有些术语还不明白啊
(1)装箱是封装命令?我在vb运算器里编辑,不是自动封装在vb运算器里?
(2)推介有相同疑问的同学可以看下这个帖子。。。:http://ncf.5d6d.com/thread-4614-1-1.html
(3)在rhino还是gh里加载?什么方式?能具体说说嘛!我的gh文件夹里没有opennurbs.net.dell谢谢啦!55555
作者: yinlu1320lu1320    时间: 2012-3-2 22:48
不错的帖子!!!
作者: 多吃水果蔬菜    时间: 2012-3-4 18:37
快来人啊!!啊啊!




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