rhino官方提供了基于Rhino WIP的ghpython調(diào)試方法,苦逼作者還是win7系統(tǒng),裝不上Rhino WIP,經(jīng)過一番探索,總算是在rhino6上走通了vs調(diào)試ghpython這條路。因此本文的所有操作是基于Rhino6,如果Rhino6都會(huì)了,Rhino WIP應(yīng)該更加不成問題。

眾所周知,在grasshopper中用ghpython做開發(fā)可以說是極其方便,python的各種優(yōu)勢與rhino gh強(qiáng)強(qiáng)聯(lián)合,對rhino來說可以說是如虎添翼。然而grasshopper中一個(gè)小小的ghpython電池能提供的調(diào)試,代碼縮進(jìn)等功能那是相當(dāng)有限,真正用過的人都知道在這里調(diào)整縮進(jìn)、print定位錯(cuò)誤有多么痛苦。

好在經(jīng)過作者一番英勇探索,終于解決了這個(gè)難題,下面逐步說明:
開始之前,首先要裝好visual studio,且要包含python模塊,作者是直接裝了一個(gè)vs2019,直接自帶python。
1首先打開vs,創(chuàng)建一個(gè)新的Iron Python項(xiàng)目,將其命名為GHPythonDebug。

2然后選擇:調(diào)試-選項(xiàng)-Python-調(diào)試,勾選“使用舊版調(diào)試程序”。

# This is the path where the Visual Studio Python modules are locate.
loc = r'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\Python\Core'
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>為版本號(hào)如2019,
為版本類型,如Enterprise Community, Professional。找到之后復(fù)制該路徑,替換代碼中l(wèi)oc的定義為該值。
5啟動(dòng)犀牛6,輸入_EditPythonScript命令,點(diǎn)Tools-Options,點(diǎn)Script Engine,兩個(gè)都勾選。
6,進(jìn)入Grasshopper,拖進(jìn)來一個(gè)新的ghpython電池,右鍵勾選“
Show Code”選項(xiàng)。此時(shí)電池的左邊會(huì)出現(xiàn)一個(gè)code輸入口。
7拖入一個(gè)panel,將
GHPythonDebug.py 所在路徑輸入其中,然后輸入filepath電池,filepath電池再連接Read file電池,,再連接一個(gè)作者自編的ghpython轉(zhuǎn)換器電池(其實(shí)就3句代碼),將文件內(nèi)容轉(zhuǎn)換成代碼字符串。此時(shí)用到的電池如圖:
8 將轉(zhuǎn)換器電池輸出的代碼連接到第6步拖進(jìn)來的ghpython電池的code接口 上,注意注意!此時(shí)gh會(huì)凍結(jié)住,陷入假死狀態(tài),因?yàn)樗却齪tvsd模塊來與它鏈接,千萬不要關(guān)閉它。
9回到vs中,依次選擇調(diào)試-附加到進(jìn)程,其中“連接類型”選擇Python遠(yuǎn)程(ptvsd),連接目標(biāo)填tcp://dev@localhost:2020/,細(xì)心的同學(xué)可能已經(jīng)注意到了,這里dev和2020都是上面代碼里面定義好的,比如圖中我就用了其它的文字和端口號(hào)。然后勾選左下角“顯示所有用戶進(jìn)程”,點(diǎn)刷新,會(huì)看到出現(xiàn)IronPython2.7.8這樣的標(biāo)題的一項(xiàng),此時(shí)點(diǎn)擊附加。

如果這時(shí)候沒有出錯(cuò),那么恭喜你!接下來你就可以在vs里面調(diào)試ghpython啦!添加斷點(diǎn),添加監(jiān)視……有vs就是可以為所欲為!
掃描下方二維碼關(guān)注公眾號(hào)“建筑結(jié)構(gòu)參數(shù)化”,后臺(tái)回復(fù)“調(diào)試”獲取文中提到的代碼及電池文件。