999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

AutoCAD中圓弧折線化方法與實現

2016-11-28 07:14:33劉虎
城市勘測 2016年5期
關鍵詞:二次開發方法

劉虎

(蚌埠市勘測設計研究院,安徽 蚌埠 233000)

?

AutoCAD中圓弧折線化方法與實現

劉虎*

(蚌埠市勘測設計研究院,安徽 蚌埠 233000)

AutoCAD作為一種重要的地形圖制圖軟件,圖中存在大量的圓弧圖元。由于圓弧只有端點或圓心坐標,弧線本身缺乏精確的坐標信息,因此導致一些數據檢查時出錯。AutoCAD軟件本身不提供圓弧轉折線的功能。本文嘗試采用等角切分方法,利用VBA二次開發技術,在保持圖形原有特征及精度要求的前提下,將圓弧、圓及多段線中的圓弧分別轉換為純折線的多段線,從而去除圓弧部分。滿足基礎地理信息數據庫建庫等特殊的數據需求。

AutoCAD;圓弧;等角切分;折線

1 前 言

AutoCAD以其友好的界面設計,命令與鼠標相結合的操作模式,尤其是強大的制圖與設計功能,豐富的二次開發環境,在工程制圖、地形圖測繪等領域應用廣泛,成為矢量制圖生產的首要軟件之一[1]。軟件提供了包括各種圖形對象繪制、圖形編輯、三維模型構建及相關標注等豐富的制圖功能,能夠滿足大多數生產需要。但AutoCAD是一種面向各行業的通用軟件平臺,在一些特定領域略顯不足,如數據庫管理等[2]。國內測繪行業多用AutoCAD作為地形圖繪制工具,而將現有AutoCAD格式地形圖轉為地理信息系統(GIS)數據時,不可避免的涉及精度與屬性問題[3]。在AutoCAD繪制地形圖中,在采集類似道路路口、花壇等有一定弧度的地物要素時,經常采用圓弧或圓來繪制。采用圓弧,達到了方便、美觀的制圖目的,但其缺陷也是明顯的,弧線缺少精確的點位坐標。弧線是通過一定參數模擬繪制出來的,缺乏坐標明確標示,在GIS數據拓撲處理中,很容易出現重疊、縫隙等錯誤。如何將圓弧(包括圓弧、圓及多段線中的弧段)轉為具有明確坐標的折線,就很有必要[4]。

AutoCAD本身不提供將圖形中圓弧轉為折線的命令或工具,一般采用第三方軟件來進行圓弧轉折線。本文嘗試采用AutoCAD自帶的VBA二次開發技術,制作一個數據處理工具,用于圖中圓弧向折線轉換,以期滿足GIS入庫需求,提高工作效率。

2 AutoCAD VBA開發與凸度

2.1 AutoCAD VBA二次開發

AutoCAD VBA二次開發環境是軟件自身攜帶的一種強大的軟件二次開發技術,具有VB的基本語法特征,且能與AutoCAD運行于同一處理空間,并通過ActiveX Automation接口實現對AutoCAD的編程控制,直接利用AutoCAD的圖形處理資源。可以通過AutoCAD命令VBAIDE啟動軟件開發環境,進行程序編寫[5]。2.2 凸度

凸度在AutoCAD多段線中指一個頂點與下一個頂點之間形成的弧之間角度的1/4的正切值,用于設置一段多段線的彎曲程度。凸度為0代表一個直線段,凸度為1代表一個半圓段,介于0~1之間為劣弧,大于1為優弧[6]。如圖1所示,圓弧AB對應圓心角為a,拱高h,弦長2s,則圓弧AB的凸度n為:

n=tan(a÷4)=h÷s

圖1 凸度

3 技術流程

3.1 技術流程

本文中處理的圓弧包括AutoCAD圖形文件中單獨繪制的圓弧(Arc)、圓(Circle)及多段線中弧段。圓弧折線化方法有兩種方式:等角和等距,這里采用等角方法。對于圓形,直接采用等角切分進行折線化。單獨的圓弧,則先轉換為多段線,然后采用多段線圓弧轉折線的方法進行轉換。總的技術流程如圖2所示。

圖2 圓弧折線化技術流程圖

3.2 圓弧折線化算法

在采用等角切分方法將圓弧轉折線的過程中,將用到AutoCAD自帶的一個方法:PolarPoint。其有三個參數,分別為:起點(StartPoint)、角度(Angle)和距離(Distance)。可以通過起點,按照一定角度,按照設定距離,獲取目標點的坐標(TargetPoint)。

TargetPoint =PolarPoint(StartPoint,Angle,Distance)

圓弧的凸度n,可以通過AutoCAD自帶方法GetBulge(i)獲取,其參數i為當前弧段起始節點的點號。

圓弧端點A、B的坐標分別為(x1,y1)、(x2,y2),則圓弧弦長2s為:

圓弧拱高h為:

h=|(s÷2)×n|

圓弧的半徑r為:

r=(h2+s2)÷(h×2)

獲取圓弧AB的弦的方向角AngleAB可以采用AutoCAD自帶函數AngleFromXAxis,參數為A、B兩點坐標:

AngleAB=AngleFromXAxis(A,B)

求取圓弧頂點朝向圓心的方位角AngleMidPtVector,其中PI=3.1415926:

AngleMidPtVector=Sgn(n)×PI÷2+AngleAB

求取圓弧AB弦中點坐標PtMid(x,y):

x=(x1+x2)÷2

y=(y1+y2)÷2

采用AutoCAD自帶方法PolarPoint獲取圓弧AB對應的圓心坐標PtCircle:

PtCircle=PolarPoint(PtMid,AngleMidPtVector,r-h)

求取圓弧對應圓心坐標后,可以按照圓心到圓弧端點A、B的方位角,按照等角切分的原則,逐個角度算出對應圓弧上的坐標值,并添加到多段線中,從而實現圓弧向多段線的轉換。

3.3 程序實現

在AutuoCAD VBA二次開發環境編寫處理程序,將圓弧、圓及含有圓弧的多段線,轉換為全部為折線的多段線。以一段弧線轉折線為例,主要代碼如下:

dblChord=GetDist2D(dblP1(0),dblP1(1),dblP2(0),dblP2(1)) '求出弦長

dblSagitta=Abs(dblChord / 2 * objPL.GetBulge(i)) '求出拱高

dbl_Bugle_Radius=(dblSagitta ^ 2 + (dblChord / 2) ^ 2) / dblSagitta / 2 '求出半徑

dblAngle_tmp=objDoc.Utility.AngleFromXAxis(dblP1,dblP2) '弦的方向角

dblMidPt_NormalVector=Sgn(objPL.GetBulge(i)) * PI / 2 + dblAngle_tmp '圓弧頂點朝向圓心的方位角,始終在圓弧內側,通過dblAngle_tmp加減PI/2實現

dblMidPt_tmp2(0)=(dblP1(0) + dblP2(0)) / 2

dblMidPt_tmp2(1)=(dblP1(1) + dblP2(1)) / 2

dblMidPt_tmp=objDoc.Utility.PolarPoint(dblMidPt_tmp2,dblMidPt_NormalVector,dbl_Bugle_Radius - dblSagitta)

vCenterPoint=dblMidPt_tmp '圓心坐標

dblAngle1=objDoc.Utility.AngleFromXAxis(dblMidPt_tmp,dblP1)

dblAngle2=objDoc.Utility.AngleFromXAxis(dblMidPt_tmp,dblP2)

If objPL.GetBulge(i) < 0 Then '獲取當前i節點起始的凸度值,且為順時針方向

np=i

objPL.SetBulge i,0 '將第一段圓弧設為直線

dblAngle=dblAngle1

If dblAngle1>dblAngle2 Then '圓弧未跨過X正軸,angle1到angle2沿順時針遞減

For dbl=dblAngle1 To dblAngle2 Step-dblAngleValue’按照切分角度,切分圓弧

dblAngle=dblAngle-dblAngleValue

dblMidPt_tmp=objDoc.Utility.PolarPoint(vCenterPoint,dblAngle,dbl_Bugle_Radius)

newVertex(0)=dblMidPt_tmp(0)

newVertex(1)=dblMidPt_tmp(1)

objPL.AddVertex np+1,newVertex’增加多段線節點

np=np+1

Next dbl

End If

圓弧轉為折線,轉換后所得折線與圓弧不可避免存在一定誤差。折線點越多,越密集,與圓弧的誤差越小,折線也更加圓滑,反之,則誤差越大。在程序中,可以通過設置切分的角度值,調整轉折線后的節點數,從而調整轉換精度。角度值越小,折線節點越多,精度越高。圖3中,a為原圖,包含1個圓,2個圓弧及1個全部為圓弧組成的多段線,b、c、d分別為采用切分角度為1度角、4度角、8度角轉換后的折線,轉換后的點密度和折線平滑度區別明顯。

圖3 圓弧轉折線

4 結 論

使用本文的轉換方法,編寫數據處理程序,通過選擇集過濾選擇圓弧、圓及多段線,并分別予以折線化處理,達到了設計目的,解決了生產中的實際需求,提高了工作效率。但方法本身尚有不足之處,首先缺少對橢圓、樣條等特殊曲線的折線化處理;其次欠缺對塊參照中的圓弧處理過程。這些將是后續改進與完善的方向。

[1] 崔先國,張明波. AutoCAD中擴展圖元數據的應用[J]. 礦山測量,1999(8).

[2] 周蓉,杜曉榮,張麗華等. 圖形系統二次開發環境的研究與實現[J]. 合肥工業大學學報,2004.

[3] 黃杏元,馬勁松,湯勤. 地理信息系統概論[M]. 北京:高等教育出版社,2001.

[4] 錢業宏,花向紅. AutoCAD擴展數據在地形圖建庫中的應用[J]. 城市勘測,2008(1).

[5] 王建設,時東玉,禇喆等. AutoCAD二次開發解決二調數據采集中的問題[J]. 現代測繪,2008(6).

[6] 張帆. AutoCAD+VBA二次開發教程[M]. 北京:清華大學出版社,2006(6).

The Method of Converting the Arc Into Broken Lines and its Implementation in AutoCAD

Liu Hu

(Bengbu Design and Research Institute of Geotechnical Investigation and Surveying,Bengbu 233000,China)

As an important topographic map mapping software,AutoCAD contains a lot of arc graphic elements in the graph. Due to the arc only include endpoint or the coordinates of the center of circle,and the arc itself do not has accurate coordinate information which leading to some error when checking data. But AutoCAD software itself does not provide the function of change arc into broken lines. In this paper,we try to propose a new method for dividing the arc into broken lines. In the proposed method,equiangular segmentation algorithm is used and VBA language is adopted for algorithm developing;it can maintains the original feature and the accuracy of the figure,and convert the arc of the circle and the arc of the multi-lines into the multi section lines of the pure line,respectively,thereby the arc part is removed. The proposed method can meet the special needs of basic geographic information database construction.

AutoCAD;the arc;equiangular segmentation;broken line

1672-8262(2016)05-129-03

P209

B

2016—04—22

劉虎(1983—),男,碩士,工程師,主要從事GIS數據處理、地理信息工程開發、航空攝影測量等工作。

猜你喜歡
二次開發方法
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 99视频在线看| 欧美精品啪啪一区二区三区| 久久伊人久久亚洲综合| 日韩精品免费一线在线观看| 手机永久AV在线播放| 91精品视频在线播放| 亚洲欧洲日产国产无码AV| av午夜福利一片免费看| 日韩专区第一页| 黄色污网站在线观看| 本亚洲精品网站| 中文字幕不卡免费高清视频| 白浆免费视频国产精品视频| 日韩在线欧美在线| 青草国产在线视频| 日韩在线影院| 91精品啪在线观看国产| www精品久久| 国产精品美女自慰喷水| 996免费视频国产在线播放| 青青草原国产精品啪啪视频| 国产在线视频福利资源站| 在线观看亚洲精品福利片| 国产幂在线无码精品| 国产aaaaa一级毛片| 午夜天堂视频| 国内毛片视频| 国产欧美日韩另类| 四虎永久在线精品国产免费| 99在线免费播放| a欧美在线| 在线国产91| 久久精品国产国语对白| 91av国产在线| 中国国产一级毛片| 国产69精品久久| 伊人久久大香线蕉影院| 拍国产真实乱人偷精品| 日韩欧美国产成人| 国产黄色片在线看| 萌白酱国产一区二区| 国产特级毛片aaaaaa| 日本欧美视频在线观看| 乱系列中文字幕在线视频| 亚洲一级毛片| 热久久这里是精品6免费观看| 日本一区二区不卡视频| 国产成人三级| 手机在线看片不卡中文字幕| 一本一本大道香蕉久在线播放| 中文字幕乱码中文乱码51精品| 国内精品一区二区在线观看| 26uuu国产精品视频| 人人91人人澡人人妻人人爽 | 永久毛片在线播| 亚洲精品另类| 欧美在线免费| 欧美日韩福利| 黄色网在线免费观看| 欧美成人一级| 伊人网址在线| 国产原创演绎剧情有字幕的| 国产精品开放后亚洲| 婷婷色婷婷| 亚洲精品桃花岛av在线| 国产91透明丝袜美腿在线| 久久动漫精品| 亚洲黄色网站视频| 中日韩一区二区三区中文免费视频 | 国产精品精品视频| 国产91麻豆免费观看| 天天色综合4| 久久婷婷五月综合97色| 97视频免费在线观看| 九色视频最新网址| 午夜啪啪网| a免费毛片在线播放| 国产18在线| 丰满人妻一区二区三区视频| 日韩欧美国产成人| 国产无码高清视频不卡| 亚洲日韩高清在线亚洲专区|