C#Script编写Grasshopper电池(Value List篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

——大家好啊,坚持不咕的第一天,上期讲到slider,这期的Value List可能很多人头疼过,很多时候我们创建插件,如User Object的时候会发现无法显示出配套的string选项,对于插件来说,UI界面是致命的,这决定了以后是只有你一个人用,还是会有更多人会选择它。像早期的ladybug简直是死亡界面,我除了直接选择已设定好的电池串,从来没敢自己去连。


提示:以下是本篇文章正文内容,下面案例可供参考

一、value list介绍

请添加图片描述
——4种表现形式,默认是Dropdown List。

二、生成电池

1.User Object不方便的配套

请添加图片描述
——上述电池来源于Display-Preview的点显示模式栏&自编插件,总不能每次一个个输入吧,也没人记的得名称啊,也没时间翻文档啊,泪目。。。。。。

2.生成value list

代码如下:

private void RunScript(List<Point3d> pts, List<System.Drawing.Color> color, string mode, double size)
{
  List<string> val = new List<string>(){"ActivePoint","ArrowTail","ArrowTip","Asterisk",
          "Chevron","Circle","Clover","ControlPoint","Heart","Pin","RoundActivePoint",
          "RoundControlPoint","RoundSimple","Simple","Square","Tag","Triangle","X"};
  if (val != null)
  {
    var vList = new Grasshopper.Kernel.Special.GH_ValueList();
    // 自定义
    vList.CreateAttributes();
    vList.Name = "Choise";
    vList.NickName = "Choise";
    // 模式
    vList.ListMode = Grasshopper.Kernel.Special.GH_ValueListMode.DropDown;
    // 位置
    vList.Attributes.Pivot = new PointF((float) this.Component.Attributes.DocObject.Attributes.Bounds.Left -
                             vList.Attributes.Bounds.Width - 30,
                             (float) this.Component.Params.Input[2].Attributes.Bounds.Y);
    // 初始值为1234                           
    vList.ListItems.Clear();
    // 赋值
    for(int i = 0; i < val.Count; i++)
    {
      vList.ListItems.Add(new Grasshopper.Kernel.Special.GH_ValueListItem(val[i], i.ToString()));
    }
    vList.Description = val.Count.ToString() + " choices";
    // 生成value list
    GrasshopperDocument.AddObject(vList, false);
    // 连接
    this.Component.Params.Input[2].AddSource(vList);
    vList.ExpireSolution(true);
  }
}

请添加图片描述
——大功告成啦!!当然可以更改创建条件

if (this.Component.Params.Input[2].SourceCount == 0)
{
  //主体
}

请添加图片描述
——删除后自动重新生成。唯一的问题在于,当插件第一次拖入到画布中,会无法确定插件电池位置,默认电池在原点,这样value list也会在原点附近,不过我们可以删除value list让其再次创建至插件电池旁。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值