python 读取鼠标选中文本_【插件开发】【python】Package

e54241b5caff4cdc5448466ad4e1e314.png

今天介绍的这个插件叫Package,其功能和cluster类似,可以将一堆电池打包成单个电池并保存成user object。区别在于使用的时候会自动炸开出现里面的内容。

使用效果见动图,首先选中要打包的电池电池(包括group和注释),然后点击create按钮,就会自动弹出创建user object界面。另外两个输入口,pivot决定了电池组拖进GH画布上的位置,默认用的是选中电池组的中心,可以连接任意电池来改变定位点。refer是为了方便userobject的创建,可以把相连的电池信息作为创建userobject的默认信息,输入和输出端效果相同。

e423075f664ae1a3977fa9e604f402e3.gif

做这个插件的主要动机之一是应对graph mapper,preview这类需要交互,所以没法在cluster中起作用的电池。另一个主要的用途是为提供默认参数和范围,方便操作。Metahopper中其实有一个几乎一样的功能,save snappit,但不知为何我经常无法使用,所以只好自己实现一个。

下载:

https://www.food4rhino.com/resource/package

或者

链接: https://pan.baidu.com/s/1GV3593qxsAwE5ziCjUp8QA 提取码: thev


接下来我稍微解释一下插件工作细节,方便对实现感兴趣的人理解代码。

复制粘贴在gh中是很常规的操作,所以大家用的时候可能不会细想这是怎么实现的。复制了gh电池后,如果ctrl+v到其他文本编辑器里,你会发现是记录了电池类型,位置等数据的xml格式文本,当在gh中使用ctrl+v时,gh文档读取了这个xml文本并且将其转化为电池组。

所以这个插件实现的原理是:把选中的电池组序列化成xml文档,保存到这个电池中,一同写入user object。userobject被放到gh文档中时,在重新把之前保存的电池组粘贴到GH文档内,然后这个电池再把自己删掉。为了方便用了一点小hack,让这个电池本体就实现了这个功能。

GH_IO

https://www.grasshopper3d.com/forum/topics/example-on-how-to-use-gh-io-dll

电池组的序列化和反序列化,即生成/读取对应的xml文本,以及文档的新建,读取,合并等操作,主要都是由GH_IO.dll实现,在C#中可以直接using GH_IO,但在python中先得clr.AddReference("GH_IO.dll")之后才能调用。

224757304d016a3fe765e33014bae2ba.png

UndoRecord

https://www.grasshopper3d.com/forum/topics/ins-and-outs-of-undo?commentId=2985220%3AComment%3A1446088

在gh里用ctrl+z,ctrl+y可以撤销重做命令,但是用代码直接往文档加入/删除电池的操作是不会被记录下来的,这时候如果不小心用了ctrl+z可能会报错,所以需要开发者自己处理UndoRecord。

虽然这个插件实现的功能很简单,不过涉及到很多GH SDK底层操作,除了上面特意提的两点,电池输入输出端数据读取,Gh运行机制,param和component的属性区别,还有windows窗体控件等,一起说很麻烦,今后有机会我会把相关内容单独分出来再说。


如果你完全看不懂上面在说什么也不用担心,上面这部分内容对于学习使用GH而言完全没有用处……不过先别急着取关,之后我会发一些更实用性的内容,一个是GH基础的学习,像是电池基本应用和理解数据结构的案例和tips;然后再进阶一点的,参数化建模思路,结合一些实用插件比如human,做地形生成,路网/建筑生成等应用;再高级一点就是ghpython,C#插件开发以及Rhinocommon,grasshopper sdk的相关内容,这部分我也学的很碎,就当抛砖引玉了。还有其他一些我感兴趣的主题,像是数据挖掘与机器学习,建筑性能模拟与形态优化,还有processing/arduino之类的工作,有机会的话,也会和大家分享一下。希望之后可以做到一个月两更吧。

大家要是有什么想了解得内容,欢迎留言建议

要是觉得有帮助记得点赞支持一下~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值