本文主要研究一種簡(jiǎn)單高效的方法來(lái)存儲(chǔ)復(fù)雜的CAD符號(hào)到數(shù)據(jù)庫(kù)格式中。這在需要從CAD轉(zhuǎn)為GIS再轉(zhuǎn)換回CAD、并且要求保留之前的符號(hào)和文本(或注記)時(shí)會(huì)有幫助。以下為具體操作步驟。
最常見(jiàn)的兩種CAD格式,Microstation?DGN?DWG都有著各自的符號(hào),這些符號(hào)通過(guò)很多屬性來(lái)定義。在數(shù)據(jù)庫(kù)中要?jiǎng)?chuàng)建表格字段來(lái)存儲(chǔ)這所有的屬性會(huì)很耗時(shí),但是絕大部分屬性都需要保留下來(lái),用于寫回CAD的時(shí)候需要。此外,為了表現(xiàn)CAD特征,FME會(huì)另外增加格式屬性,所以數(shù)據(jù)庫(kù)中的表很可能還需要更新。
還有一種選擇就是將每個(gè)需要存儲(chǔ)的格式屬性打包放進(jìn)一個(gè)blob字段中,在寫回為CAD時(shí)可以解壓出來(lái)。
FME函數(shù)@SupplyAttributes(可通過(guò)轉(zhuǎn)換器FunctionCaller調(diào)用)具有一種功能,可以將要素的所有屬性放在一個(gè)單獨(dú)的屬性中,該屬性的名稱結(jié)構(gòu)為name:value:name:value:name:value:以此類推。@SupplyAttributes也可以將這些挑選的屬性不返回到原始屬性中,然而一旦選擇,@SupplyAttributes會(huì)選擇所有的屬性,包括那些不需要的屬性字段。
自定義轉(zhuǎn)換器PackAttributes(通過(guò)FME?Store獲取)使用了一個(gè)PythonCaller來(lái)選擇要素屬性到@SupplyAttributes函數(shù)中,同時(shí)允許你通過(guò)設(shè)置過(guò)濾器,對(duì)要選擇的屬性設(shè)置前綴。這樣一來(lái),如果想要只存儲(chǔ)DGN文件中所有的格式屬性、同時(shí)舍棄所有的用戶屬性和FME屬性,可以將在過(guò)濾器中將前綴設(shè)置為"igds_".同理,對(duì)于DWG文件來(lái)說(shuō),前綴設(shè)置為"aCAD_"
工作空間DGNToSqlite和SqliteToDGN演示了如何實(shí)現(xiàn)這一過(guò)程:
DGNToSqlite中讀取Microstation?DGN文件MajorRoads.dgn,使用PackAttributes選擇格式屬性到一個(gè)新的屬性"igds_packed"中,然后將幾何對(duì)象和選擇的屬性寫出到Sqlite?Spatial。
SqliteToDGN讀取Sqlite表,使用轉(zhuǎn)換器FunctionCaller中的函數(shù)@SupplyAttributes來(lái)重新存儲(chǔ)返回到要素上的屬性,然后寫出到一個(gè)新的DGN文件中。
所有的這些符號(hào)都是來(lái)自MajorRoads.DGN,包括多線和自定義線型,都重新存儲(chǔ)到新的文件中。
這種存儲(chǔ)CAD屬性的方法是可持續(xù)的。未來(lái)的FME版本中添加的任何額外格式屬性都可以自動(dòng)包含進(jìn)來(lái),因?yàn)樘砑恿烁袷角熬Y,而且不需要對(duì)任何一張表做修改。
如果你想處理本機(jī)上的CAD數(shù)據(jù),存儲(chǔ)在數(shù)據(jù)庫(kù)中,那么就需要將本地的屬性提取出來(lái)分別存儲(chǔ)到字段中。最簡(jiǎn)單的方法就是重新命名這些屬性。
通過(guò)以上的操作,就能快速實(shí)現(xiàn)在數(shù)據(jù)庫(kù)格式中保留CAD的符號(hào)和文本,簡(jiǎn)單高效,大大節(jié)約了設(shè)計(jì)師的工作效率。安裝浩辰CAD軟件試試吧。更多CAD教程技巧,可關(guān)注浩辰CAD官網(wǎng)進(jìn)行查看。
2025-01-07
2023-12-28
2023-11-01
2023-10-30
2019-10-12
2019-09-04
2019-08-13
2019-08-08
2019-08-01
2019-07-30
2019-07-30
2019-07-22