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

    下載app免費領取會員

    NULL

    ad.jpg

    Dynamo讀取選擇框PickBox剪裁Revit視圖

    發布于:2021-06-15 14:28:40
    首頁/技術分享/Dynamo
    收藏
    8052

    網友投稿

    更多

      前幾天群里有小伙伴發了一張動態圖,是通過鼠標拖拽框選范圍,自動剪裁平面視圖,覺得這個可以寫篇文章,于是就和小伙伴商量了下,把源文件要過來了,整理成今天這篇文章,感謝群里的小伙伴——J.W

    同時我會分享我寫的另一種方法

    由于我比較懶,所以呢,我就簡單把小伙伴的代碼邏輯給大家說下(詳細講,估計一篇文章下不來,小伙伴們見諒哈~):

    首先,這里用到的是View下的GetCropRegionShapeManager方法,用來管理剪裁框的形狀:

    圖片.png

    然后我們點擊

    ViewCropRegionShapeManager,就能跳轉到對應的Class,進而找到其對應的方法:

    圖片.png

    詳細的方法如下:

    圖片.png

      這里需要的是一個CurveLoop,那么就簡單了,我們只需要給一組曲線就好了。

            然后這里還有一個點,就是獲取選擇框的輪廓,用到了PickBox這個方法。而動態圖中的第一步,是框選操作,這必然會用到UI.Selection下的方法:


    之后就是通過一系列的自定義函數,將PickBox的最大和最小點,投影到平面上,在通過平面點,構造出一個矩形框,最后將整個舉行框,應用給CropBox即可,這里我就不詳述了,小伙伴們可以自己去測試哈~

     這里需要選擇一種PickBoxStyle,只有三個枚舉,隨便選一個理論上就可以,因為我們用到的只是box。

    圖片.png

    之后就是通過一系列的自定義函數,將PickBox的最大和最小點,投影到平面上,在通過平面點,構造出一個矩形框,最后將整個舉行框,應用給CropBox即可,這里我就不詳述了,小伙伴們可以自己去測試哈~

    接下來,講講我寫的這段代碼的邏輯:

            在看小伙伴這個程序的時候,我看到View下的CrowBox屬性是可get可set的,這個在我們前面文章里是講過的,這種是可讀又可設置的屬性,如果通過這個來剪裁視圖,那應該會很簡單,于是我就自己嘗試了下:

    圖片.png

    可以看出,get和set的,都是一個BoundingBoxXYZ,那么我們只需要根據PickBox重新構造一個BoundingBoxXYZ應該就是可以的。

            接下來就開始整理我們的代碼:

            首先,獲取選擇框的方法一樣,只是用法略有不同,我是直接獲取PickBox的最大和最小點,然后重新構造一個BoundingBoxXYZ,方法如下:

    圖片.png

     然后將這個新的BoundingBoxXYZ更新給原來的CropBox即可,似乎到這里就完事兒。

            但是實際操作下來,不知道為什么出了一個問題,總是提示Box為空,但是我獲取Box的屬性,確顯示不為空,沒搞明白為什么。

    圖片.png

     不過好在,在胡亂弄了幾次以后,發現,先將新生成的BoundingBoxXYZ過繼給Dynamo,之后再重新過繼回給Revit,這個問題就解決了,可能是這個API有些問題吧,就先湊合用了~

            然后在反復測試的時候,還發現一個問題,就是如果之前已經剪裁過的視圖,會出現剪裁框位置錯誤的情況,又查了下,在ViewCropRegionShapeManager方法下,有一個刪除剪裁框的方法,那么我就在程序里添加了兩行代碼,保證程序不會出錯。

    圖片.png


















































    # Copyright(c) 2019, 九哥BIMerimport clrimport sysclr.AddReference('ProtoGeometry')from Autodesk.DesignScript.Geometry import *
    clr.AddReference('RevitAPI')import Autodeskfrom Autodesk.Revit.DB import *
    clr.AddReference("RevitNodes")import Revitclr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference('RevitServices')import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom RevitServices.Transactions import TransactionManager
    clr.AddReference('RevitAPIUI')from Autodesk.Revit.UI import *
    doc = DocumentManager.Instance.CurrentDBDocumentuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocumentview = doc.ActiveView
    pboxS = Autodesk.Revit.UI.Selection.PickBoxStyle.EnclosingpickedBox = uidoc.Selection.PickBox(pboxS, "框選范圍框")minPoint = pickedBox.MinmaxPoint = pickedBox.Max
    t = Transaction(doc, "剪裁視圖")t.Start()
    newbox = BoundingBoxXYZ()newbox.Min = minPointnewbox.Max = maxPointnewbox = newbox.ToProtoType()newbox = newbox.ToRevitType()
    view.CropBoxActive = Trueview.CropBoxVisible = TrueshapeManager = view.GetCropRegionShapeManager()shapeManager.RemoveCropRegionShape()view.CropBox = newbox
    t.Commit()
    OUT= view

    當然如果你用的是Revit2022和Dynamo2.10,那么就更簡單了,你只需要獲取PickBox并構造一個BoundingBoxXYZ即可,其他的都有現成節點了,就不再詳細介紹了,直接附上截圖和代碼:

    圖片.png

    # Copyright(c) 2019, 九哥BIMerdoc = DocumentManager.Instance.CurrentDBDocumentuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocumentview = uidoc.ActiveView
    pboxS=Autodesk.Revit.UI.Selection.PickBoxStyle.EnclosingpickedBox = uidoc.Selection.PickBox(pboxS, "框選范圍框")
    newbox = BoundingBoxXYZ()newbox.Min = pickedBox.Minnewbox.Max = pickedBox.Max
    OUT= view,newbox.ToProtoType()

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

    未標題-1.jpg

    上一篇:Revit房間相關操作(七)

    下一篇:Revit房間相關操作(八)

    主站蜘蛛池模板: 四虎一区二区成人免费影院网址| 国产美女口爆吞精一区二区| 中文字幕一区二区三区在线播放| 久久久91精品国产一区二区三区| 日本一区二区三区精品视频| 在线观看午夜亚洲一区| 无码欧精品亚洲日韩一区夜夜嗨 | 国产精品视频免费一区二区三区| 国产精品va无码一区二区| 亚洲国产精品成人一区| 精品国产一区二区麻豆| 无码精品不卡一区二区三区| 亚洲电影唐人社一区二区| 精品一区二区久久| 国产成人一区二区三区在线| 一区二区三区免费在线视频| 日韩精品无码久久一区二区三| 日韩精品福利视频一区二区三区| 国产欧美一区二区精品仙草咪| 国产大秀视频在线一区二区| 99久久精品日本一区二区免费| 中文字幕一区二区三匹| 亚洲综合av一区二区三区| 亚洲日韩AV一区二区三区四区| 国产一区二区三区乱码网站| 亚洲愉拍一区二区三区| 亲子乱av一区区三区40岁| 亚无码乱人伦一区二区| 日韩福利视频一区| 一区二区三区四区在线播放 | 69久久精品无码一区二区| 亚洲一区二区电影| 交换国产精品视频一区| 爆乳无码AV一区二区三区 | 国产免费一区二区三区VR | 亚洲一区二区三区免费视频| 在线精品亚洲一区二区| 日本福利一区二区| 亚洲性日韩精品国产一区二区| 国产福利电影一区二区三区,亚洲国模精品一区 | 呦系列视频一区二区三区|