Grasshopper二次開發(fā)秘技-在vs中調(diào)試ghpython程序

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)該更加不成問題。

忍者狗.gif

眾所周知,在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ò)誤有多么痛苦。

貓吞槍.jpg

好在經(jīng)過作者一番英勇探索,終于解決了這個(gè)難題,下面逐步說明:

開始之前,首先要裝好visual studio,且要包含python模塊,作者是直接裝了一個(gè)vs2019,直接自帶python。
1首先打開vs,創(chuàng)建一個(gè)新的Iron Python項(xiàng)目,將其命名為GHPythonDebug。

k1.png

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

k2.png

3回到正文,將以下代碼輸入文檔內(nèi)并保存

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>為版本號(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è)都勾選。

k3.png
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í)用到的電池如圖:

k4.png
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)擊附加。

k5.png

如果這時(shí)候沒有出錯(cuò),那么恭喜你!接下來你就可以在vs里面調(diào)試ghpython啦!添加斷點(diǎn),添加監(jiān)視……有vs就是可以為所欲為!

掃描下方二維碼關(guān)注公眾號(hào)“建筑結(jié)構(gòu)參數(shù)化”,后臺(tái)回復(fù)“調(diào)試”獲取文中提到的代碼及電池文件。

捕獲.png
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

21
14