亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用ObjectARX技術(shù)合并dwg文件的軟件研制★

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

        侯曉燕 魯先龍 崔 強(qiáng)

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

        1 概述

        在工程設(shè)計(jì)中,有很多相似的圖,幾十個(gè)甚至上百個(gè),需要合并到一張圖紙上,便于校對和出版。可是AutoCAD沒有提供批量自動(dòng)合并多個(gè)dwg文件的功能,只能打開要合并的dwg文件,挨個(gè)單獨(dú)復(fù)制粘貼?;谏鲜鲂枨螅_發(fā)了一個(gè)界面友好、實(shí)用可靠、效率高的合并多個(gè)dwg文件的軟件,使設(shè)計(jì)后期圖紙校對和出版工作趨于簡單方便、高效和智能化。

        2 軟件簡介

        2.1 軟件功能

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

        圖1 合并多個(gè)dwg文件的軟件界面

        2.2 軟件實(shí)例

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

        3 關(guān)鍵技術(shù)

        3.1 軟件開發(fā)環(huán)境

        AutoCAD開放的體系結(jié)構(gòu)使其二次開發(fā)功能應(yīng)用廣泛,目前常用的 AutoCAD的二次開發(fā)工具有:Visual Lisp,VBA,Object-ARX。ObjectARX是一個(gè)以C++語言為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境和應(yīng)用程序接口。它本質(zhì)上是Windows動(dòng)態(tài)鏈接庫(DLL)程序,與AutoCAD共享地址空間,可以直接訪問AutoCAD數(shù)據(jù)庫核心數(shù)據(jù)結(jié)構(gòu)和代碼。ObjectARX與其他的AutoCAD二次開發(fā)工具相比,速度更快,穩(wěn)定性更好,運(yùn)行效率最高,代碼可重用性強(qiáng),而且支持MFC,能簡捷高效地實(shí)現(xiàn)許多復(fù)雜功能。

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

        表1 軟件編譯環(huán)境

        3.2 設(shè)置AutoCAD版本

        用戶需先設(shè)置AutoCAD的版本和路徑后,才能生成施工圖??梢渣c(diǎn)擊圖1界面下方的“設(shè)置AutoCAD版本”按鈕,會彈出設(shè)置AutoCAD版本和路徑的窗體,如圖2所示。

        圖2 設(shè)置AutoCAD版本界面

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

        圖3 設(shè)計(jì)AutoCAD版本流程

        3.3 程序處理流程

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

        圖4 程序處理流程

        3.4 核心代碼

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

        3.4.1 打開 dwg文件

        打開dwg文件需新建一個(gè)空的數(shù)據(jù)庫對象。因?yàn)锳utoCAD的向下兼容性,AutoCAD低版本打不開高版本的dwg文件,所以需判斷是否能打開。

        AcDbDatabase*pDwg=new AcDbDatabase

        (Adesk::kFalse);

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

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

        delete pDwg;

        return;}

        3.4.2 獲取文件圖形范圍

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

        3.4.3 制作塊

        本程序?qū)wg文件做成塊時(shí),統(tǒng)一將坐標(biāo)(0,0,0)作為基點(diǎn),代碼如下:

        AcDbObjectId blockId;

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

        3.4.4 設(shè)置插入塊

        首先實(shí)例AcDbBlockReference對象,然后設(shè)置插入塊的縮放比例、插入位置和旋轉(zhuǎn)角度。

        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 分解塊

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

        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 結(jié)語

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

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

        [2] 陳海霞,高廣德.基于ObjectARX和Visual C++開發(fā)工具的格柵參數(shù)化設(shè)計(jì)[J].三峽大學(xué)學(xué)報(bào),2006,28(1):61-64.

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

        [4] 馬萬杰,夏國棟,姜 昆,等.基于ObjectARX的AutoCAD塑料模標(biāo)準(zhǔn)件系統(tǒng)的研究與實(shí)現(xiàn)[J].模具技術(shù),2009(2):37-39.

        [5] 劉喜平.基于ObjectARX的粗糙度自動(dòng)標(biāo)注系統(tǒng)[J].吉林建筑工程學(xué)院學(xué)報(bào),2011,28(4):64-67.

        猜你喜歡
        圖紙界面設(shè)置
        中隊(duì)崗位該如何設(shè)置
        淺談汽車線束產(chǎn)品圖紙管理
        國企黨委前置研究的“四個(gè)界面”
        看圖紙
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
        人機(jī)交互界面發(fā)展趨勢研究
        本刊欄目設(shè)置說明
        中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
        手機(jī)界面中圖形符號的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        酒店室內(nèi)裝修圖紙深化設(shè)計(jì)淺析
        河南科技(2014年12期)2014-02-27 14:10:44
        456亚洲人成影视在线观看| 国产av一区二区三区在线播放| 国产玉足榨精视频在线观看| 午夜无码伦费影视在线观看| 欧美日本亚洲国产一区二区| 日本人妻少妇精品视频专区| 加勒比婷婷色综合久久| 乱码av麻豆丝袜熟女系列| 中日av乱码一区二区三区乱码| 最新欧美一级视频| 国产av一区二区网站| 日本污ww视频网站| 一本无码人妻在中文字幕免费| 三级国产女主播在线观看| 免费人成黄页在线观看国产| 国产99久久久国产精品~~牛| av潮喷大喷水系列无码| 日本在线观看不卡| 日韩www视频| 厕所极品偷拍一区二区三区视频| 亚洲日本人妻少妇中文字幕| 亚洲人成77777在线播放网站| 国产精品第一二三区久久蜜芽| 国产人成在线成免费视频| 亚洲熟女少妇精品综合| av 日韩 人妻 黑人 综合 无码| 欧美一级欧美一级在线播放| 国产精品专区一区二区av免费看| 男女18视频免费网站| 久久精品免费一区二区三区| 国内精品伊人久久久久av| 男的和女的打扑克的视频| 成人日韩熟女高清视频一区| 国产精品久久久久久无码| 欧美精品久久久久久三级| 国产一品二品三区在线观看| 欧美亚洲国产一区二区三区| 夜夜综合网| 青青草视频在线免费视频 | 亚洲av纯肉无码精品动漫| 国产亚洲精品性爱视频|