Grasshopper二次开发秘技-在vs中调试ghpython程序

rhino官方提供了基于Rhino WIP的ghpython调试方法,苦逼作者还是win7系统,装不上Rhino WIP,经过一番探索,总算是在rhino6上走通了vs调试ghpython这条路。因此本文的所有操作是基于Rhino6,如果Rhino6都会了,Rhino WIP应该更加不成问题。

忍者狗.gif

众所周知,在grasshopper中用ghpython做开发可以说是极其方便,python的各种优势与rhino gh强强联合,对rhino来说可以说是如虎添翼。然而grasshopper中一个小小的ghpython电池能提供的调试,代码缩进等功能那是相当有限,真正用过的人都知道在这里调整缩进、print定位错误有多么痛苦。

猫吞枪.jpg

好在经过作者一番英勇探索,终于解决了这个难题,下面逐步说明:

开始之前,首先要装好visual studio,且要包含python模块,作者是直接装了一个vs2019,直接自带python。
1首先打开vs,创建一个新的Iron Python项目,将其命名为GHPythonDebug。

k1.png

2然后选择:调试-选项-Python-调试,勾选“使用旧版调试程序”。

k2.png

3回到正文,将以下代码输入文档内并保存

importsys
# This is the path where the Visual Studio Python modules are locate.
# Change to your own:
loc = r'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\Python\Core'
if loc notinsys.path:
     sys.path.append(loc)
importptvsd
ifnotptvsd.is_attached():
     #set up secret, address and port for ptvsd
     ptvsd.enable_attach(secret = 'dev', address = ('localhost', 2020))
     ptvsd.wait_for_attach() #in order for GH to wait for the process to be attached
4找到vs自带的ptvsd模块所在目录。对于vs2019和2017,该目录为: %ProgramFiles(x86)%\Microsoft Visual Studio Common7\IDE\Extensions\Microsoft\Python \ Core 其中<< em="">VS_Version>为版本号如2019, 为版本类型,如Enterprise Community, Professional。找到之后复制该路径,替换代码中loc的定义为该值。
5启动犀牛6,输入_EditPythonScript命令,点Tools-Options,点Script Engine,两个都勾选。

k3.png
6,进入Grasshopper,拖进来一个新的ghpython电池,右键勾选“ Show Code”选项。此时电池的左边会出现一个code输入口。

7拖入一个panel,将 GHPythonDebug.py 所在路径输入其中,然后输入filepath电池,filepath电池再连接Read file电池,,再连接一个作者自编的ghpython转换器电池(其实就3句代码),将文件内容转换成代码字符串。此时用到的电池如图:

k4.png
8 将转换器电池输出的代码连接到第6步拖进来的ghpython电池的code接口 上,注意注意!此时gh会冻结住,陷入假死状态,因为它要等待ptvsd模块来与它链接,千万不要关闭它。

9回到vs中,依次选择调试-附加到进程,其中“连接类型”选择Python远程(ptvsd),连接目标填tcp://dev@localhost:2020/,细心的同学可能已经注意到了,这里dev和2020都是上面代码里面定义好的,比如图中我就用了其它的文字和端口号。然后勾选左下角“显示所有用户进程”,点刷新,会看到出现IronPython2.7.8这样的标题的一项,此时点击附加。

k5.png

如果这时候没有出错,那么恭喜你!接下来你就可以在vs里面调试ghpython啦!添加断点,添加监视……有vs就是可以为所欲为!

扫描下方二维码关注公众号“建筑结构参数化”,后台回复“调试”获取文中提到的代码及电池文件。

捕获.png
登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

21
14