NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10323|回复: 9
打印 上一主题 下一主题

[在线求助] vb运算器script基础中的疑问!

[复制链接]
跳转到指定楼层
1m
发表于 2012-2-28 17:35:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 多吃水果蔬菜 于 2012-2-28 21:57 编辑

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

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

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


刚接触vb运算器不久,编写脚本处于起步阶段,还望高手们指教!嘿嘿!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2012-2-28 18:21:11 | 只看该作者
on3dpoint 不是一样可以用吗?
3m
 楼主| 发表于 2012-2-28 20:59:32 | 只看该作者
本帖最后由 多吃水果蔬菜 于 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
4m
发表于 2012-2-29 12:10:21 | 只看该作者
不错的问题 期待回答
5m
发表于 2012-2-29 13:27:00 | 只看该作者
先问一下 头像照片是你本人吗? 哈哈哈~~~ VB。net 或 c# 在 GH新版本 没有放弃以前旧版本的 里面也有 旧版本存在的 没有 去掉 可以用以前的版本VB。net 或 c#   。。。 新本版的那些新名字 可以在 rhino 帮助 和GH帮助手续 里参考啊 ~~~  官网有下。。。  旧的 也有下的~~~~ 加油啦~~~最后 如果头像照片是你本人 我可以帮你的更多 哈哈哈~~~~
6m
发表于 2012-3-1 03:34:55 | 只看该作者
on3dPointArray是opennurbs里面的 想用吗 可以啊 加载opennurbs。net就行 gh文件夹中就有一个
但是你输出不能装箱~ 所以还得写类来转化为List<Point3d>
7m
发表于 2012-3-1 03:36:27 | 只看该作者
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后的正确写法
8m
 楼主| 发表于 2012-3-1 21:50:43 | 只看该作者
本帖最后由 多吃水果蔬菜 于 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
9m
发表于 2012-3-2 22:48:54 | 只看该作者
不错的帖子!!!
10m
 楼主| 发表于 2012-3-4 18:37:34 | 只看该作者
快来人啊!!啊啊!

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

GMT+8, 2024-5-11 18:23 , Processed in 0.104073 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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