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

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

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

侯曉燕 魯先龍 崔 強

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

1 概述

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

2 軟件簡介

2.1 軟件功能

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

圖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的版本和路徑后,才能生成施工圖??梢渣c擊圖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
主站蜘蛛池模板: 欧美亚洲激情| 亚洲人成网站日本片| 欧美精品在线视频观看| 国产成人1024精品| 国产农村精品一级毛片视频| 92精品国产自产在线观看| 免费a在线观看播放| 天天干天天色综合网| 国产无码精品在线播放 | 日韩av电影一区二区三区四区| 国产精品lululu在线观看| 成人综合网址| 亚洲欧美日韩成人高清在线一区| 国产网站一区二区三区| 青青草一区| 无码国产伊人| 国产午夜福利片在线观看| 亚洲欧美不卡| 91啦中文字幕| 无码精油按摩潮喷在线播放 | 亚洲码在线中文在线观看| 日韩AV无码免费一二三区| 日韩免费毛片| 国产精选小视频在线观看| 无码 在线 在线| 国内精品自在欧美一区| 国产成人一区在线播放| 五月天福利视频| 国产尹人香蕉综合在线电影 | 日韩在线影院| 亚洲色图综合在线| 91精品国产91欠久久久久| 中文字幕人成人乱码亚洲电影| 91在线无码精品秘九色APP | 亚洲人成在线精品| 2020国产精品视频| 亚洲最大福利网站| 狠狠色噜噜狠狠狠狠色综合久| 麻豆AV网站免费进入| 国产欧美在线观看精品一区污| 免费在线播放毛片| 欧美日韩在线成人| 日韩精品毛片人妻AV不卡| 极品国产在线| 亚洲成人免费看| 中文字幕在线视频免费| 国产黑人在线| 色屁屁一区二区三区视频国产| 日韩毛片免费视频| 欧美一级黄片一区2区| 亚洲福利视频一区二区| 高清无码手机在线观看| 亚洲av无码成人专区| 亚洲欧洲AV一区二区三区| 91丝袜乱伦| 美女内射视频WWW网站午夜 | 一级毛片基地| 免费观看国产小粉嫩喷水 | 亚洲国产清纯| 久久香蕉欧美精品| 亚洲看片网| 手机精品福利在线观看| 久久久久久国产精品mv| 伊大人香蕉久久网欧美| 999国内精品久久免费视频| 在线99视频| 午夜视频免费试看| 亚洲欧美h| 爆操波多野结衣| 欧洲一区二区三区无码| 中文一级毛片| 免费国产一级 片内射老| 直接黄91麻豆网站| 精品国产毛片| 精品伊人久久久久7777人| 蜜桃臀无码内射一区二区三区| 国产伦精品一区二区三区视频优播 | 玖玖精品视频在线观看| 暴力调教一区二区三区| 亚洲愉拍一区二区精品| 久久婷婷人人澡人人爱91| 亚洲一区二区日韩欧美gif|