
本發明涉及AutoCAD程序架構和ObjectARX的二次開發技術,特別涉及一種基于AutoCAD平臺提取室內分布圖紙中器件連接關系的方法。
背景技術:
:AutoCAD是美國Autodesk公司研制開發的一款計算機輔助設計軟件;是目前Windows系統中應用最廣泛、使用人數最多的CAD軟件。ObjectARX本質上是Windows系統的一個動態鏈接庫(DLL),可直接共享AutoCAD的地址空間,也可直接利用AutoCAD的核心數據結構和代碼,使得二次開發者可以直接訪問AutoCAD的數據庫結構、圖形系統以及CAD幾何造型核心。在AutoCAD平臺上繪制室內分布圖紙時,經常將一個復雜的器件圖形組合成一個圖塊,并將器件的一些信息作為屬性存在于圖塊中,圖塊的使用可提高繪制重復圖形的效率,大大減少重復性操作,節省存儲空間,便于修改AutoCAD圖紙。提取室內分布圖紙中器件之間的連接關系,需要獲得連線的起始位置和實際長度信息及其與之相連器件的唯一屬性標識及編號等信息,將這些信息壓入到自定義的容器對象中,也可將容器對象中的數據以Excel表格或其他形式提取出來。如果人工進行提取操作,工作量大,從而耗費大量的時間,且效率低下。有鑒于此,有必要提出了一種基于AutoCAD平臺提取室內分布圖紙中器件連接關系的方法,以解決上述問題。技術實現要素:本發明目的在于:解決了AutoCAD平臺下室內分布圖紙中器件連接關系的提取問題,并將結果存儲在容器對象中,便于后續的數據庫操作。本發明的技術方案是:一種基于AutoCAD平臺提取室內分布圖紙中器件連接關系的方法,其特征在于,器件在圖紙中都以圖塊的形式表示,該方法包括:步驟1、讀取并存儲連線信息:在AutoCAD平臺上打開室內分布圖紙,選定操作區域,從操作區域中獲取全部連線的起點位置ps、終點位置pe和實際長度L,創建用于存放器件連接關系的容器,并將連線起點位置ps的x軸坐標psx和y軸坐標psy及實際長度L存儲到所述容器中;步驟2、計算并獲取器件的最值點:從所述操作區域內過濾出所有器件,根據單個器件的形狀計算出器件的最小外接矩形,并記錄最小外接矩形的一對對角頂點,即獲得最小外接矩形在x軸上的最小值xmin,最大值xmax、y軸上的最小值ymin,最大值ymax,重復本步驟,獲取所有器件的最值點;步驟3、計算并獲取連線兩端相連的器件:3.1、獲取與連線起點相連的器件:對于單個器件,連線起點位置ps的x軸坐標為psx,y軸坐標為psy;1)若連線起點位置ps既不滿足xmin≤psx≤xmax也不滿足ymin≤psy≤ymax,則確定該器件與所述連線起點不相連;2)若連線起點位置ps滿足xmin≤psx≤xmax但不滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(|ymin-psy|,|ymax-psy)min3)若連線起點位置ps不滿足xmin≤psx≤xmax但滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(|xmin-psx|,|xmax-psx)min4)若連線起點位置ps即滿足xmin≤psx≤xmax也滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|xmin-psx|,|xmax-psx|)min,dymin=(|ymin-psy|,|ymax-psy|)min5)若滿足dmin<<(xmax-xmin,ymax-ymin)min,則確定該器件就是與所述連接起點相連的器件,否則說明該器件與所述連線起點不相連;重復步驟3.1,直到獲取與連線起點相連的器件;3.2、獲取與連線終點相連的器件:對于單個器件,連線終點位置pe的x軸坐標pex,y軸坐標為pey;1)若連線終點位置pe既不滿足xmin≤pex≤xmax也不滿足ymin≤pey≤ymax,則確定該器件與所述連線終點不相連;2)若連線終點位置pe滿足xmin≤pex≤xmax但不滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(|ymin-pey|,|ymax-pey|)min3)若連線終點位置pe不滿足xmin≤pex≤xmax但滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(|xmin-pex|,|xmax-pex|)min4)若連線終點位置pe即滿足xmin≤pex≤xmax也滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|xmin-pex|,|xmax-pex|)min,dymin=(|ymin-pey|,|ymax-pey|)min5)若滿足dmin<<(xmax-xmin,ymax-ymin)min,則確定該器件就是與所述連接終點相連的器件,否則說明該器件與所述連線終點不相連;重復步驟3.2,直到獲取與連線終點相連的器件;步驟4、自定義器件端口編號并存儲器件信息:通過與連線相連接的器件與原圖紙庫中的器件作對比,判定該器件是否為圖紙庫中原有的器件,若是則按照步驟4.1對器件端口進行編號,若否則按照步驟4.2對器件端口進行編號;4.1、對圖紙數據庫中原有的器件編號:對于圖紙庫中原有的器件,通過比較庫中器件基點與端口的位置,確定器件基點與各端口的相對位置關系,通過這種相對位置關系確定每個端口在圖紙中的位置,并對各個端口進行編號,編號規則為輸入端口的編號為0,以輸入端口為參考,以順時針方向對其它端口進行遞增編號;4.2、對圖紙數據庫中后添加的器件編號:1)對于所有的連線,利用步驟3中連線和器件相連接的判斷方法,通過與連線相連的器件,獲取與該器件相連接的所有連線,并記錄與該器件相連的端口點坐標;2)以最小外接矩形的中心點作為順時針旋轉的中心點O,以中心點O作一條平行于x軸的單位向量然后依次計算和的夾角,其中Ai表示第i個端口點,其中i≥1,角度范圍為0°~360°,根據夾角的大小,將各端口點通過順時針旋轉方向進行排序;3)以中心點O到器件最小外接矩形的左下角的頂點A(xmin,ymin)為起始矢量順時針旋轉,將第一個旋轉到的端口點編號為0,依次順時針旋轉對其他接口遞增編號;4.3、存儲器件信息:讀取全部連線起點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述容器中;讀取全部連線終點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述容器中。進一步地,步驟1中:在室內分布圖紙中,連線的實際長度、衰耗信息以文本的形式存放在連線周圍,從而作為連線的標注屬性信息,計算所述操作區域中的文本位置pt到所述連線的垂直距離dt,若滿足dt<ht/2,其中ht為文本的高度,則該文本中的內容是連線的標注屬性信息,從其中可獲取所述連線的實際長度L。本發明的有益效果是:本發明與現有技術在AutoCAD平臺下室內分布圖紙中器件連接關系的提取方面具有以下積極效果:能夠之間將連線的起點位置、連線的實際長度、連線兩端相連器件的唯一屬性標識及編號等信息提取出來,并將所提取的數據存儲到自定義的容器對象中,也可將容器對象中的數據以Excel表格或其他形式提取出來,極大的提高了工作效率。附圖說明圖1本發明公開的一種基于AutoCAD平臺提取室內分布圖紙中器件連接關系的流程圖;圖2本發明實施例中的二功分器的最小外接矩形;圖3本發明實施例中的二功分器的端口編號;圖4本發明實施例中的庫中后添加器件的端口編號;具體實施方式以下將參照圖1-4對本發明的具體實施方式進行說明。如圖1所示,本發明實施例提供了一種基于AutoCAD平臺提取室內分布圖紙中器件連接關系的方法,其包括以下步驟:步驟1、讀取并存儲連線信息:在AutoCAD平臺上打開室內分布圖紙,選定操作區域,從操作區域中獲取全部連線的起點位置ps、終點位置pe和實際長度L,創建用于存放器件連接關系的容器對象,并將連線起點位置ps的x軸坐標psx和y軸坐標psy及實際長度L存儲到所述容器中;步驟2、計算并獲取器件的最值點:從所述操作區域內過濾出所有器件,根據單個器件的形狀計算出器件的最小外接矩形,并記錄最小外接矩形的一對對角頂點,即獲得最小外接矩形在x軸上的最小值xmin,最大值xmax、y軸上的最小值ymin,最大值ymax,重復這一步驟,獲取所有器件的最值點;步驟3、計算并獲取連線兩端相連的器件:3.1、獲取與連線起點相連的器件:對于單個器件,所述連線起點位置ps的x軸坐標為psx,y軸坐標為psy;1)若連線起點位置ps既不滿足xmin≤psx≤xmax也不滿足ymin≤psy≤ymax,則確定該器件與所述連線起點不相連;2)若連線起點位置ps滿足xmin≤psx≤xmax但不滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(|ymin-psy|,|ymax-psy|)min3)若連線起點位置ps不滿足xmin≤psx≤xmax但滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(|xmin-psx|,|xmax-psx|)min4)若連線起點位置ps即滿足xmin≤psx≤xmax也滿足ymin≤psy≤ymax,則所述連線起點與器件最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|xmin-psx|,|xmax-psx|)min,dymin=(|ymin-psy|,|ymax-psy|)min5)若滿足dmin<<(xmax-xmin,ymax-ymin)min,則確定該器件就是與所述連接起點相連的器件,否則說明該器件與所述連線起點不相連;重復步驟3.1,直到獲取與連線起點相連的器件;3.2、獲取與連線終點相連的器件:對于單個器件,所述連線終點位置pe的x軸坐標pex,y軸坐標為pey;1)若連線終點位置pe既不滿足xmin≤pex≤xmax也不滿足ymin≤pey≤ymax,則確定該器件與所述連線終點不相連;2)若連線終點位置pe滿足xmin≤pex≤xmax但不滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(|ymin-pey|,|ymax-pey|)min3)若連線終點位置pe不滿足xmin≤pex≤xmax但滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(|xmin-pex|,|xmax-pex|)min4)若連線終點位置pe即滿足xmin≤pex≤xmax也滿足ymin≤pey≤ymax,則所述連線終點與器件最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|xmin-pex|,|xmax-pex|)min,dymin=(|ymin-pey|,|ymax-pey|)min5)若滿足dmin<<(xmax-xmin,ymax-ymin)min,則確定該器件就是與所述連接終點相連的器件,否則說明該器件與所述連線終點不相連;重復步驟3.2,直到獲取與連線終點相連的器件;步驟4、自定義器件端口編號并存儲器件信息:通過與連線相連接的器件與原圖紙庫中的器件作對比,判定該器件是否為圖紙庫中原有的器件,若是則按照步驟4(a)對器件端口進行編號,若否則按照步驟4(b)對器件端口進行編號;4.1、對圖紙數據庫中原有的器件編號:對于圖紙庫中原有的器件,通過比較庫中器件基點與端口的位置,確定器件基點與各端口的相對位置關系,通過這種相對位置關系確定每個端口在圖紙中的位置,并對各個端口進行編號,編號規則為輸入端口的編號為0,以輸入端口為參考,以順時針方向對其它端口進行遞增編號;4.2、對圖紙數據庫中后添加的器件編號:1)對于所有的連線,利用步驟3中連線和器件相連接的判斷方法,通過與連線相連的器件,獲取與該器件相連接的所有連線,并記錄與該器件相連的端口點坐標;2)以最小外接矩形的中心點作為順時針旋轉的中心點O,以中心點O作一條平行于x軸的單位向量然后依次計算和的夾角,其中Ai表示第i個端口點,其中i≥1,角度范圍為0°~360°,根據夾角的大小,將各端口點通過順時針旋轉方向進行排序;3)以中心點O到器件最小外接矩形的左下角的頂點A(xmin,ymin)為起始矢量順時針旋轉,將第一個旋轉到的端口點編號為0,依次順時針旋轉對其他接口遞增編號;4.3、存儲器件信息:讀取全部連線起點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述容器中;讀取全部連線終點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述容器中;下面根據本發明所述方法編制的軟件實現在選定AutoCAD圖紙操作區域內提取室內分布圖紙中器件連接關系到Excel表格的方法進行詳細說明,該方法具體包括以下步驟:1、讀取并存儲連線信息:在AutoCAD軟件中加載編寫生成的“.arx”應用程序文件,在AutoCAD命令行輸入操作命令,根據AutoCAD命令行“選擇對象”的提示,選定室內分布圖紙操作區域,從操作區域中獲取全部連線的起點位置ps、終點位置pe和實際長度L,編寫所述vector容器的結構體,創建用于存放器件連接關系的vector容器對象,并將連線起點位置ps的x軸坐標psx和y軸坐標psy及實際長度L存儲到所述vector容器中;2、計算并獲取器件的最值點:自定義編寫圖塊緩沖區鏈表(structresbuf*pcb),以編寫的鏈表pcb為過濾器,從所述區域內過濾出所有的器件,根據單個器件的形狀計算出器件的最小外接矩形,并記錄最小外接矩形的一對對角頂點,即獲得最小外接矩形在x軸上的最小值xmin,最大值xmax、y軸上的最小值ymin,最大值ymax,重復這一步驟,獲取所有器件的最值點。在本實例中以屬性為PS8-B2F的二功分器為例,其最小外接矩形在x軸上的最小值xmin=337.8509,最大值xmax=339.4613、y軸上的最小值ymin=13.3700,最大值ymax=17.2957,其最小外接矩形圖如圖2所示;3、計算并獲取連線兩端相連的器件:3.1、獲取與連線起點相連的器件:對于本例中屬性為PS8-B2F的二功分器,所述連線起點位置ps的x軸坐標為psx,y軸坐標為psy;1)若連線起點位置ps既不滿足337.8509≤psx≤339.4613也不滿足13.3700≤psy≤17.2957,則確定該二功分器與所述連線起點不相連;2)若連線起點位置ps滿足337.8509≤psx≤339.4613但不滿足13.3700≤psy≤17.2957,則所述連線起點與該二功分器最小外接矩形的最短距離為:dmin=(|13.3700-psy|,|17.2957-psy|)min3)若連線起點位置ps不滿足337.8509≤psx≤339.4613但滿足13.3700≤psy≤17.2957,則所述連線起點與該二功分器最小外接矩形的最短距離為:dmin=(|337.8509-psx|,|339.4613-psx|)min4)若連線起點位置ps即滿足337.8509≤psx≤339.4613也滿足13.3700≤psy≤17.2957,則所述連線起點與該二功分器最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|337.8509-psx|,|339.4613-psx|)min,dymin=(|13.3700-psy|,|17.2957-psy|)min5)若滿足dmin<<((339.4613-337.8509,17.2957-13.3700)min=1.6104),則確定該二功分器就是與所述連接起點相連的器件,否則說明該二功分器與所述連線起點不相連;重復步驟3.1,直到獲取與連線起點相連的器件;3.2、獲取與連線終點相連的器件:對于本例中屬性為PS8-B2F的二功分器,所述連線終點位置pe的x軸坐標pex,y軸坐標為pey;1)若連線終點位置pe既不滿足337.8509≤pex≤339.4613也不滿足ymin≤pey≤ymax,則確定該二功分器與所述連線終點不相連;2)若連線終點位置pe滿足337.8509≤pex≤339.4613但不滿足13.3700≤pey≤17.2957,則所述連線終點與該二功分器最小外接矩形的最短距離為:dmin=(|13.3700-pey|,|17.2957-pey|)min3)若連線終點位置pe不滿足337.8509≤pex≤339.4613但滿足13.3700≤pey≤17.2957,則所述連線終點與該二功分器最小外接矩形的最短距離為:dmin=(|337.8509-pex|,|339.4613-pex|)min4)若連線終點位置pe即滿足337.8509≤pex≤339.4613也滿足13.3700≤pey≤17.2957,則所述連線終點與該二功分器最小外接矩形的最短距離為:dmin=(dxmin,dymin)min其中dxmin=(|337.8509-pex|,|339.4613-pex|)min,dymin=(|13.3700-pey|,|17.2957-pey|)min5)若滿足dmin<<((339.4613-337.8509,17.2957-13.3700)min=1.6104),則確定該二功分器就是與所述連接終點相連的器件,否則說明該二功分器與所述連線終點不相連;重復步驟3.2,直到獲取與連線終點相連的器件;4、自定義器件端口編號并存儲器件信息:通過與連線相連接的器件與原圖紙庫中的器件作對比,判定該器件是否為圖紙庫中原有的器件,若是則按照步驟4(a)對器件端口進行編號,若否則按照步驟4(b)對器件端口進行編號;4.1、對圖紙數據庫中原有的器件編號:對于圖紙庫中原有的器件,以二功分器為例,通過比較庫中二功分器的基點與各端口的位置,確定二功分器的基點與各端口的相對位置關系,通過這種相對位置關系確定每個端口在圖紙中的位置,并對各個端口進行編號,編號規則為輸入端口的編號為0,以輸入端口為參考,以順時針方向對其它端口進行遞增編號;二功分器的接口編號如圖3所示;4.2、對圖紙數據庫中后添加的器件編號:1)對于所有的連線,利用步驟3中連線和器件相連接的判斷方法,通過與連線相連的器件,獲取與該器件相連接的所有連線,并記錄與該器件相連的端口點坐標;以二功分器為例,假設二功分器為庫中后添加的器件,各端口的坐標為a(337.8509,15.3329),b(339.4613,16.6897),c(339.4613,13.9760);2)以該二功分器最小外接矩形的中心點作為順時針旋轉的中心點O,以中心點O作一條平行于x軸的單位向量然后依次計算和的夾角,角度范圍為0°~360°,根據夾角的大小,將各端口點通過順時針旋轉方向進行排序;3)以中心點O到該二功分器最小外接矩形的左下角的頂點A(337.8509,13.3700)為起始矢量順時針旋轉,將第一個旋轉到的端口點編號為0,依次順時針旋轉對其他接口遞增編號;該二功分器的接口編號如圖4所示;4.3、存儲器件信息:讀取全部連線起點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述vector容器中;讀取全部連線終點相連器件的唯一屬性標識,并與連線連接的端口編號一起存儲到所述vector容器中;上述操作完成后,系統會自動彈出表格保存對話框,從該對話框中輸入表格名稱并自定義表格存儲位置,點擊“保存”后,此時初始化器件連接關系的Excel表格已經建立,此時遍歷所述vector容器中的數據,將數據提取到所述器件連接關系的Excel表格中;操作完成后,系統提示“操作成功”,完成器件關系的提取,所述器件連接關系的Excel表格如表1所示。StartXYEndCablePS7-B2F-2339.737104.2301T3-B2F/6dB-0C-4mT2-B2F/6dB-2313.569104.0079PS7-B2F-0C-11mPS8-B2F-2339.461313.976T15-B2F/6dB-0C-4mPS5-B2F-2397.548232.0079ANT21-B2F-0C-18mPS5-B2F-1397.548234.7216ANT20-B2F-0C-3mPS6-B2F-2397.548214.0079ANT24-B2F-0C-18mPS6-B2F-1397.548216.7216ANT23-B2F-0C-2mT5-B2F/6dB-2370.56933.3647PS5-B2F-0C-10mT5-B2F/6dB-1368.24334.7498ANT19-B2F-0C-10mT15-B2F/6dB-2370.56915.3647PS6-B2F-0C-14mT15-B2F/6dB-1368.24316.7498ANT22-B2F-0C-2mPS4-B2F-2397.548250.0079ANT18-B2F-0C-6mPS4-B2F-1397.548252.7216ANT17-B2F-0C-19mPS8-B2F-1339.461316.6897T5-B2F/6dB-0C-12mT14-B2F/6dB-2313.56915.3647PS8-B2F-0C-6mT14-B2F/6dB-1311.24316.7498PS4-B2F-0C-24mPS3-B2F-2397.548268.0079ANT15-B2F-0C-3mPS3-B2F-1397.548270.7216ANT14-B2F-0C-19mT13-B2F/15dB-2285.06915.3647T14-B2F/6dB-0C-5mT13-B2F/15dB-1282.74316.7498ANT16-B2F-0C-2mT12-B2F/10dB-2256.56915.3647T13-B2F/15dB-0C-9mT12-B2F/10dB-1254.24316.7498PS3-B2F-0C-23mPS2-B2F-2397.5482122.0079ANT6-B2F-0C-2mPS2-B2F-1397.5482124.7216ANT5-B2F-0C-18mT4-B2F/6dB-2399.069104.0079ANT9-B2F-0C-24mT4-B2F/6dB-1396.743105.393ANT8-B2F-0C-2mT11-B2F/20dB-2228.06915.3647T12-B2F/10dB-0C-14mT11-B2F/20dB-1225.74316.7498ANT13-B2F-0C-3mT1-B2F/6dB-2370.569123.3647PS2-B2F-0C-14mT1-B2F/6dB-1368.243124.7498ANT4-B2F-0C-3mT3-B2F/6dB-2370.569104.0079T4-B2F/6dB-0C-14mT3-B2F/6dB-1368.243105.393ANT7-B2F-0C-3mT10-B2F/20dB-2199.56915.3647T11-B2F/20dB-0C-13mT10-B2F/20dB-1197.24316.7498ANT12-B2F-0C-7mPS1-B2F-2397.5482140.0079ANT3-B2F-0C-19mPS1-B2F-1397.5482142.7216ANT2-B2F-0C-5mPS7-B2F-1339.737106.9438T1-B2F/6dB-0C-14mT9-B2F/20dB-2171.06915.3647T10-B2F/20dB-0C-12mT9-B2F/20dB-1168.74316.7498ANT11-B2F-0C-6mT2-B2F/6dB-1311.243105.393PS1-B2F-0C-12mT8-B2F/20dB-2142.56915.3647T9-B2F/20dB-0C-11mT8-B2F/20dB-1140.24316.7498ANT10-B2F-0C-5mT7-B2F/10dB-2114.06915.3647T8-B2F/20dB-0C-3mT7-B2F/10dB-1111.74316.7498T2-B2F/6dB-0C-5mT6-B2F/20dB-285.56915.3647T7-B2F/10dB-0C-5mT6-B2F/20dB-183.24316.7498ANT1-B2F-0C-10m13-064.246815.3045T6-B2F/20dB-0C-3m當前第1頁1 2 3