日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python和revit_pyRevit系列教程1

發布時間:2023/12/20 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python和revit_pyRevit系列教程1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有沒有人和我一樣,想要自己寫一些小功能來用(zhuang)用(bi),但苦于C#太難學了,不得不作罷。

話說感受過Python的美好,怎么能忍受C#的大括號!畢竟

人生苦短,我用Python!

好吧,我承認是我智商不夠才學不好C#的~

那么,問題來了,如果想要強行zhuangbi怎么辦?記得以前給大家推薦過一款可以在Revit中使用Python寫代碼的東西叫RevitPythonShell 今天再推薦一款叫pyRevit的插件。姑娘的室內BIM公眾號之前介紹過,并且介紹了pyRevit中的一個小工具的使用:創建填充圖案。點我查看!

什么是pyRevit

pyRevit is an IronPython script library for Revit. However, it is not really written as an example library. It is a working set of tools fully written in IronPython that explores the power of scripting for Revit and also adds some cool functionality.

有人會說,上面一串英文是什么鬼,那是pyRevit作者介紹pyRevit的一段,翻譯過來大致是說:

pyRevit 是為Revit寫的IronPython腳本庫。然而它并不僅僅是作為一個示例的庫。同時他還包含一系列完全使用IronPython寫的工具,使用這些工具可以發掘在Revit中編寫腳本的力量,同時pyRevit還添加了一些很酷的功能。

點我查看pyRevit博客

使用它你可以編寫自己的小插件并加入到pyRevit中,這樣pyRevit會自動為你的工具添加按鈕還有圖標到Revit工具欄中,像下圖這樣,當然你得按照pyRevit要求的格式。

pyRevit

pyRevit有youtube頻道,作者錄了一系列關于pyRevit的使用教程,包含pyRevit中帶的所有工具的使用方法,以及其他一些基礎知識,正在持續更新中,我之前已經把目前有的所有視頻下載下來并共享了,我會持續關注并下載,有興趣的同學可以進 壹匹BIM 的群下載:580176296

如何使用pyRevit

接下來我會就以下幾點來講解:

安裝,更新,卸載

自帶工具使用

pyRevit工具的組成

添加自己的工具

1.安裝,更新,卸載

安裝:

自動安裝:

下載安裝包(地址)

雙擊安裝包pyRevitSetup.exe,程序會自動下載所需文件,并自動添加到Revit中,重啟Revit即可看到。

因為自動安裝是在線安裝,實際上安裝包只是一個下載器,由于眾所周知的原因, 下載速度會很慢,只要耐心等待即可

手動安裝:

到github下載壓縮包(地址)單擊右側中部的綠色按鈕Clone or download然后點擊Download ZIP將壓縮包下載到本地電腦

然后解壓進入release文件夾右鍵install_addin.bat文件以管理員身份運行

還有一種下載的方式,首先下載GitKraken

安裝完GitKraken后運行,選擇File>Clone Repo在彈出窗口單擊右側Browse按鈕選擇要克隆的文件夾地址(也就是你要下載存放的文件夾),URL填入https://github.com/eirannejad/pyRevit

單擊Clone the repo!

安裝同上面方法

更新:

如果安裝的時候是自動安裝,可再次運行安裝文件覆蓋安裝

手動從GitHub安裝的話,到release文件夾下運行upgrade.bat

使用GitKraken下載安裝的話,可進入GitKraken軟件更新,關于GitKraken如何使用請查看相關文檔,在此不表。

在pyRevit中點擊Update更新

update

卸載

像其他軟件一樣卸載,進入控制面板操作

進入release文件夾下運行uninstall_addin.bat

3.pyRevit工具的組成

一個pyRevit工具的是由Python模塊和自定義代碼組成

Python模塊分為普通的IronPython模塊和和Revit相關的模塊,普通的IronPython模塊存放在pylib文件夾內,Revit相關模塊存放在pyrevitlib下,比如我之前推薦過的RevirPythonWrapper現在也是pyRevit的內置模塊,它也在這個文件夾下。當然你也可以把你想用的模塊添加到這兩個文件夾下。

自定義代碼是指你自己寫的python腳本,按照一定格式組織起來的一個文件夾,通過它pyRevit可以自動為你在Revit中生成按鈕,點擊按鈕就會執行你寫的代碼。

4.添加自己的工具

每個pyRevit小工具是一個固定格式的文件夾,包含.py代碼文件和一個icon.png圖標文件組成。

你可以通過查看pyRevit自帶的工具來學習如何寫自己的工具,自帶的工具在pyRevit安裝路徑下的extensions文件夾下,或者你可以通過在Revit中按住shift然后鼠標左鍵點擊任意一個pyRevit中的工具圖標,即可打開當前工具的路徑。

想要添加自己的工具,分為兩步:

建立工具包文件夾,并添加到pyRevit中,盡量放到其他路徑而不是放在pyRevit文件夾中。

切換到pyRevit面板下

單擊最左側pyRevit在彈出的面板點擊Settings

在Custom user extension folders下單擊Add folder按鈕添加路徑。

文件夾

按指定格式組織文件夾及編寫腳本。

編寫工具

一個工具包的文件夾層級應為下面這樣:

文件層級

標簽名稱.tab,此為標簽文件夾,標簽名稱為Revit中顯示的標簽名稱。此文件夾下可包含多個.panel文件夾。如上圖的pyRevit.tab

面板名稱.panel,此為面板文件夾,面板名稱為下方顯示的面板名稱。如上圖的Drawing Set.panel

工具包名稱.工具包類型,此為最后一個層級目錄,pyRevit會將此轉換為包含一組工具的按鈕顯示,工具包類型有pulldown,.splitbutton,.splitpushbutton,.splitpushbutton等。如上圖的Print.pulldown

工具名稱.工具類型,此為工具的核心,即此工具的核心代碼所在的文件夾,如上圖的Print Linked Sheets.pushbutton

一個命令或者工具所在文件夾是以以下格式命名:命令名稱.命令類型

像下面這樣:

工具命名

最常見的類型就是.pushbutton

工具包文件夾的組成

工具包文件夾可包含不同類型的工具文件夾,但以下幾個是通用的:

icon.png,圖標文件,顯示在Revit中的圖標。

lib,改包內所有工具可使用的Python模塊文件夾,我們之前說過模塊可以放到pyRevit中的一些文件夾,這里也可以放到此文件夾中,只需要新建一個lib子文件夾即可。

_layout,這是個文本文件,在里面可定義該組工具在Revit中的顯示順序。

下面是一個_layout文件示例:

PushButton A

PushButton B

PullDown A

---

PullDown B

Stack3 A

>>>

PushButton C

PullDown C

其中---表示創建分割線,你也可以使用超過三個的-。

>>>表示在次符號后所有的工均隱藏,即點擊面板名稱右側下拉小三角才會顯示。當然也可以使用超過三個的>

.pushbutton文件夾的組成

Match命令文件夾組成:

MATH組成

每個命令文件夾中必須包含使用Python或者C#編寫的腳本或叫代碼文件。

script.py或者script.cs,這是用Python編寫或者C#的腳本,也就是你的工具核心代碼,當單擊Revit中圖標后將會執行此文件中的代碼。

icon.png,此為圖標文件,顯示在Revit中,無此文件則不顯示圖標。

config.py,此為設置文件,當按住shift點擊按鈕后會運行此文件,如果有此文件,則pyRevit會在相應的按鈕邊顯示大黑點,具體可查看pyRevit中帶的Match工具。

lib,此為Python模塊所在的文件夾,只有當前工具可訪問。

類型

可包含類型

.tab

.panel

.panel

除了.panel和.tab

.pulldown

僅工具類型,如.pushbutton

.splitbutton

僅工具類型,如.pushbutton

.splitpushbutton

僅工具類型,如.pushbutton

.stack2

工具、.pulldown,.splitbutton,.splitpushbutton

.stack3

同上

下面是pyRevit的所有文件夾類型:

類型

可包含類型

.tab

.panel

.panel

除了.panel和.tab

.pulldown

僅工具類型,如.pushbutton

.splitbutton

僅工具類型,如.pushbutton

.splitpushbutton

僅工具類型,如.pushbutton

.stack2

工具、.pulldown,.splitbutton,.splitpushbutton

.stack3

同上

pyRevit中還有一些高級的工具類型:

.smartbutton-它也包含script.py,其中需定義一個固定名稱的函數__selfinit__,該函數定義的作用是:在啟動的時候,先自動執行此函數,讓此按鈕進行初始化一些條件(比如根據狀態設置圖標)__selfinit__函數運行成功必須返回True失敗必須返回False,如果返回False或者該函數運行出錯,那么pyRevit則不會創建此按鈕。

.linkbutton-它可以調用其他插件的功能,需要在script.py定義兩個參數:

__assembly__ = '插件名'

__commandclass__ = '該命令的Class名'

比如調用RevitPythonShell的命令:

__assembly__ = 'RevitPythonShell'

__commandclass__ = 'IronPythonConsoleCommand'

編寫小工具示例:

下面我們將通過一個簡單的小工具來演示如何編寫并添加到Revit中。該工具可以復制選擇元素的族類型。效果如下圖:

組織好文件夾結構。這里我使用的是.pulldown文件夾結構如下:F:\壹匹BIM工具包\WH.extension\WhiteHorse.tab\管理.panel\族.pulldown,在此文件夾下新建子文件夾復制類型.pushbutton,若想顯示圖標則需要放入一個icon.png文件,大小建議為32X32

復制類型.pushbutton內新建一個script.py并放置圖標文件,名稱為icon.png大小32X32

編寫script.py內的代碼,本例的代碼如下:

# coding:utf-8

# __doc__的作用是顯示工具說明

__doc__ = '復制選定元素的類型'

# __author__是作者

__author__ = '白馬'

# 從RevitPythonWrapper導入需要的模塊

from rpw import db, revit, ui, DB

# 定義一個函數

def copy(element):

pre_name = element.Name

type_id = element.GetTypeId()

name = ui.forms.TextInput("壹匹BIM", pre_name+'-副本', "請輸入名稱:")

with db.Transaction('復制類型') as t:

DB.ElementType.Duplicate(revit.doc.GetElement(type_id),name)

# 如果在Revit中預先選擇了元素則獲取選擇的元素

element = ui.Selection().elements

# 判斷是否選擇了元素

if element:

# 如果選擇的元素為一個,則執行復制操作,否則警告

if len(element) == 1:

copy(element[0])

else:

ui.forms.Alert("只可選擇一個元素","警告")

else:# 如果沒選擇元素則讓用戶選擇

picker = ui.Pick()

try:

ui.forms.Alert("接下來請選擇元素","提示")

element = picker.pick_element("選擇要復制類型的元素").get_element()

copy(element)

except:# 如果用戶未選擇元素則彈窗警告

ui.forms.Alert("未選擇元素","警告")

還差最后一步,到pyRevit中點擊左側的Reload按鈕,然后就會在Revit中看到你的工具了,是不是很簡單。

-----END-----

總結

以上是生活随笔為你收集整理的python和revit_pyRevit系列教程1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。