完善主體資料,免費贈送VIP會員!
    * 主體類型
    * 企業名稱
    * 信用代碼
    * 所在行業
    * 企業規模
    * 所在職位
    * 姓名
    * 所在行業
    * 學歷
    * 工作性質
    請先選擇行業
    您還可以選擇以下福利:
    行業福利,領完即止!

    下載app免費領取會員

    NULL

    ad.jpg

    Dynamo運行時添加一個進度條

    發布于:2021-06-30 11:45:13
    首頁/技術分享/Dynamo
    收藏
    6661

    網友投稿

    更多

    本文來自“BIM的樂趣”的“九哥BIMer”

    你好,我是九哥~

    今天呢,我們來玩個不一樣的,給我們的Dynamo程序,添加一個進度條,如下圖所示:

    01.gif

    本次教程不詳細講解這個如何實現的了,給大家一個用Python寫好的窗體,你只需要在自己的程序里直接調用即可使用,然后我會在接下來的幾篇文章中,給大家講解一下如何在Dynamo中使用WindowsForm繪制窗體。

    本次教程,就給大家介紹下,如何將這個進度條加入到自己的程序中,雖然并不是特別準確的顯示程序進度,但是也能有個大概提示。

    首先,新建一個PythonScript節點,把我提供的代碼復制進去作為模塊使用。

    附件下載:

    Dynamo運行時添加一個進度條.zip

    文章開始的動圖,是通過1到10000的計數,簡單實現了一個進度條,代碼如下:


    #示例代碼:

    importsys

    importclr

    importSystem

    clr.AddReference('ProtoGeometry')

    fromAutodesk.DesignScript.Geometryimport*

     

    ProgressBarUtils=IN[0]

    pgb=ProgressBarUtils()

    lstProcessing=list(range(10000))

    out=[]

    withpgb.MyProgressBroadcaster(len(lstProcessing),"BIM的樂趣")asbroadcaster:

    foriinlstProcessing:

    #你自己程序的核心代碼

    #

    #通過EventHook增加進度條

    broadcaster.onChange.next_p()

    OUT=out


    這里的進度條是通過模塊里寫好的一個計數器實現的,我們直接通過broadcaster.onChange.next_p()方法與你自己的程序掛鉤,來增加進度條顯示。

    接下來我們用一個簡單的小例子介紹要具體用法,我們簡單創建一系列點,然后在指定點出放置族:

    02.gif

    如上所示,我們在指定點處放置族,套用了上面的示例代碼,融合了在指定點處放置族的代碼,可以實現一個簡單的帶進度條的程序,代碼如下:

    03.png

    import sys

    import clr

    import System

     

    clr.AddReference("RevitServices")

    clr.AddReference("RevitNodes")

    import RevitServices

    from RevitServices.Persistence import DocumentManager

    from RevitServices.Transactions import TransactionManager

    doc =  DocumentManager.Instance.CurrentDBDocument

     

    import Revit

    clr.ImportExtensions(Revit.Elements)

    clr.ImportExtensions(Revit.GeometryConversion)

     

    clr.AddReference("RevitAPI")

    from Autodesk.Revit.DB import *

     

    famType = UnwrapElement(IN[0])

    pts = IN[1]

    if not isinstance(pts, list):

      pts = UnwrapElement([pts])

    else:

      pts = UnwrapElement(pts)

     

    ProgressBarUtils = IN[2]

    pgb = ProgressBarUtils()

     

    elems = []

    elemlist = []

    with pgb.MyProgressBroadcaster(len(pts), "種樹進度條") as broadcaster:

      TransactionManager.Instance.EnsureInTransaction(doc)

      for pt in pts:

        #你自己的程序操作邏輯

        if famType.IsActive == False:

          famType.Activate()

        elems = doc.Create.NewFamilyInstance(pt.ToRevitType(), famType, Structure.StructuralType.NonStructural)

        elemlist.append(elems.ToDSType(True))

        #通過EventHook增加進度條

        broadcaster.onChange.next_p()

      TransactionManager.Instance.TransactionTaskDone()

     

    OUT = elemlist

    本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

    未標題-1.jpg

    上一篇:Revit應用和刪除填充圖案

    下一篇:Revit石材幕墻建模解決方案——“材質分割”(一)

    主站蜘蛛池模板: 一区二区三区免费精品视频| 成人区人妻精品一区二区三区| 亚洲图片一区二区| 人妻体内射精一区二区三区 | 亚洲国产情侣一区二区三区| 国产在线视频一区二区三区| 国产精品视频一区二区三区| 亚洲一区二区三区免费| 精品国产a∨无码一区二区三区| 亚洲色精品vr一区二区三区| 一区二区三区福利| 人妻无码一区二区三区| 八戒久久精品一区二区三区| 糖心vlog精品一区二区三区| 国产一区二区女内射| 在线|一区二区三区四区| 精品一区二区三区免费毛片爱 | 日韩精品一区二区三区国语自制 | 日本精品视频一区二区| 色偷偷av一区二区三区| 高清国产AV一区二区三区| 国产福利电影一区二区三区久久久久成人精品综合| 国产精品一区二区不卡| 亚洲av乱码一区二区三区按摩| 中文字幕一区视频| 91精品乱码一区二区三区| 久久伊人精品一区二区三区| 无码毛片视频一区二区本码| 精品中文字幕一区在线| 一区二区三区精品高清视频免费在线播放 | 国产成人高清亚洲一区91| 日本精品一区二区在线播放| 韩国精品一区视频在线播放| 后入内射国产一区二区| 亚洲免费一区二区| 无码欧精品亚洲日韩一区| 国产乱人伦精品一区二区| 国产伦精品一区二区三区免.费 | 无码日本电影一区二区网站| 日本高清一区二区三区| 日韩精品一区二区三区中文字幕 |