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

    下載app免費領取會員

    NULL

    ad.jpg

    Dynamo運行時添加一個進度條

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

    網友投稿

    更多

    本文來自“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无码免费一区二区三区| 色噜噜狠狠一区二区三区| 日本一区二区三区在线视频| 亚洲一区二区三区深夜天堂| 亚洲国产日韩一区高清在线| 岛国精品一区免费视频在线观看| 无码日本电影一区二区网站| 久久久久人妻精品一区| 亚洲日韩精品一区二区三区| 久久久久国产一区二区| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 成人免费视频一区| 国产福利91精品一区二区| 一区二区在线电影| 色欲精品国产一区二区三区AV| 人妻少妇精品一区二区三区| 国产一区二区视频在线播放| 久久久99精品一区二区| 亲子乱av一区二区三区| 精品一区二区三区免费| 无码人妻AV免费一区二区三区| 久久国产免费一区二区三区| 一区二区三区国产精品 | 国产成人av一区二区三区不卡| 亚洲高清一区二区三区 | 国产在线aaa片一区二区99| 国产精品被窝福利一区| 少妇无码AV无码一区| 国产激情无码一区二区app| 亚洲综合一区二区国产精品| 亚洲一区二区影视| 无码丰满熟妇浪潮一区二区AV| 色精品一区二区三区| 97久久精品午夜一区二区| 日韩AV无码久久一区二区| 91视频一区二区三区| 国产精品美女一区二区| 中文字幕一区日韩在线视频|