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

基于ObjectARX的線劃圖文件批量處理研究

2014-09-08 00:48:55施蘇毅熊俊華
江西科學 2014年4期
關鍵詞:二次開發文本

施蘇毅,熊俊華

(昆明理工大學,650093,昆明)

基于ObjectARX的線劃圖文件批量處理研究

施蘇毅,熊俊華

(昆明理工大學,650093,昆明)

數字線劃圖(DLG)是我國基礎地理信息數字成果之一,外業測繪的成果一般就是DLG。DLG使用較為廣泛的格式為AutoCAD的DWG格式,闡述了DWG格式的線劃圖文件批量處理。圖形文件批量處理就是根據用戶的需求對多個圖形文件進行相同的操作,這些操作可由計算機自動化完成。ObjectARX是AutoCAD常用的開發工具,研究了基于ObjectARX與C#.NET對AutoCAD進行二次開發,實現線劃圖文件批量處理的技術,具有較好的現實意義與廣泛的應用前景。

線劃圖;ObjectARX;批量處理; AutoCAD

0 引言

數字線劃圖(DLG)采用點、線、面形式或地圖特定圖形符號形式表達地形要素。在AutoCAD中對應著DataBase中的實體要素。每個實體或圖元對應一個數據記錄,主要用來存儲實體的幾何數據和幾何特性(線型、圖層、顏色、字體等)。目前,常用的數字線劃圖制圖、成圖軟件——CASS軟件已具備較完善的功能[1],但不能對圖形文件進行批量化處理。因此,對其二次開發十分必要。ObjectABX技術逐漸成為AutoCAD二次開發的主流。

ObjectABX應用程序能直接利用AutoCAD核心數據庫和代碼,利用AutoCAD的開放結構,可以直接訪問AutoCAD數據庫結構、圖形系統以及CAD幾何造型核心,具有模塊性好、獨立性強、連接簡單、使用方便、內部功能高效實用、代碼可重用性強等優點[2]。本文使用ObjectARX以及C#.NET開發的程序可以對多個線劃圖文件的進行批量處理,并在文中給出了核心代碼。

1 ObjectARX編程

1.1ObjectARX簡介

AutoCAD提供了豐富的開發工具,如ADS(AutoCAD Development System)、ObjectARX/ObjectDBX,VBA/AutoCAD ActiveX Automation(COM)、AutoLISP/Visual LISP、.NET[3]。ObjectARX是Au-toCAD提供的第一個面向對象的開發工具。它提供了以C++為基礎的面向對象的開發環境及應用程序接口,在AutoCAD 2006及以后的版本中,增加了.NET API開發包。方便使用.NET工具進行開發。

用戶利用ObjectARX可以訪問和修改AutoCAD圖形數據庫[4],與AutoCAD編輯器進行通信,對CAD功能進行定制[5-6]。

1.2ObjectARX應用程序開發環境

開發ObjectARX應用程序需要ObjectARX提供的SDK(Software Development Kit,軟件開發工具包)。SDK工具包主要提供了開發ARX應用程序所需的庫文件、頭文件、程序設計示例和幫助使用說明。在AutoCAD不同版本運行的ARX應用程序需要不同的ObjectARX開發環境支持和各自的編譯鏈接工具。本文采用AutoCAD 2008和Microsoft Visual Studio 2005作為開發平臺進行研制。

2 利用ObjectARX進行AutoCAD二次開發實例

2.1圖形批量處理流程

線劃圖文件批量處理包括修改實體數據以及新增實體數據,其處理流程分別如下圖1、圖2所示。

2.1.1 打開圖形 在獲取Database對象之前,首先得打開CAD圖形。打開CAD圖形有2種方式:一種是前臺打開,一種是后臺打開。軟件研發一般采用的是后臺打開圖形,使用后臺打開可以提高文件的處理效率,同時可以避免用戶的誤操作。

圖1 批量修改實體

圖2 批量增加實體

1)前臺打開圖形。

DocumentCollection acDocMgr=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;

doc=acDocMgr.Open(strFileName,false);//其中strFileName表示要處理的文件名。

Database db=doc.Database;

2)后臺打開圖形。

Database db=new Database(false,true))

db.ReadDwgFile(strFileName,FileShare.ReadW-

rite,true,null)。

2.1.2 獲取比例尺數據 對于已打開的圖形,需要檢查其比例尺是否是對應的比例尺。不同比例尺的圖形、線型寬度、字體大小等參數不一致。本文只對指定比例尺(如比例尺為1:500)的圖形進行批量處理,其他比例尺的圖形不作處理。獲取比例尺的代碼如下

double currentScale=Convert.ToDouble(Cad-

App.GetSystemVariable("Userr1"))。

2.1.3 創建事務

Transaction trans=db.TransactionManager.StartTransaction()。

2.1.4 選擇對象

1)選擇圖形實體。

BlockTableRecord p_BlockTableRecord=(Bloc-kTableRecord)trans.GetObject(db.CurrentSpaceId,OpenMode.ForWrite);

foreach (ObjectId objId in p_BlockTableRecord)

{Entity ent=(Entity)trans.GetObject(objId,OpenMode.ForWrite)}。

2)選擇圖層。

LayerTable layerTbl=(LayerTable)trans.GetObject(db.LayerTableId,OpenMode.ForWrite);

foreach (ObjectId layerId in layerTbl)

{LayerTableRecord p_LayerTableRecord=(LayerTableRecord)trans.GetObject(layerId,OpenMode.ForWrite)}。

2.1.5 判斷對象 AutoCAD中的實體(Entity)對象比較豐富,常用的有文本對象、線對象等。文本對象包括單行文本(DBText)、多行文本(MText)。線對象包括直線(Line)、多段線(Polylines)、二維多線段(polyline2d)、圓(Circle)、圓弧(Arc)、橢圓(Ellipse)等。另外還有擦除對象(Wipeout)、填充(Hatch)等。

在遍歷文本/線對象時,可以先排除Wipeout、Hatch對象,減少遍歷的次數。

2.1.6 實體參數設置及修改 實體參數常用的設置包括:顏色(Color)、顏色索引(ColorIndex)、層(LayerId)、線型(LinetypeId)、線型比例(LinetypeScale)、線寬(ConstantWidth)、字體(TextStyle)、多行文本的字高(TextHeight)、單行文本的字高(Height)、單行文本的傾斜度(Oblique)等。

2.1.7 添加實體 以添加文本對象為例,添加其他實體可以參考以下代碼。

BlockTableRecord p_BlockTableRecord=(Blo-

ckTableRecord)trans.GetObject(db.CurrentSpacel-

d,OpenMode.ForWrite);

BlkTblRec.AppendEntity(text);

trans.AddNewlyCreatedDBObject(text, true)。

2.1.8 結束操作 在文件處理結束后需要保存文件的修改,然后關閉打開的圖形,同時刪除后綴為bak的同名文件。

2.2CASS編碼處理

在對數字線劃圖處理過程中,每個實體要素屬性中都包含有CASS碼,在增加新實體時,需要賦予實體對應的CASS碼。當選擇實體,有時需要對CASS碼進行判斷。CASS碼在Autocad以ResultBuffer類對象進行存儲。ResultBuffer數據由一個數據類型描述和一個值組成。CASS碼的類型描述為“SOUTH”。

1)獲取CASS碼。

ResultBuffer resBuf=ent.GetXDataForApplication("SOUTH");

TypedValue entXData=resBuf.AsArray()[1];

cassText=entXData.Value.ToString();//即為CASS編碼。

2)新增/修改CASS碼。

以新增CASS碼為140009的居民地說明注記為例,代碼如下:

ResultBuffer resBuf=new ResultBuffer();

resBuf.Add(new TypedValue(1001,"SOUTH"));

resBuf.Add(new TypedValue(1000,"140009"));

text.XData=resBuf。

2.3成果展示

2.3.1 批量處理工具 本文采用ObjectARX和C#.NET對AutoCAD2008進行研發,其菜單功能如圖3所示,多個文件進行批量處理的工具包含批量清理圖形(purge命令)、批量修改圖層顏色、批量修改實體分層、批量修改線型樣式、批量修改文字樣式、批量刪除空文字、批量修改文字內容、批量修改文字Z坐標、批量修改文字旋轉/傾斜角度、批量修改一般高程點的小數位數、批量修改控制點的高程小數位數。

圖3 菜單界面

圖4 線劃圖一鍵更新界面

其中批量清理圖形(purge命令)是調用purge函數清除BlockTable、LayerTable、TextStyleTable、LinetypeTable、ViewTable、UcsTable、ViewportTable、RegAppTable、DimStyleTable中的冗余數據。批量修改圖層顏色是將圖形中的圖層設置為指定的顏色,如將居民地(JMD)層顏色設置為(35,24,21),方法為調用setLayerColor函數設置LayerTable中的對象。批量修改實體分層是將指定CASS碼的實體放在指定的圖層,如將一般房屋(CASS碼為141101的實體)放在居民地(JMD)層,方法為修改選中實體的LayerId屬性。批量修改線型樣式是將圖形中的線型實體設置為指定的線型。批量修改文字樣式是將圖形中文字實體設置為指定的字體。批量刪除空文字是將內容為空的文字進行刪除,文字內容可用TextString函數進行獲取。批量修改文字內容是將文字內容進行批量替換,如將“草”替換成“草坪”。批量修改文字Z坐標是將文字的Z坐標修改為統一的值,一般設為0。批量修改文字旋轉/傾斜角度是修改文字的Rotation以及Oblique屬性。批量修改一般高程點的小數位數是將圖形中的一般高程點注記的小數位數設為統一的值,如設為2位小數則會將2位以上以及不足2位的注記值修改為保留2位小數。批量修改控制點的小數位數是將圖形中的控制點注記的小數位數設為一個固定的值,如將三角點高程注記(CASS碼為131100-1)統一保留3位小數。

在實際處理過程中,可以根據用戶需求一次處理多個事務,如圖4中定制“線劃圖一鍵更新”操作。該操作包括以下5個事務:批量修改圖層顏色、批量修改實體顏色、批量修改實體分層、批量修改線型樣式以及批量修改文字樣式。

2.3.2 處理結果對比 圖5、圖6是采用“線劃圖一鍵更新”操作,對線劃圖的圖層顏色、實體顏色、實體圖層分類、線型、文本樣式進行處理的前后對比圖,通過對比發現該程序可以批量修改線劃圖文件,效果令人滿意。

圖5 原始圖形

圖6 處理后的圖形

3 結論

ObjectARX是AutoCAD采用面向對象語言進行二次開發的有效工具,包含了很多工具集,允許開發者利用AutoCAD的開放體系結構,直接訪問AutoCAD圖形數據庫和圖形系統??梢岳肅#.NET的強大功能進行研發出符合用戶需求的功能。如本文提到的線劃圖文件批量處理功能,可以對多個線劃圖文件執行相同的操作,提高工作效率,降低數據生產、制作的成本。

[1]張巨林,陳兆煙,謝剛生.基于ObjectARX的用戶地圖符號庫系統的設計與開發[J].測繪通報,2013(11):109-111.

[2]江書勇.基于ObjectARX的圖形自動編程系統的研究與開發[D].成都:四川大學,2003.

[3]劉同成,林愉.基于ObjectARX的AutoCAD二次開發及應用實例[J].自動化技術與應用,2006,25(5):35-37.

[4]肖萌萌,黃美發,孫永厚,等.基于ObjectARX2010的尺寸鏈公差自動生成及自動查詢方法[J].桂林電子科技大學學報,2013,33(5):398-401.

[5]于蕭榕,郭昌言,陳剛.結合Objectarx和C#進行AutoCAD二次開發框架的研究[J].科學技術與工程,2010(20):5085-5091.

[6]黃健榮,郭昌言,于蕭榕.基于ObjectARX的離心標牌刻度線繪制的應用[J].計算機與數字工程,2013(8):1343-1346.

StudyonBatchProcessingforDigitalLineGraphFilesBasedonObjectARX

SHI Suyi,XIONG Junhua

(Kunming University of Science and Technology,650093,Kunming,PRC)

Digital line graph (DLG) is one of the digital products of fundamental geographical information in China,in general,surveying and mapping achievement is digital line graph.The more widely used format of DLG is DWG format in AutoCAD.This paper described batch processing for line topographic map files on the DWG format.Batch processing for graphics files refers to same operation on a plurality of graphics files on the user′s behalf,which can be done automatically by computer.The common development tool of AutoCAD is ObjectARX.The secondary development of AutoCAD based on ObjectARX and C#.NET has been investigated in this paper.The technology of batch processing for line topographic map files has been realized.It has practical significance and extensive application prospects.

digital line graph;ObjectArx;batch processing;AutoCAD

2014-05-29;

2014-07-11

施蘇毅(1981-),男,云南昆明人,工程碩士,主要研究方向:地理信息系統。

10.13990/j.issn1001-3679.2014.04.013

P209

A

1001-3679(2014)04-0482-05

猜你喜歡
二次開發文本
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
在808DA上文本顯示的改善
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
論《柳毅傳》對前代文本的繼承與轉化
人間(2015年20期)2016-01-04 12:47:10
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 99er这里只有精品| 国产XXXX做受性欧美88| 国产日本一区二区三区| 欧美成人第一页| 园内精品自拍视频在线播放| www.狠狠| 国产成人精品一区二区| 欧美黑人欧美精品刺激| 国产精品视频公开费视频| 成人欧美日韩| 亚洲色图欧美| 久久无码高潮喷水| 亚洲精品福利网站| 人妻精品全国免费视频| 71pao成人国产永久免费视频| 国产又色又刺激高潮免费看| 日本不卡免费高清视频| 人妻一区二区三区无码精品一区| 伊人大杳蕉中文无码| 亚洲欧美精品在线| 亚洲美女久久| 久久99国产视频| 亚洲一区二区黄色| 免费毛片在线| 日韩欧美中文在线| 亚洲91精品视频| 中文无码精品A∨在线观看不卡 | 亚洲三级影院| 99精品视频在线观看免费播放| 谁有在线观看日韩亚洲最新视频| 中文字幕久久波多野结衣| 日本色综合网| 天堂网亚洲系列亚洲系列| 男人天堂伊人网| 亚洲视频一区| 亚洲日韩国产精品综合在线观看| 日韩黄色在线| 毛片基地美国正在播放亚洲| 亚洲国产综合自在线另类| 日韩无码一二三区| 茄子视频毛片免费观看| 国产一区二区视频在线| 无码日韩人妻精品久久蜜桃| 秋霞午夜国产精品成人片| 免费一级全黄少妇性色生活片| 久久久无码人妻精品无码| 亚洲色成人www在线观看| 欧美激情伊人| 亚洲伊人天堂| 99精品国产自在现线观看| 午夜视频www| 日韩乱码免费一区二区三区| 欧美国产视频| 国产男女XX00免费观看| 91美女视频在线观看| 91www在线观看| 又猛又黄又爽无遮挡的视频网站| 亚洲精品午夜无码电影网| 国产第一页第二页| 高清免费毛片| 一区二区三区国产| 丝袜国产一区| 人妻夜夜爽天天爽| 国产成人91精品| 亚洲综合色区在线播放2019| 国产在线视频导航| 四虎影视国产精品| av色爱 天堂网| 精品国产免费第一区二区三区日韩| 色综合天天操| 热久久综合这里只有精品电影| 国产嫖妓91东北老熟女久久一| 最新国产精品鲁鲁免费视频| 亚洲综合色吧| 欧美影院久久| 国产迷奸在线看| 欧美中文字幕一区| 伊人久久久久久久| 亚洲自偷自拍另类小说| 午夜性刺激在线观看免费| 夜夜高潮夜夜爽国产伦精品| 99视频在线精品免费观看6|