亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于AutoCAD選擇集的自動化圖元搜索方法

        2021-03-06 06:33:08何鑫星王小娟
        地理空間信息 2021年2期
        關(guān)鍵詞:程序方法

        何鑫星,王小娟,李 卓

        (1.四川省測繪產(chǎn)品質(zhì)量監(jiān)督檢驗站,成都 610041)

        在對AutoCAD 平臺的DWG 數(shù)據(jù)進行編輯時,經(jīng)常需要人機交互式使用選擇集對數(shù)據(jù)進行過濾搜索處理,但人機交互使用選擇集過濾器的方法無法將圖元之間的幾何關(guān)系也作為過濾條件對數(shù)據(jù)進行精準(zhǔn)搜索?;诖?,本文基于AutoCAD 選擇集的二次開發(fā)技術(shù)更寬泛地重新定義過濾搜索條件,從而實現(xiàn)基于圖元幾何關(guān)系及屬性信息組合的圖元自動化搜索。這種對圖元過濾搜索的方法,擴展了用戶對DWG 數(shù)據(jù)自動化處理的能力。

        1 AutoCAD ActiveX/VBA編程技術(shù)

        VBA 編程技術(shù)是Visual Basic 的一種宏語言,主要能用來擴展Windows 的應(yīng)用程序功能,特別是Microsoft Office 軟件。ActiveX 是微軟推出的一個基于COM 的技術(shù)規(guī)范[1]。它是在OLE 基礎(chǔ)上發(fā)展的新技術(shù),其宗旨是在Windows 系統(tǒng)的統(tǒng)一管理下協(xié)調(diào)不同的應(yīng)用程序。Autodesk 公司采納了微軟的這一技術(shù)規(guī)范,最早在AutoCAD R14.0 版推出了基于ActiveX Automation 技術(shù)的開發(fā)方式,隨后就有AutoCAD R14.01 版,該版本內(nèi)嵌了AutoCAD VBA。到AutoCAD 2000/2002(屬R15 版)、AutoCAD 2004/2005/2006(屬R16 版)和AutoCAD 2007(屬R17 版),這種新型的開發(fā)方式得到了進一步的改進及完善。將AutoCAD、ActiveX Automation 和VBA 相結(jié)合編程有3 個基本要素[1]。第一個要素是AutoCAD 本身,它提供了全面的對象,包括AutoCAD 圖元、數(shù)據(jù)和命令,要有效地使用VBA,必須熟悉 AutoCAD 的編程特性,例如一些基于對象的方法;第二個要素是AutoCAD ActiveX Automation 接口,是它與AutoCAD對象進行信息傳遞;第三個要素是VBA 本身,它有自己的一套對象、關(guān)鍵字和常量等的集合,用于提供程序流、控制、調(diào)試和執(zhí)行。

        2 選擇集的編程構(gòu)建方法

        在AutoCAD 中通過菜單或命令的方式使用選擇集,實現(xiàn)對DWG 數(shù)據(jù)中目標(biāo)圖元對象的過濾選擇操作,但選擇集過濾參數(shù)是人工給定的,即需要交互式地給出圖元的線型、顏色、所在層等參數(shù)。利用VBA技術(shù)可以實現(xiàn)自動化選擇集的構(gòu)建,相對于人工操作,VBA 技術(shù)允許過濾參數(shù)做批量循環(huán)操作,適合做數(shù)據(jù)自動化批量處理。選擇集自動化構(gòu)建方法的實現(xiàn)主要是基于對AutoCAD ActiveX 接口對象的利用,如圖形對象、組織結(jié)構(gòu)對象、圖形顯示對象、應(yīng)用程序本身等。對象是通過分層方式來組織的,其中應(yīng)用程序?qū)ο鬄楦鶎ο螅@種分層結(jié)構(gòu)的視圖即對象模型,對象模型提供了訪問下一層對象的途徑[2]。模型中有一種集合對象是預(yù)先定義的對象,它包含所有相似對象的實例,即這些對象的父對象。用于創(chuàng)建選擇集的SelectionSets 對象就是常用的集合對象之一,常用的集合對象還有Documents 集合、ModelSpace 集合、Views 集合等。

        2.1 選擇集的編程接口

        在AutoCAD2008 中用于創(chuàng)建選擇集的VBA 編程方法有如下4 種:

        1) object.Select Mode [,Point1][,Point2][,FilterType][,FilterData]

        2)object.SelectAtPoint Point, FilterType, FilterData

        3)object.SelectByPolygon Mode[,Pointslist][,FilterType][,FilterData]

        4)object.SelectOnScreen [FilterType][,FilterData]

        其中,Object 指使用SelectionSet 這個方法的對象;FilterType 為變體數(shù)組類型,僅用于輸入指定過濾器類型的DXF 組碼(可選項);FilterData 為變體數(shù)組類型,僅用于輸入過濾器的值(可選項)。方法1:object.Select 選擇的區(qū)域是由兩點構(gòu)成的矩形區(qū)域;方法2:object.SelectAtPoint 選擇的區(qū)域是某一個點;方法3:object. SelectByPolygon 選擇的區(qū)域是由坐標(biāo)列表構(gòu)成的多邊形區(qū)域;方法4:object.SelectOnScreen 選擇的區(qū)域是一個人機交互給定的矩形區(qū)域。方法1、3 中的Mode 包含8 種選擇模式,不同的模式對應(yīng)不同的對象過濾結(jié)果。

        2.2 選擇集的DXF 組碼

        AutoCAD 的DXF 組碼碼值范圍為-5~1 071[3-4],熟練掌握DXF 組碼就可以靈活使用選擇集進行過濾,一般常用的DXF 組碼有10 個左右,其使用方式如表1、2 所示。

        表1 常用選擇集過濾器的DXF 組碼代碼表

        表2 常用過濾群組方式(FilterType(DXF 群組碼)=-4 時)

        根據(jù)表1、2 可以得出,如果過濾的條件為圖元為TEXT 或LINE 但圖層不屬于TEST 層的組碼,則應(yīng)該如表3 所示。

        表3 選擇集條件過濾實例

        3 一種基于選擇集的自動化搜索方法

        DWG 數(shù)據(jù)的自動化批量處理涉及的核心問題是如何對數(shù)據(jù)按特定圖元對象進行過濾搜索,只有訪問到目標(biāo)圖元對象后才能進行分析、處理、修改等操作,而這僅依賴AutoCAD 提供的交互式基本操作是實現(xiàn)不了的。為了擴展AutoCAD 的功能,讓其在測繪地理信息、土地規(guī)劃、勘察設(shè)計、城市地下管網(wǎng)等行業(yè)中得到更為廣泛的應(yīng)用,本文基于AutoCAD 選擇集的二次開發(fā)提出了一種能夠?qū)D元幾何關(guān)系也作為選擇集過濾參數(shù)的新自動化圖元搜索方法。

        3.1 DXF 組碼條件過濾方法的局限

        第2 章介紹了利用AutoCAD 選擇集的DXF 組碼條件過濾方法能搜索到圖元對象以及對象的所有屬性信息,但是卻無法按圖元對象之間的相關(guān)關(guān)系進行搜索,例如要搜索出所有內(nèi)部包含文字注記“磚2”的多邊形,這就無法避免判斷文字注記與該多邊形房屋的包含關(guān)系,所以過濾參數(shù)除了有屬性信息還有圖元對象間幾何拓撲關(guān)系(點與多邊形關(guān)系)[5-6],這也是僅用DXF 組碼條件過濾方法無法實現(xiàn)的。但類似的應(yīng)用需求在DWG 數(shù)據(jù)的處理中非常普遍,具體需求如DWG 格式的地形圖數(shù)據(jù)批量編輯修改、農(nóng)村不動產(chǎn)測繪分戶圖的批量編輯修改等。因此,由于DXF 組碼條件過濾的局限性,考慮用更底層的方法去設(shè)計開發(fā)一種能夠按圖元幾何拓撲關(guān)系作為過濾條件的自動化搜索方法,從而擴展選擇集的過濾搜索能力。

        3.2 按幾何拓撲關(guān)系搜索的算法

        幾何拓撲關(guān)系按點、線、面的組合來分,最基本的有6 種關(guān)系,以下主要討論點與面、線與面、面與面的包含關(guān)系,由于AutoCAD 中對面的概念與GIS 軟件不同,所以這里討論的面實際是閉合的多邊形。為了能設(shè)計開發(fā)出一種實用的能自動判斷拓撲關(guān)系的搜索方法,需要綜合考慮穩(wěn)定性、數(shù)據(jù)量等實際情況。算法流程如圖1 所示。

        圖1 自動化搜索算法流程

        1)定義分區(qū)搜索是為了避免數(shù)據(jù)量太大的情況下算法過于復(fù)雜導(dǎo)致程序崩潰,通過數(shù)據(jù)量指定分區(qū)大小則可以有效避免程序崩潰。

        2)目標(biāo)對象包含關(guān)系給出目標(biāo)圖元之間要滿足的拓撲關(guān)系參數(shù),可以是點與多邊形、線與多邊形、多邊形與多邊形(這里只討論包含與被包含的關(guān)系)。

        3)DXF 組碼過濾條件是為了給出目標(biāo)圖元自身的類型與屬性信息。

        4)創(chuàng)建選擇集利用AutoCAD 提供的創(chuàng)建接口進行創(chuàng)建。

        5)分區(qū)內(nèi)搜索圖元是選擇集的搜索范圍大小為定義的分區(qū)大小,根據(jù)實際分區(qū)個數(shù)循環(huán)進行搜索,通過分區(qū)篩選的方式提高程序的運行效率[7]。

        6)拓撲關(guān)系判斷是將點與多邊形、線與多邊形、多邊形與多邊形的包含關(guān)系都轉(zhuǎn)化成點集合與邊集合、多邊形集合后進行數(shù)學(xué)方法判斷[8]。

        7)若目標(biāo)圖元的關(guān)系滿足定義參數(shù)要求則被提取,實現(xiàn)自動化過濾搜索。

        3.3 判斷點與多邊形關(guān)系的算法

        點與多邊形關(guān)系的判斷是拓撲關(guān)系判斷的基礎(chǔ),其中涉及的多邊形分凸多邊形與凹多邊形兩種,關(guān)系又分為點在多邊形內(nèi)、點在多邊形外、點在多邊形邊上三種。以下為一種面積法判斷點與多邊形關(guān)系的方法。

        如圖2 所示,當(dāng)點P 在凸多邊形ABCDE 外時,如果找到離P 點最近的邊AB,然后將P 點納入AB之間構(gòu)成新的多邊形APBCDE,多邊形APBCDE 的面積會大于多邊形ABCDE。反之,當(dāng)點P 在凸多邊形ABCDE 內(nèi)時,多邊形APBCDE 面積小于多邊形ABCDE。

        圖2 凸多邊形與點的關(guān)系

        如圖3 所示,P 點在多邊形ABCDEF 內(nèi)或外時對面積的變化完全與凸多邊形一致。所以關(guān)鍵算法只有兩部分,第一是找到離P 點最近的邊,并將P 納入兩點之間構(gòu)成新的多邊形;第二步利用公式(1)進行面積計算。

        所以只需根據(jù)面積數(shù)值變化就可以實現(xiàn)點與多邊形關(guān)系的判斷。判斷點與多邊形關(guān)系的算法除了該方法還有向量法、射線法[9-10]等,但各種方法都有自身的優(yōu)缺點,所以具體用什么方法要根據(jù)實際情況來進行選擇。

        圖3 凹多邊形與點的關(guān)系

        3.4 程序功能的集成方法

        本文按幾何拓撲關(guān)系搜索算法的總體流程對DWG數(shù)據(jù)的分區(qū)搜索、選擇集自動構(gòu)建、點與多邊形關(guān)系判斷等功能模塊完成了程序代碼編寫,并設(shè)計了相應(yīng)的用戶界面方便對圖元對象的輸入、提取、修改、輸出等操作。考慮程序的執(zhí)行效率及易用性,將程序各個功能模塊用現(xiàn)今主流的VBA、Lisp、ARX、.NET等AutoCAD 二次開發(fā)技術(shù)進行集成。其中VBA、.NET 等可以快捷的做出圖形界面;Lisp 可以便捷的調(diào)用VBA 程序的各個模塊,相當(dāng)于在CAD 中輸入命令,使用非常方便;VBA 可以直接操作CAD 圖元對象,程序執(zhí)行效率高,且VBA 可以實現(xiàn)簡潔易用的窗體,使得程序更加人性化,更簡單實用;Lisp 主要用來建立VBA 程序與CAD 菜單和工具欄之間的聯(lián)系,可以整合VBA 程序功能到菜單及工具欄中,使得程序使用更加方便,用戶體驗與使用CAD 內(nèi)置功能一致,如圖4 所示。

        圖4 VBA 程序窗體界面

        本文選擇用VBA 來高效實現(xiàn)按幾何拓撲關(guān)系搜索的算法、用戶界面搭建等,用lisp 及AutoCAD 的菜單文件“*.mnu”實現(xiàn)菜單的改寫,再用lisp 語言來說實現(xiàn)VBA 工程與自定義命令隨AutoCAD 啟動而自動加載,最終實現(xiàn)將二次開發(fā)的功能完整嵌入AutoCAD,使用時如同AutoCAD 本身功能一樣,可以從菜單調(diào)用也可以輸入命令調(diào)用程序功能。

        4 應(yīng)用實例

        實驗數(shù)據(jù)為四川省農(nóng)村不動產(chǎn)測繪項目的分戶圖數(shù)據(jù),該項目的質(zhì)量檢查需求之一是要能對每一戶的房產(chǎn)面積進行重新計算核對。其中每一戶的面積由若干層、若干戶型的面積組成,而且根據(jù)項目設(shè)計要求面積有全算、半算、不算3 種算法。需求二是要能全自動化檢查。本文提出的新搜索方法正好能滿足以上需求,因為其本質(zhì)是判斷多邊形內(nèi)的文字注記是否與定義要求一致。圖5 為農(nóng)村不動產(chǎn)測繪項目的按村組組織的分戶圖數(shù)據(jù),圖6 為程序查出的面積數(shù)值與圖形不符的錯誤情況圖。

        圖5 農(nóng)村不動產(chǎn)測繪分戶圖

        圖6 程序檢查結(jié)果

        為了能更好地對該方法的效率及穩(wěn)定性進行測試實驗,實驗用了農(nóng)村不動產(chǎn)測繪項目中的25 個村組的分戶圖數(shù)據(jù)在64 位Windows 7 系統(tǒng)、2008 版AutoCAD環(huán)境下進行效率實測,測試過程中程序運行正常,測試結(jié)果如表4 所示。

        表4 搜索效率測試

        5 結(jié) 語

        本文介紹了AutoCAD VBA 編程技術(shù),并對選擇集的VBA 編程方法進行了經(jīng)驗總結(jié),提出一種非人機交互式的自動選擇集對目標(biāo)數(shù)據(jù)進行搜索、過濾的新方法。通過集成AutoCAD 選擇集的VBA 編程方法、分區(qū)搜索、點與多邊形關(guān)系判斷等算法,實現(xiàn)對DWG數(shù)據(jù)中文字注記、二維圖形的高效搜素、過濾、提取、計算等操作。將該方法應(yīng)用到了四川省農(nóng)村不動產(chǎn)測繪項目質(zhì)量檢驗中,對項目成果數(shù)據(jù)中的大批量分戶產(chǎn)權(quán)信息完成了自動化比對分析,得到了預(yù)期的結(jié)果。這種基于AutoCAD ActiveX/VBA 技術(shù)開發(fā)的搜索方法的優(yōu)勢主要體現(xiàn)在如下方面。

        1)VBA 代碼與AutoCAD 共享內(nèi)存空間,所以程序代碼執(zhí)行效率非常高。

        2)在DXF 組碼選擇集過濾搜索的基礎(chǔ)上擴展出了按圖元包含關(guān)系的自動化搜索方法,拓展了應(yīng)用場景。

        3)開發(fā)環(huán)境搭建非常簡單,AutoCAD 界面下按Alt+F11 就自動進入編程和執(zhí)行環(huán)境,無需安裝編程軟件。

        需要注意的是該方法是基于AutoCAD 平臺開發(fā),部分內(nèi)容無法直接移植到其他圖形平臺下進行應(yīng)用,例如GIS 平臺中就沒有DXF 組碼進行選擇集過濾的方式。

        猜你喜歡
        程序方法
        學(xué)習(xí)方法
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        創(chuàng)衛(wèi)暗訪程序有待改進
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        国产精品大屁股1区二区三区| 久久国产精品一国产精品金尊| 亚洲av无码久久精品色欲| 国产乱子伦视频大全| 亚洲中文字幕av天堂| 亚洲精品视频一区二区三区四区| 人人妻人人澡人人爽欧美一区| 亚洲精品午夜无码电影网| 久久久久中文字幕无码少妇| 用力草我小逼视频在线播放| 日本一级特黄aa大片| 国产精品午夜爆乳美女视频| 国产欧美一区二区成人影院| 又爽又猛又大又湿的视频| 激情综合五月开心婷婷| 婷婷中文字幕综合在线| 亚洲女同精品一区二区久久 | 国内精品久久久久久久久久影院 | 国产精品成年片在线观看| 精品人妻少妇一区二区中文字幕| 日本少妇又色又紧又爽又刺激| 男人的天堂中文字幕熟女人妻| 亚洲av无码国产剧情| 国产精品原创永久在线观看| 国产专区亚洲专区久久| 特黄大片又粗又大又暴| 特级毛片a级毛片在线播放www| 丰满多毛的大隂户视频| 美女污污网站| 久久av一区二区三区黑人| 人妻洗澡被强公日日澡电影| 婷婷亚洲综合五月天小说| 亚洲av毛片成人精品| 亚洲综合日韩一二三区| 国内精品视频一区二区三区八戒| 久久人人爽人人爽人人av东京热| 无遮挡粉嫩小泬| 国产精品午夜夜伦鲁鲁| 亚洲av日韩专区在线观看| 久久中文字幕亚洲精品最新| 亚洲av高清不卡免费在线|