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

    下載app免費領取會員

    NULL

    ad.jpg

    Dynamo運行時添加一個進度條

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

    網友投稿

    更多

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

    主站蜘蛛池模板: 国产视频一区二区在线播放| 日韩高清国产一区在线| 中文字幕无码一区二区三区本日| 亚洲一区二区在线视频| 人妻互换精品一区二区| 久久无码人妻一区二区三区午夜| 国产情侣一区二区| 亚洲欧美日韩一区二区三区在线| 国产午夜精品一区二区三区漫画| 一级毛片完整版免费播放一区 | 乱色精品无码一区二区国产盗| 国产一区麻豆剧传媒果冻精品| 精品成人一区二区三区免费视频| 国产韩国精品一区二区三区久久| 国模少妇一区二区三区| 亚洲综合色自拍一区| 久久国产精品一区| 国产在线观看一区二区三区精品| 色精品一区二区三区| 亚洲国产一区二区三区| 激情啪啪精品一区二区| 夜夜精品无码一区二区三区| 杨幂AV污网站在线一区二区| 精品久久久久中文字幕一区| 一区二区视频免费观看| 成人午夜视频精品一区| 中文字幕精品无码一区二区三区| 国产日韩一区二区三免费高清| 一区二区三区无码视频免费福利 | 国产成人无码AV一区二区在线观看| 日本一区二区三区在线视频观看免费| 精品亚洲福利一区二区| 一区二区三区四区无限乱码| 久久久久久一区国产精品| 国产成人无码AV一区二区在线观看| 国产成人久久精品一区二区三区| 人妻少妇久久中文字幕一区二区 | 亚洲熟妇无码一区二区三区| 久久久国产精品无码一区二区三区 | 中文字幕一区二区三区免费视频| 成人影片一区免费观看|