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

利用ObjectARX技術合并dwg文件的軟件研制★

2012-08-01 07:30:52侯曉燕魯先龍
山西建筑 2012年28期
關鍵詞:圖紙界面設置

侯曉燕 魯先龍 崔 強

(中國電力科學研究院,北京 102401)

1 概述

在工程設計中,有很多相似的圖,幾十個甚至上百個,需要合并到一張圖紙上,便于校對和出版。可是AutoCAD沒有提供批量自動合并多個dwg文件的功能,只能打開要合并的dwg文件,挨個單獨復制粘貼。基于上述需求,開發了一個界面友好、實用可靠、效率高的合并多個dwg文件的軟件,使設計后期圖紙校對和出版工作趨于簡單方便、高效和智能化。

2 軟件簡介

2.1 軟件功能

合并多個dwg文件生成圖紙一覽圖的軟件界面如圖1所示。用戶可以通過瀏覽文件對話框,批量選擇電腦上的任意dwg文件,添加到圖紙文件列表中。可以通過操作按鈕:上移、下移、刪除和清空來調整圖紙文件順序。可以設定生成圖紙一覽表的參數:每行文件個數、行間距及列間距,并可設置統一縮放比例或統一圖紙文件高度。如果要合并的圖紙文件高度相差不多,建議選擇按統一比例縮放;如果文件高度相差較大,建議選擇設置統一文件高度,這樣合并出的圖紙文件比較美觀。

圖1 合并多個dwg文件的軟件界面

2.2 軟件實例

如把6個dwg文件合并生成到一張圖紙上,圖紙文件高度和寬度不完全一致,設置了圖紙統一高度為400 mm,行間距為25 mm,列間距為25 mm。軟件根據設置的高度與圖紙本身的高度,讀取計算出每個圖紙的縮放比例,然后將圖紙按照各自不同的比例縮放。每個圖紙下面標注了該文件的路徑,便于用戶區分。本軟件性能好,可靠性高。經測試,CPU:2.4 GHZ,1 GB內存,AutoCAD 2004,合并100個dwg文件只需2 min。

3 關鍵技術

3.1 軟件開發環境

AutoCAD開放的體系結構使其二次開發功能應用廣泛,目前常用的 AutoCAD的二次開發工具有:Visual Lisp,VBA,Object-ARX。ObjectARX是一個以C++語言為基礎的面向對象的開發環境和應用程序接口。它本質上是Windows動態鏈接庫(DLL)程序,與AutoCAD共享地址空間,可以直接訪問AutoCAD數據庫核心數據結構和代碼。ObjectARX與其他的AutoCAD二次開發工具相比,速度更快,穩定性更好,運行效率最高,代碼可重用性強,而且支持MFC,能簡捷高效地實現許多復雜功能。

進行ObjectARX開發需具備兩個工具:1)與AutoCAD版本對應的ObjectARX開發包;2)與ObjectARX開發包版本對應的Visual C++版本作為開發工具。本軟件為了達到最大兼容性,編程環境為:ObjectARX 2002,VC6.0,支持 AutoCAD 2002。為了兼容更高版本的AutoCAD,需要將代碼在其他環境下編譯,編譯環境見表1。這樣可以實現軟件兼容 AutoCAD 2002,AutoCAD 2004,AutoCAD 2005,AutoCAD 2006,AutoCAD 2007,AutoCAD 2008,AutoCAD 2009,AutoCAD 2010共8個版本。

表1 軟件編譯環境

3.2 設置AutoCAD版本

用戶需先設置AutoCAD的版本和路徑后,才能生成施工圖。可以點擊圖1界面下方的“設置AutoCAD版本”按鈕,會彈出設置AutoCAD版本和路徑的窗體,如圖2所示。

圖2 設置AutoCAD版本界面

用戶選擇版本和路徑后,點擊圖3中“確定”按鈕,程序內部處理流程如圖3所示,圖中的數字代表處理順序。軟件會重寫acad.rx和生成fpCAD.lnk文件。acad.rx文件記錄了AutoCAD打開時執行的ARX文件,AutoCAD每次打開時都會讀取acad.rx文件,執行繪圖命令。fpCAD.lnk文件是AutoCAD的快捷方式,指定了起始位置和目標可執行文件,起始位置為當前程序的安裝路徑,目標可執行文件為用戶指定的AutoCAD可執行文件。使用快捷方式可從當前路徑下打開AutoCAD,AutoCAD打開時會讀取當前路徑下的acad.rx,然后執行acad.rx文件中指定的ARX文件。最后ARX文件操作AutoCAD執行繪圖命令,生成施工圖。

圖3 設計AutoCAD版本流程

3.3 程序處理流程

用戶點擊“生成圖紙一覽表”按鈕之后,程序的處理流程如圖4所示。首先保存用戶在界面上輸入的信息,并修改acad.rx文件,此文件記錄了AutoCAD打開時執行的ARX程序。接著,打開AutoCAD,讀取 acad.rx,加載ARX程序。ARX程序從入口函數acrxEntryPoint()進入,執行創建的繪圖命令。該命令根據讀取的用戶在界面上輸入的信息,循環計算圖紙文件的插入位置及縮放比例,接著將文件打開、制作成塊、將塊插入。最后保存合并生成的施工圖。

圖4 程序處理流程

3.4 核心代碼

本軟件的難點是在要合并生成的圖紙上插入dwg文件。本軟件的處理方法是:打開dwg文件、將其作為塊插入、關閉dwg文件。本小節給出了部分核心代碼。

3.4.1 打開 dwg文件

打開dwg文件需新建一個空的數據庫對象。因為AutoCAD的向下兼容性,AutoCAD低版本打不開高版本的dwg文件,所以需判斷是否能打開。

AcDbDatabase*pDwg=new AcDbDatabase

(Adesk::kFalse);

if(Acad::eOk!=pDwg->readDwgFile(blkName))

{acedAlert(_T("圖紙文件:")+blkName+_T("無法打開!"));

delete pDwg;

return;}

3.4.2 獲取文件圖形范圍

需獲取已打開的圖紙文件的高度和寬度,可通過讀取左下角坐標和右上角坐標來實現,代碼如下:pDwg->updateExt(TRUE);pointleft=pDwg->extmin();pointright=pDwg->extmax();

3.4.3 制作塊

本程序將dwg文件做成塊時,統一將坐標(0,0,0)作為基點,代碼如下:

AcDbObjectId blockId;

Acad::ErrorStatus es = acdbHostApplicationServices()->workingDatabase()-> insert(blockId,blkName+"name",pDwg,Adesk::kFalse);

3.4.4 設置插入塊

首先實例AcDbBlockReference對象,然后設置插入塊的縮放比例、插入位置和旋轉角度。

AcDbBlockReference*pBlkRef=new AcDbBlockReference();

pBlkRef->setBlockTableRecord(blockId);

pBlkRef-> setScaleFactors(AcGeScale3d(s,s,1));

pBlkRef-> setPosition(AcGePoint3d(pt[X]-pointleft.x*s,pt[Y]-pointleft.y*s,0.0))

pBlkRef-> setRotation(0.0);

3.4.5 分解塊

分解塊便于用戶對塊內的每個實體根據需要進行修改。ObjectARX提供了AcDbVoidPtrArray指針數組,可以將分解后的塊中的所有實體添加到此數組中,然后逐個訪問這一集合中所有的實體并添加到塊表記錄中。

AcDbEntity*pEnt=NULL;

AcDbVoidPtrArray entitySet;

es=pBlkRef->explode(entitySet);

AcDbEntity* ent;

for(int i=0;i< entitySet.length();i++)

{ent=(AcDbEntity*)entitySet.at(i);

AppendEntity(ent);}

4 結語

根據設計工作實際需求,利用ObjectARX技術編制了此軟件。實現了自定義設置間距、圖紙高度、圖紙的比例等,不但使合并生成的圖紙整齊美觀滿足出版需求,而且可以根據不同的需求靈活排列。滿足了設計過程中審圖時打印縮略圖紙的需要,使大幅面繪圖儀的效率成倍提高,紙張的利用率也提高了很多。該軟件可廣泛應用于電力、機械、水利、建筑等工程設計領域,實用性較強。可在Windows XP及以上操作系統使用,可移植性高,并兼容AutoCAD 2002~2010共8個版本。

[1] 于蕭榕.基于ObjectARX的標牌曲線文字繪制的研究[J].現代電子技術,2011,34(18):26-28.

[2] 陳海霞,高廣德.基于ObjectARX和Visual C++開發工具的格柵參數化設計[J].三峽大學學報,2006,28(1):61-64.

[3] 羅仕庭,漆泰岳,王偉峰.基于ObjectARX的公路隧道襯砌結構計算[J].四川建筑,2008,28(2):42-44.

[4] 馬萬杰,夏國棟,姜 昆,等.基于ObjectARX的AutoCAD塑料模標準件系統的研究與實現[J].模具技術,2009(2):37-39.

[5] 劉喜平.基于ObjectARX的粗糙度自動標注系統[J].吉林建筑工程學院學報,2011,28(4):64-67.

猜你喜歡
圖紙界面設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
淺談汽車線束產品圖紙管理
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
看圖紙
當代工人(2019年20期)2019-12-13 08:26:11
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
酒店室內裝修圖紙深化設計淺析
河南科技(2014年12期)2014-02-27 14:10:44
主站蜘蛛池模板: 免费又爽又刺激高潮网址| 亚洲综合日韩精品| 人妻出轨无码中文一区二区| 亚洲高清在线播放| 毛片免费试看| 任我操在线视频| 超清无码熟妇人妻AV在线绿巨人| 国产欧美另类| 狠狠色丁香婷婷| 女同国产精品一区二区| 久久国产热| 亚洲不卡无码av中文字幕| 91久久偷偷做嫩草影院精品| 欧美激情综合| 国产一级在线观看www色 | 91免费在线看| 亚洲高清无在码在线无弹窗| 色综合中文| 日韩美毛片| 日韩精品视频久久| 亚洲欧美激情小说另类| 欧美视频在线不卡| 国产一级在线播放| 日韩人妻无码制服丝袜视频| 久久久久久午夜精品| 国产玖玖视频| 手机看片1024久久精品你懂的| 欧美精品色视频| 色综合五月| 久久国产V一级毛多内射| 黄色片中文字幕| 久久久精品国产SM调教网站| 欧美日韩第二页| 国产成+人+综合+亚洲欧美| 国产精品蜜臀| 毛片在线区| av大片在线无码免费| 六月婷婷综合| 国产SUV精品一区二区| 色香蕉影院| 日韩av电影一区二区三区四区| 不卡无码h在线观看| 久久人体视频| 亚洲成综合人影院在院播放| 免费国产福利| 亚洲最新在线| 精品综合久久久久久97超人| 在线观看视频一区二区| 中文字幕在线看| 日韩一区二区在线电影| 亚洲视频一区| 日韩美女福利视频| 亚洲国产理论片在线播放| 国产成人无码AV在线播放动漫 | 国产成人禁片在线观看| 一本色道久久88| 国产精品无码AV片在线观看播放| 国产 在线视频无码| 成人自拍视频在线观看| 91福利在线看| 亚洲一级无毛片无码在线免费视频 | 日韩精品少妇无码受不了| 国产AV无码专区亚洲A∨毛片| 伊人久久综在合线亚洲91| 99re在线视频观看| 国产毛片高清一级国语| 亚洲91精品视频| 老司机久久99久久精品播放| 欧美亚洲第一页| 尤物国产在线| 亚洲欧洲天堂色AV| 久久精品无码专区免费| 日本不卡视频在线| 无码一区中文字幕| 日韩高清欧美| 97超爽成人免费视频在线播放| 中文字幕在线一区二区在线| 色综合中文综合网| 久久精品免费看一| 国产欧美精品一区二区| 国产正在播放| 日韩在线播放中文字幕|