• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于AUTOCAD二次開發(fā)實(shí)現(xiàn)不動(dòng)產(chǎn)權(quán)籍調(diào)查分層平面圖的批量出圖

      2018-06-09 00:00:00趙濤何世偉
      中國科技博覽 2018年19期

      趙濤 何世偉

      [摘 要]本文以湖北省不動(dòng)產(chǎn)確權(quán)調(diào)查登記工作為例,詳細(xì)講述了基于AUTOCAD-VBA開發(fā)分層平面圖的批量出圖的開發(fā)思路及方法。通過本文講述的功能實(shí)現(xiàn)了分層平面圖的自動(dòng)出圖,大大減少了內(nèi)業(yè)工作量,并在保證質(zhì)量的同時(shí)大大提高了實(shí)際工作的效率。

      [關(guān)鍵詞]不動(dòng)產(chǎn)權(quán)籍調(diào)查;分層平面圖;點(diǎn)與多邊形關(guān)系判定;AutoCAD二次開發(fā)

      中圖分類號(hào):D923.2 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-914X(2018)19-0399-02

      1 引言

      AUTOCAD是美國Autodesk公司于1982年生產(chǎn)的自動(dòng)計(jì)算機(jī)輔助設(shè)計(jì)軟件,用于二維繪圖、詳細(xì)繪圖、文檔設(shè)計(jì)、基本三維設(shè)計(jì)等?,F(xiàn)已成為國際上廣泛使用的繪圖工具軟件。Autocad具有良好的用戶界面,通過交互菜單或命令行可以方便的實(shí)現(xiàn)各種操作。

      當(dāng)前AUTOCAD的二次開發(fā)工具主要有:VisualLisp、VBA、ObjectARX和.net API等。其中VisualLISP與VBA較為簡單,使用方便且開發(fā)速度快,這兩種語言所提供的對(duì)象模型和外部端口基本能滿足不動(dòng)產(chǎn)權(quán)籍調(diào)查工作中擴(kuò)展功能二次開發(fā)的需求。本文以VBA開發(fā)為例,結(jié)合AtoCAD用戶環(huán)境,主要講述程序的開發(fā)思路,開發(fā)難點(diǎn)解決方法,并給出核心代碼。

      2 資料準(zhǔn)備

      在制作分層平面圖之前應(yīng)根據(jù)外業(yè)測(cè)量及外業(yè)調(diào)查的成果以“權(quán)屬清楚、界址清晰、面積準(zhǔn)確”為原則,繪制詳細(xì)、準(zhǔn)確的地籍圖,并進(jìn)行圖形檢查。根據(jù)《地籍調(diào)查規(guī)程》,界址點(diǎn)間距應(yīng)大于0.1米,界址線不能交叉,相鄰宗地重疊的界址線應(yīng)有相同的界址點(diǎn)。另外,為了程序能自動(dòng)識(shí)別房屋用途,需要新建“房屋用途”圖層,在該圖層中根據(jù)調(diào)查成果注記各房屋的用途,如“主房”、“廚房”、“車庫”、“其他”等。

      3 開發(fā)流程

      3.1 圖框制作

      為了程序生成過程中可以重復(fù)使用圖框,可以將圖框繪制好后保存為DWG文件,在各宗地分層平面圖生成過程中,分別將圖框作為外部塊插入進(jìn)來。為了編程方便,圖框文件中,最好將圖框的左下角移動(dòng)到原點(diǎn)(0,0)。

      3.2 選擇成圖范圍

      利用AUTOCAD所提供的選擇集可以方便的實(shí)現(xiàn)由用戶選擇成圖范圍。

      Dim ssR As AcadSelectionSet

      Set ssP = ThisDrawing.SelectionSets.Add("sSp")

      ThisDrawing.Utility.Prompt ("請(qǐng)選擇成圖范圍:")

      ssP.SelectOnScreen

      prPt = vbCrLf & "指定插入圖框左下角的位置: "

      startPnt = ThisDrawing.Utility.GetPoint(, prPt)‘用戶指定插入點(diǎn)

      3.3 判斷房屋的結(jié)構(gòu)、層數(shù)及用途

      新建另一個(gè)選擇集SSR,用于以宗地為范圍選擇宗地內(nèi)的房屋。

      SSR.SelectByPolygon acSelectionSetWindowPolygon, objPnt

      其中objPnt是權(quán)屬線的頂點(diǎn)三維數(shù)組。這個(gè)選擇集在生成完本宗地后應(yīng)及時(shí)清空,避免產(chǎn)生多于圖形。

      房屋層數(shù)及用途的判斷原理基本相同,分別以單個(gè)房屋為范圍,判斷在SSR果中是否有數(shù)字“2”或“3”且在“JMD”圖層中,并且在房屋內(nèi)部,否則判斷為1層;分別以單個(gè)房屋為范圍,判斷是否有“主房”、“車庫”等文本在多邊形內(nèi)且在“房屋用途”圖層中,可得出房屋用途;分別判斷房屋范圍內(nèi)的房屋結(jié)構(gòu)注記可以得到房屋的結(jié)構(gòu)。新建三個(gè)實(shí)體數(shù)組,分別存放分層判斷的結(jié)果,新建6個(gè)雙精度參數(shù)用于存放各種用途的房屋的面積,新建一個(gè)字符串參數(shù)用于存放房屋結(jié)構(gòu)。

      這里的房屋層數(shù)及用途的判讀,其難點(diǎn)在于判斷文本是否在房屋中,其實(shí)質(zhì)是點(diǎn)與在多邊形位置關(guān)系的判定。目前所采用的主要方法有射線法、極小圓法。相比之下極小圓法編程簡單,但準(zhǔn)確率不高,而且當(dāng)數(shù)據(jù)量大的時(shí)候,運(yùn)行緩慢,我們此處采用了射線法。射線法的原理是:抽象一條以目標(biāo)點(diǎn)為起點(diǎn)向右的水平射線,當(dāng)此射線與多邊形交點(diǎn)個(gè)數(shù)為奇數(shù)個(gè)時(shí),點(diǎn)在多邊形內(nèi)部。當(dāng)然,要考慮點(diǎn)在多邊形邊上,多邊存在水平邊的情況。

      為編程的嚴(yán)密性,此處我們不僅判斷了右射線,也判斷了左射線。以AcadLWPolylin對(duì)象為例,判斷點(diǎn)與多邊形的位置關(guān)系(射線法)函數(shù)的核心代碼如下():

      Public Function ptInLwp(ByVal objPl As AcadLWPolyline, ByRef pnt) As Integer

      ………

      For i = 0 To pCount - 1

      xJ = 0

      If pAr(i).Y = pAr(i + 1).Y Then

      xJ = 0

      Else

      xJ = pAr(i).X - (pAr(i).X - pAr(i + 1).X) / (pAr(i).Y - pAr(i + 1).Y) * (pAr(i).Y - pnt(0))

      End If

      If xJ < pnt(1) And gMax(pAr(i).Y, pAr(i + 1).Y) > pnt(0) And gMin(pAr(i).Y, pAr(i + 1).Y) < pnt(0) Then

      intLJD = intLJD + 1

      ElseIf xJ > pnt(1) And gMax(pAr(i).Y, pAr(i + 1).Y) > pnt(0) And gMin(pAr(i).Y, pAr(i + 1).Y) < pnt(0) Then

      intRJD = intRJD + 1

      End If

      Next i

      If pAr(0).Y = pAr(pCount).Y Then

      xJ = 0

      Else

      xJ = pAr(0).X - (pAr(0).X - pAr(pCount).X) / (pAr(0).Y - pAr(pCount).Y) * (pAr(0).Y - pnt(0))

      End If

      If xJ < pnt(1) And gMax(pAr(0).Y, pAr(pCount).Y) > pnt(0) And gMin(pAr(0).Y, pAr(pCount).Y) < pnt(0) Then

      intLJD = intLJD + 1

      ElseIf xJ > pnt(1) And gMax(pAr(0).Y, pAr(pCount).Y) > pnt(0) And gMin(pAr(0).Y, pAr(pCount).Y) < pnt(0) Then

      intRJD = intRJD + 1

      End If

      If intLJD Mod 2 = 1 And intRJD Mod 2 = 1 Then

      ptInLwp = 1 '點(diǎn)在多邊形內(nèi)

      Else: ptInLwp = -1

      End If

      End Function

      此函數(shù)當(dāng)點(diǎn)在多邊形內(nèi)部時(shí)返回1,點(diǎn)在多邊形邊上時(shí)返回0,在多邊形外時(shí)返回-1。由于函數(shù)只進(jìn)行了常規(guī)的數(shù)學(xué)計(jì)算,所以代碼運(yùn)行效率非常高,且準(zhǔn)確率達(dá)到100%,且適用于任何凹凸多邊形。

      3.4 繪制示意圖并標(biāo)記邊長

      將3.3中判斷的結(jié)果以各個(gè)數(shù)組中各實(shí)體元素的中心為基點(diǎn),復(fù)制到圖框相應(yīng)位置,并標(biāo)注實(shí)際邊長。標(biāo)記邊長的原理是先計(jì)算邊長與方位角,將插入的文本起點(diǎn)設(shè)置為邊長中點(diǎn)向外偏移1米并向起點(diǎn)移動(dòng)文本長度一半的位置,旋轉(zhuǎn)角度設(shè)為方位角。由于不需要標(biāo)注內(nèi)部邊長,對(duì)于二層及三層房屋實(shí)體數(shù)組中重疊邊可不標(biāo)注。

      3.5 填入面積數(shù)據(jù)

      按湖北省省廳發(fā)布的不動(dòng)產(chǎn)權(quán)籍調(diào)查《實(shí)施細(xì)則》的相關(guān)規(guī)定,面積保留兩位小數(shù),可用FORMAT函數(shù)先將面積格式化為“0.00”再填入。填入的文本插入坐標(biāo)以插入點(diǎn)為基準(zhǔn)較為簡便。部分代碼如下:

      sPnt(0) = startPnt(0) + 112.32: sPnt(1) = startPnt(1) + 17.49: sPnt(2) = 0

      Set pTxt = ThisDrawing.ModelSpace.AddText(zfJG, sPnt, 1)

      pTxt.Alignment=acAlignmentMiddle:pTxt.TextAlignmentPoint=sPnt

      我們只需要使用FOR EACH…..NEXT….語句對(duì)選擇集內(nèi)的所有權(quán)屬線對(duì)象進(jìn)行循環(huán)處理,即可方便的實(shí)現(xiàn)對(duì)所有宗地的批量出圖。

      4 結(jié)束語

      在以往的不動(dòng)產(chǎn)權(quán)籍調(diào)查工作中,分層平面圖由調(diào)查人員手工制作,制作過程復(fù)雜繁瑣,工作時(shí)間長,人為錯(cuò)誤多,效率低。本文論述的開發(fā)思路及所開發(fā)的應(yīng)用軟件使得分層平面圖工作自動(dòng)化,減少了重復(fù)工作量,大大提高了工作效率。本文所提及的代碼運(yùn)行效率高,每1000宗地,只需5至6分鐘即可完成。此外本文二次開發(fā)的成果已廣泛應(yīng)用于湖北省襄陽市、隨州市等地的權(quán)籍調(diào)查工作中,并得到了用戶的好評(píng),為推進(jìn)湖北省不動(dòng)產(chǎn)權(quán)籍調(diào)查登記工作提供了有力的技術(shù)支持。

      參考文獻(xiàn)

      [1] 《國土資源部不動(dòng)產(chǎn)權(quán)籍調(diào)查技術(shù)方案》2015年41號(hào)文件.

      [2] 《湖北省宅基地使用權(quán)和集體建設(shè)用地使用權(quán)確權(quán)登記發(fā)證工作實(shí)施細(xì)則》.

      [3] 《地籍調(diào)查規(guī)程 TD T1001-2012》.

      [4] 張帆.《AutoCAD VBA開發(fā)精彩實(shí)例教程》[M].北京:清華大學(xué)出版社,2005年版.

      东兰县| 沾化县| 铁力市| 奉新县| 长乐市| 襄樊市| 太和县| 宁晋县| 中山市| 嘉善县| 宕昌县| 麻阳| 阳朔县| 抚顺市| 乐都县| 永城市| 饶阳县| 甘肃省| 虞城县| 沅陵县| 调兵山市| 康马县| 朝阳区| 灵宝市| 墨江| 浏阳市| 枣阳市| 喜德县| 和平区| 商丘市| 获嘉县| 鲁甸县| 彩票| 内丘县| 高台县| 邢台县| 板桥市| 原平市| 涞源县| 抚宁县| 灵丘县|