其他賬號登錄: 注冊 登錄
柏慕聯(lián)創(chuàng)BIM技術(shù)服務

點亮建筑新夢想

LIGHT BUILDING NEW DREAM

企業(yè)BIM定制培訓服務經(jīng)典案例
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(一)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(二)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(三)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(四)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(五)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(一)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(二)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(三)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(一)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(二)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(一)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(二)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(四)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(五)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(一)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(二)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(三)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(四)

BIMBOX | 自動批量建族?nèng它!

 二維碼
作者:BIMBOX來源:BIMBOX網(wǎng)址:https://bimbox.top/3901.html

你好,這里是BIMBOX。

今天是臨時加餐,分享一個很有意思的教程給你,是我們和一位小伙伴兩個通宵的成果。

它能解決一個很麻煩的問題,更重要的是它能啟發(fā)大家的思路:怎樣用盡量簡單的自動化,幫助我們?nèi)プ瞿切┲貜涂菰锏墓ぷ鳌?/strong>

事情的緣由是這樣的。

還記得@Vctcn93嗎?那個跟我們一起合作,出了《Dynamo信息可視化腳本實戰(zhàn)》的Dynamo小神仙。

最近他一直在琢磨怎么通過Python編程和Dynamo帶來更高的生產(chǎn)力,也經(jīng)常在群里和大家探討,回答教程問題,已經(jīng)成了群寵。

上周三,在我們的BIMBOX萊茵河清流群里,小伙伴@Null提問,對于大量形狀類似、尺寸不同的族,有沒有辦法快速的建出來。

Vctcn93回答說,生成多個類似的族是有規(guī)律的,可以用Dynamo來實現(xiàn)。也有小伙伴提出,可以通過參數(shù)化建族來搞定,但用Dynamo能打開更多的思路。

于是,Vctcn93就和Null要來了圖紙,答應大家周末抽空把節(jié)點和教程給寫出來。

不過,在叫了對方好幾聲哥們之后,經(jīng)@開開提醒,Null是女生,事情的發(fā)展又比預想的迅猛很多

周六一早,我就收到了Vctcn93的微信,一看時間是凌晨五點發(fā)來的。本來答應周末慢慢搞的事,居然搞了個通宵。

盡管他和我說,主要是因為本來覺得很簡單的一個腳本,越琢磨越有意思,好玩的知識點很多,于是越寫越興奮,這才搞了8個小時。

但我還是不相信,這和對方是個妹子沒關(guān)系。

咳咳。Anyway,Vctcn93找到我,說他覺得挖出來的知識點很有趣,單獨發(fā)群里有點浪費,問我是否愿意發(fā)文分享給大家。

我問他,這個教程你想收費嗎?

他不好意思地說:「等我出大點的教程吧,畢竟我也窮。不過這個教程挺小的,等我異化出更牛逼的東西來,再做成視頻教程。」

我仔細看了一下他的思路,確實很有啟發(fā)。于是答應下來,拿出時間把他的思路和成果整理成大家更容易閱讀的文章,免費分享給所有人看。

這份教程中涉及到一些Dynamo的基礎知識,以及幾段Python代碼,如果你暫時搞不明白原理,也不影響閱讀今天的文章,我們會在代碼處加入中文說明。

暫時不想做,也可以花十幾分鐘讀一遍,重點看看思路,領略一下Dynamo和Python的自動化之美,以及用自動化解決重復問題時那種靈光乍現(xiàn)的酸爽。

如果你希望徹底搞明白背后的原理,我們會在文末給出更詳細的學習鏈接,以及我們與Vctcn93的分享計劃。還有,我們送出的三瓶紅酒。

下面正式開始——

01 自適應族的拓撲關(guān)系


首先你需要掌握一點基礎知識。

Revit 中有一個十分強大族類型——自適應構(gòu)件(Adaptive Component),一般多用于處理幕墻相關(guān)的問題。

我們先到 Revit 中制作一個簡單的自適應族,來搞清楚自適應構(gòu)件的原理。

? 打開 Revit 2018,新建一個 自適應構(gòu)件 族。

? 在面板中找到 點圖元 工具,并且添加四個點。

? 全選點,然后點擊上部面板下的 使之自適應 按鈕。

它們就變成了這個樣子:

? 使用線工具,并打開 三維捕捉。

? 依照 上方的序號(index),依次鏈接各點。

? 選中全部的線,點擊 創(chuàng)建實體形狀

這時,我們就成功創(chuàng)建了一個簡單的 自適應嵌板。

左側(cè)的屬性欄可以調(diào)整厚度。

? 保存一下,新建一個項目,把建立的族加載進項目中,只要給定任意的四個點(按順序點擊四下),就能得到依照點生成的嵌板。

以上就是制作一個簡單自適應族的過程。

想要弄清楚點擊四下的時候發(fā)生了什么,我們先要了解一個圖形學名詞 ——拓撲關(guān)系(Topological Relation)

拓撲關(guān)系是圖形學中的常用概念,本質(zhì)就是把各種圖形,抽象簡化為各個點之間的關(guān)系。有了這些基本的關(guān)系,我們則不需要在乎它繪制出來究竟是什么形狀。

比如正方形、梯形、四邊形、菱形等等,盡管在形狀上有很多不同,但是在拓撲的視角看,這些點都滿足依次使點成環(huán)的關(guān)系,它們是拓撲等價的。

我們在制作 自適應族構(gòu)件的過程中,有一個重點操作叫使之自適應,它的作用是記錄各個點的位置、順序、誰與誰相連等拓撲關(guān)系

這時每個點都會生成一個序號,它將記錄自己在這一拓撲關(guān)系中的順序。

當我們使用線將各個點連接起來的時候,這個點就會記錄下另外哪兩個點和自己相連,而它不會在乎這兩個點在空間中的什么位置。

這些順序和連接關(guān)系就是預先保留在族里的默認信息。

我們在使用這個族的時候,點擊四下,這個操作是告訴Revit預先設定的四個點的空間坐標,它們是我們使用族的輸入信息。

族在項目里最終呈現(xiàn)什么狀態(tài),就是下面的公式:

族的輸出狀態(tài)=預設定默認信息+使用時的輸入信息

而我們想要讓族「自動化」,就是盡量多的解決默認信息,從而減少輸入信息的工作量。

在這個族里,輸入信息的重點在于順序,它決定了點的序號,決定了誰去找誰連線,決定了拓撲關(guān)系,從而決定了最終的形狀。

想讓 Dynamo 來代替我們放正確的 自適應族 的時候,一定要保證輸入的點順序是正確的。

02 Dynamo中的強大節(jié)點


在 Dynamo 中,有一個使用自適應族的強大節(jié)點:

AdaptiveComponents.ByPoints

這個節(jié)點有兩個輸入,第一個是points , 一個二維數(shù)組的點。

第二個是familyType ,它是自適應族的類別。

結(jié)合我們剛剛所學的拓撲關(guān)系知識,我們來模擬與理解一下這個節(jié)點的輸入要求。

假設我們有一個需要四個點生成的自適應嵌板,則我們先來模擬建立點的二維數(shù)組,下面的代碼你不懂python也能大概看懂:

points = [

    [

        Point.ByCoordinates(0, 0, 0),

        Point.ByCoordinates(1000, 0, 0),

        Point.ByCoordinates(1000, 1000, 0),

        Point.ByCoordinates(0, 1000, 0)

    ],

    [

        Point.ByCoordinates(1000, 0, 0),

        Point.ByCoordinates(2000, 0, 0),

        Point.ByCoordinates(2000, 1000, 0),

        Point.ByCoordinates(1000, 1000, 0)

    ],

    [

        Point.ByCoordinates(2000, 0, 0),

        Point.ByCoordinates(3000, 0, 0),

        Point.ByCoordinates(3000, 1000, 0),

        Point.ByCoordinates(2000, 1000, 0)

    ]

];

這段代碼,Dynamo 中的 CodeBlockPython 都可以直讀,結(jié)果會生成一個 點陣(Points Array)。

在上面的 points數(shù)組(List)中,每一個元素都是一個小數(shù)組,每個小數(shù)組里又包含了四個點。

這四個點,就是我們所需要每生成一塊嵌板所需要的點,點的順序則是我們在 Revit 界面中放置嵌板的點擊順序。

我們把數(shù)據(jù)點陣和族類型Family Types連接到AdaptiveComponents.ByPoints這個節(jié)點上。

依照上面的點數(shù)據(jù),Dynamo 便會依照每一個嵌板的輸入點,生成 3個 自適應嵌板。在Dynamo 中看不見族的加載結(jié)果,我們得切換回 Revit 界面中才能看到。

有多少個 points 數(shù)據(jù),將決定我們生成多少塊玻璃嵌板,嵌板中的點,即是嵌板的拓撲關(guān)系,Dynamo 將根據(jù)這四個點的位置順序,把嵌板放進去。

這就是在AdaptiveComponents.ByPoints節(jié)點中發(fā)生的事情,也是 Dynamo 要求輸入這種數(shù)據(jù)結(jié)構(gòu)的原因。

順序非常關(guān)鍵。

正確地抽象我們要的形狀,把抽象所得的點正確地排序與組合,是我們在使用這個節(jié)點之前的關(guān)鍵操作。

03 解決問題


@Null在群里的問題是,怎樣建出多個形狀類似的窗族。

為了降低難度,我將把她的圖簡化為方方正正的矩形,制作的時候也先暫時忽略尺寸,我們需要根據(jù)這個矩形,來運用一下剛剛所學到的東西。

? 制作Dynamo腳本之前,我們需要先思考一下:

· 我想要那些參數(shù)?

· 未來能否擴充與異化?

· 是否有優(yōu)化效率的可能?

先來看第一個問題,對于這個簡化版的腳本,我需要的參數(shù)是:

· 每塊面板的長度

· 每塊面板的高度

· 面板的數(shù)量

? 這些參數(shù)當然不能一個個手動輸入,所以在一開始,我們就把這三個參數(shù)做成 Number Slider 節(jié)點,放置到界面的最左邊,把它們重命名,并編組為 參數(shù)調(diào)節(jié)

這里需要注意兩點:

· 單位是毫米,所以面板長度面板高度間距(step)最好以 100 為基準單位。

· 嵌板的個數(shù)必須是整數(shù),所以面板個數(shù)間距(step)一定要是整數(shù)。

? 下面,我們需要一個原點(origin),作為面板的起始位置,在這里我將使用 (0,0,0)點,你也可以設置其它原點。

? 接下來,我們要依照給定的面板長度以及面板數(shù)量,生成一個以面板長度間距(step),以面板數(shù)量為個數(shù)的數(shù)組(list),創(chuàng)造需要用到的第一組點。

此處使用 Code Block 代碼來完成:

0..#quentity..#step

? 然后把面板長度面板個數(shù)分別輸入到stepquentity兩個輸入之中,便可生成第一個數(shù)組,也就是未來各點的 x 坐標值

? 有了各點的 x 坐標值,我們便可以使用 Geometry.Translate 節(jié)點,把原點按照坐標批量生產(chǎn)。

? x軸方向搞定后,接下來以同樣的方法,把這條線上的點,依照嵌板高度,在 y 方向上做條一模一樣的出來:

到此為止,我們便制作了一個參數(shù)化、實時可調(diào)的點陣(Points Array)

? 接下來要做的就是要把生成的點陣,處理為一個按照順序、包含正確拓撲關(guān)系二維數(shù)組。

根據(jù)我們前面說的拓撲知識,輸入進 AdaptiveComponents.ByPoints 節(jié)點中的點順序,一定要正確反應嵌板的拓撲關(guān)系

比如我在使用Revit建立嵌板族的時候,點擊的順序是從左下角開始逆時針旋轉(zhuǎn):

所以,我們的點組順序,也要按照這樣的方式排列:(注意Dynamo第一個點的序號是0而不是1)。

我們將剛剛生成的兩組點,使用 List.Create 節(jié)點打包為一組數(shù)據(jù)。這樣,就可以使用 Python 處理我們的點陣了。

? 接下來就是Python 數(shù)據(jù)處理。

當然,到這一步不使用Python也可以使用,但回顧一下我們開始寫腳本之前思考的第二個問題:

· 我想要那些參數(shù)?

· 未來能否擴充與異化?

· 是否有優(yōu)化效率的可能?

雖然目前我們的數(shù)據(jù)很少、也很具體:兩條線,每條線幾十個點,我們可以用簡單的代碼把它寫出來。但是,為了日后的擴充與異化,我們一定要把代碼進一步處理成代數(shù)問題,把它抽象成 m 條線,每條線 n 個點。

在這種思路下,我們來開始寫下面的腳本。這里有點燒腦,看不懂代碼沒關(guān)系,藍色的字是中文代碼說明:

# 啟用 Python 支持和加載 DesignScript 庫

import clr

clr.AddReference(‘ProtoGeometry’)

from Autodesk.DesignScript.Geometry import *

# 該節(jié)點的輸入內(nèi)容將存儲為 IN 變量中的一個列表。

dataEnteringNode = IN

# 將代碼放在該行下面

__author__ = ‘Vctcn93’

__date__ = 20190706

__publisher__ = ‘ArchiPython’

data = IN[0]   # 將剛剛的數(shù)據(jù),賦予到變量 data 中

result = list()   # 創(chuàng)建一個用以裝載結(jié)果的空列表

for i in range(len(data) – 1):   # 遍歷每條線

    current_line = data[i]   # 當前的線

    next_line = data[i + 1]   # 下一條線

    for k in range(len(current_line) – 1):   # 拿取線上的每一個點

        node = list()   # 嵌板點組

        node.append(current_line[k])   # 添加第 0 號點

        node.append(current_line[k + 1]) # 添加第 1 號點

        node.append(next_line[k + 1])   # 添加第 2 號點

        node.append(next_line[k])   # 添加第 3 號點

        result.append(node)   # 把嵌板點組添加到結(jié)果中

# 將輸出內(nèi)容指定給 OUT 變量。

OUT = result   # 輸出結(jié)果

搞定之后,就可以在Dynamo中使用以上代碼,把點陣處理清楚了。

? 最后使用AdaptiveComponents.ByPoints 節(jié)點,在 Revit 中成功生成玻璃嵌板:

? 再來測試一下參數(shù)實時調(diào)整,所以依據(jù)面板長度面板高度、面板個數(shù)幾個參數(shù)的不同,可以有很多的結(jié)果,并且可實時變化:

我們把到此為止的成果儲存為「初始版.dyn」,下載鏈接見文末。

03 異化


到此為止,我們用Dynamo實現(xiàn)的功能還和一個嵌套陣列族差不多。

不過,每次建立一個程序,我們都要思考,能不能再它的基礎上,用抽象思維去解決更多的事?

這個操作就叫異化。

比如這個案例,可以思考一下:能不能任意形狀都能自動生成?

這里我將把上面這個腳本做一種異化,修改為根據(jù)任意 N 條 Revit 中的線,生成自適應異形幕墻。

? 首先,在 Revit 中,使用模型線工具繪制 4條 三維曲線

注意:這些線可以足夠異型,但不可以在同一標高上,這樣才能構(gòu)成正確的拓撲關(guān)系。

? 下面,我們在 Dynamo 中使用 Select Model Elements 節(jié)點,將這四條線由下至上(你看,順序真的很重要)選進 Dynamo 中。

? 接下來,再使用 Element.Geometry 的方式讓這些線在 Dynamo 中可見,且能被處理。

? 關(guān)于參數(shù)的設置,因為目前是弧線且不等長的緣故,再想讓嵌板數(shù)量嵌板長度兼得可調(diào)是不可能了,所以我們可以僅要嵌板長度這一個可調(diào)參數(shù)。

還沒完,嵌板數(shù)量也是一個很重要的參數(shù),我們該怎樣獲取呢?

這時候就要請出高等數(shù)學了!

呃,是小學數(shù)學,就是取個平均值啦

? 先算出四條線的平均長度,再使用平均長度除以嵌板長度,便是我們的嵌板數(shù)量。可是由于這個值除出來之后很有可能是小數(shù),我們可以取最接近這個值的整數(shù),作為每條邊的嵌板數(shù)量。

這一步是怎么來的呢?

你還需要明白一個重要知識點:樣條曲線的parameter。

parameter 是把樣條曲線的起點值當作 0,終點值當作 1,不管樣條曲線多長,多曲折,都具有這樣的屬性。

比如,任何一條樣條曲線中點的 parameter 都為 0.5,三分點無限趨近于 0.333 或 0.666。

知道了這樣的一個特性,那么我們想把一條樣條曲線均分為 嵌板個數(shù) 段,只要把 0 到 1 均分為長度為嵌板個數(shù)的數(shù)組就好了。

使用 Code Block 代碼:

0..1..#steps

? 再將嵌板個數(shù)輸入進 steps 中,就做到了。

? 然后再使用針對樣條曲線的節(jié)點 Curve.PointAtParameter 獲得在這些值上的點,便得到了我們需要的點陣。

? 有了這樣一個點陣,便可以使用剛剛的 Python 代碼,把這些點處理為含有正確拓撲關(guān)系點組。

剛剛編寫代碼的時候,是用的抽象方法,所以不用改一個字,就能直接讓新的腳本用上它,這就是抽象的好處。

? 最后使用 AdaptiveComponents.ByPoints 節(jié)點,就能在 Revit 中找到做好的嵌板了。

同樣,這個結(jié)果也是實時可調(diào)的,不過由于樣條曲線運算復雜,調(diào)整起來會有點卡。

我們把到此為止的成果儲存為「異化版.dyn」,下載鏈接見文末。

04 小姐姐的需求


寫到這兒有點放飛自我了,差點把小姐姐最初的需求給忘了

之前我們實現(xiàn)的是方方正正的族和奇奇怪怪的族,而這個案例最終還要解決圖紙上窗戶族兩側(cè)的三角形。

實現(xiàn)它并不復雜,也就是兩端的點有些許偏移而已。

按照我們的順序,是第一塊嵌板的最后一點,與第最后一塊嵌板的第二點。

只需要在初始版成果的基礎上,加多兩個參數(shù):左端偏移右端偏移就可以解決問題了。

? 先打開初始版.dyn,加兩個參數(shù):

? 回到我們第一次用 Python 處理完成之后的點組位置:

? 由于 Dynamo 自帶的節(jié)點更改數(shù)據(jù)十分麻煩,所以我們再請出 Python 寫一個腳本,修改目前點數(shù)組中,第一組第4點,以及最后一組第2點的值,給它們做一個偏移。

Python代碼如下:(同樣,看不懂沒關(guān)系,看看藍字中文說明了解個大概

# 啟用 Python 支持和加載 DesignScript 庫

import clr

clr.AddReference(‘ProtoGeometry’)

from Autodesk.DesignScript.Geometry import *

# 該節(jié)點的輸入內(nèi)容將存儲為 IN 變量中的一個列表。

dataEnteringNode = IN

# 將代碼放在該行下面

__author__ = ‘Vctcn93’

__date__ = 20190706

__publisher__ = ‘ArchiPython’

data = IN[0]   # 將剛剛的數(shù)據(jù),賦予到變量 data 中

left_offset = IN[1]   # 左端偏移值

right_offset = IN[2]   # 右端偏移值

point1 = data[0][3]   # 拿取第一組最后一點的點坐標

point2 = data[-1][1]   # 拿取最后一組第二點的點坐標

data[0][3] = Point.ByCoordinates(point1.X – left_offset, point1.Y, point1.Z)   # 重新創(chuàng)造偏移后的點,取代原先的點

data[-1][1] = Point.ByCoordinates(point2.X + right_offset, point2.Y, point2.Z)   # 重新創(chuàng)造偏移后的點,取代原先的點

# 將輸出內(nèi)容指定給 OUT 變量。

OUT = data   # 輸出結(jié)果

在Dynamo里形成這樣一個腳本,它有IN[0]、IN[1]、IN[2]三個預留的輸入,作用就是「輸入一組數(shù),然后修改其中的兩個,再輸出」。

隨后將我們原始點陣連接到 IN[0]; 左端偏移連接到 IN[1]; 右端偏移連接到 IN[2]。這樣就生成了我們所需要的新點陣。

? 新點陣通過AdaptiveComponents.ByPoints 節(jié)點,輸入到 Revit 中,我們便得到了左端偏移、右端偏移、嵌板個數(shù)嵌板長度、嵌板高度,這五個數(shù)值可調(diào)的參數(shù)化構(gòu)件了。

我們把最終的成果儲存為「小姐姐版.dyn」,下載鏈接見文末。

Vctcn93的教程結(jié)束了,最后來給你總結(jié)一下,說說我們的觀點。

這個教程主要幫你梳理了三個知識點:

· 拓撲關(guān)系與自適應族的概念

· 樣條曲線的 Parameter

· 如何有效地使用 Python 為自己加速



打通了這幾個思路,再遇到類似的幕墻、描述規(guī)律等問題,都不再會是難點了,也為今后參數(shù)化設計打下堅實的基礎。

這也是他為之前在知乎上免費開源寫的一系列文章《Dynamo速成大法》填的一個坑。

說起這個系列,Vctcn93已經(jīng)停止更新了,原因是本來希望做開源分享的事。結(jié)果被人抄襲,還申請了原創(chuàng)保護,維權(quán)很難,Vctcn93一氣之下就把對方還沒來得及抄襲的內(nèi)容全刪了。

截圖隱掉部分不代表BOX觀點的內(nèi)容

侵權(quán)真的會讓人傷心的。

BIMBOX長期以來對版權(quán)非常重視,既不抄襲轉(zhuǎn)發(fā),也對抄襲者絕不姑息,加上我們有強大的小伙伴們長期幫忙投訴抄襲者,Vctcn93才愿意把這篇心血之作發(fā)布在這里。

大家最終看到的這篇東西,來自于社群里每一個人的高質(zhì)量提問、不撕逼的交流氛圍、對版權(quán)的共同維護、還有小伙伴們像朋友一樣的彼此信任。

謝謝大家了。

發(fā)文多了,我們也會經(jīng)常收到這樣的評論:「你的這個不行,XXX用XXX早就實現(xiàn)了?!?/span>

我們一般對這類回復的態(tài)度是不抬杠、也不理會。

原因并非因為他說的不對,而是我們覺得,人的表達分為兩種:

第一種是告訴你「這件事我知道」;第二種是「我想告訴給你,讓你也知道。」

高水平的人,也會有低水平的分享,而我們更關(guān)注「分享」的水平。

因此,我們踐行的始終是第二種表達方法。這也是從不轉(zhuǎn)發(fā)、對投稿審核極嚴的我們愿意精編和發(fā)布這篇文章的原因。

正如Vctcn93自己所說:拒絕嘴遁,從我做起。

學習今天的教程,關(guān)于Dynamo部分如果感覺有點吃力,可以知乎搜索(一怒斷更的)「Dynamo速成大法」,也可以支持一下Vctcn93與我們共同發(fā)布的視頻教程《Dynamo信息可視化腳本實戰(zhàn)》,里面有大量基礎知識給你學習。

如果對Python感興趣,想深入學習,知乎上搜索「九章Python」,是Vctcn93寫的入門學習教程。

最近群里也常聊Python和Dynamo,網(wǎng)上動輒100G的教程資料讓人望而卻步,我們正在和Vctcn93計劃,一起做一系列的好教程,留下最有用的東西,幫大家節(jié)省時間。

當然,也會收點費,畢竟——

今天的教程完全免費,建議收藏隨時看。Vctcn93做的三個Dynamo成果也免費分享給大家,下載地址:https://pan.baidu.com/s/1sSEfsQK_VVdFzk88RZgIsw
提取碼:z808


注:

· 本文章已經(jīng)Vctcn93授權(quán),對原稿中的文本、圖片做了精排和修改,在BIMBOX公眾號、知乎專欄、騰訊開放平臺、今日頭條等平臺發(fā)布。如需轉(zhuǎn)載,請聯(lián)系BIMBOX小編。

· 但請大家知悉主要原創(chuàng)工作為Vctcn93做出,本篇原創(chuàng)已授權(quán)Vctcn93在其個人名下的平臺號轉(zhuǎn)發(fā)。

· 所有經(jīng)過我們授權(quán)的平臺轉(zhuǎn)發(fā),會在文章底部顯示本文「轉(zhuǎn)發(fā)自公眾號BIM清流BIMBOX」的鏈接,各位小伙伴們看到善意轉(zhuǎn)載的不要投訴啦~

會員登錄
登錄
其他賬號登錄:
我的資料
留言
回到頂部