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

    下載app免費領取會員

    NULL

    ad.jpg

    Dynamo運行時添加一個進度條

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

    網友投稿

    更多

    本文來自“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石材幕墻建模解決方案——“材質分割”(一)

    主站蜘蛛池模板: 日韩一区二区久久久久久| 99精品一区二区三区无码吞精| 精品国产精品久久一区免费式 | 无码日韩精品一区二区免费暖暖 | 无码人妻精品一区二区三区蜜桃| 亚洲熟女综合一区二区三区| 亚洲日本一区二区一本一道| 日本视频一区在线观看免费| 日产一区日产2区| 精品一区二区91| 久久久精品人妻一区二区三区蜜桃| 夜夜爽一区二区三区精品| 亚洲AV无码一区二区大桥未久| 果冻传媒董小宛一区二区| 成人区人妻精品一区二区三区 | 一区二区三区精品高清视频免费在线播放 | 国产SUV精品一区二区88| 国语精品一区二区三区| 日本一区二区三区免费高清在线| 亚洲熟妇无码一区二区三区| 日韩人妻不卡一区二区三区| 91一区二区三区| 亚洲日本一区二区一本一道 | 日韩精品无码免费一区二区三区 | 亚洲欧洲专线一区| 91福利视频一区| 亚洲一区二区中文| 香蕉久久av一区二区三区| 国产AV午夜精品一区二区三| 国产在线不卡一区二区三区 | 精品国产一区二区三区久久| 中文字幕一区二区三区免费视频| 日本一区午夜爱爱| 免费人妻精品一区二区三区| 美女福利视频一区二区| 国产一区二区三区四| 国产一区二区免费在线| 精品无码中出一区二区| 国产成人一区二区三区电影网站| 极品人妻少妇一区二区三区| 自拍日韩亚洲一区在线|