久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

Rss & SiteMap

曙海教育集團(tuán)論壇 http://www.bjzhda.cn

曙海教育集團(tuán)論壇
共2 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標(biāo)題:基于ObjectARX的焊接符號標(biāo)注系統(tǒng)開發(fā)

1樓
wangxinxin 發(fā)表于:2010-11-22 13:45:54

摘要:對在AutoCAD2000中實現(xiàn)焊接符號快速標(biāo)注的原理和方法進(jìn)行了研究,提出了以人機交互方式實現(xiàn)焊接符號標(biāo)注的系統(tǒng)運行模式,設(shè)計了具有良好人機學(xué)特性的系統(tǒng)界面,極大地提高了焊接符號標(biāo)注的效率。以VisualC  6.0和ObjectARX3.0為開發(fā)工具,運用自定義實體類技術(shù),通過對一系列ObjectARX類函數(shù)的重載,開發(fā)了基于AutoCAD2000的焊接符號快速標(biāo)注系統(tǒng)。詳細(xì)討論了從AcDbEntity類派生自定義焊接符號類所涉及的相關(guān)應(yīng)用技術(shù)。

關(guān)鍵詞:焊接符號;ObjectARX;AcDbEntity類;AcEdJig類;AcDbObject類

 

AutoCAD是目前微機系統(tǒng)中廣泛使用的CAD繪圖軟件,利用它可以大大提高繪圖的效率和自動化程度。但AutoCAD本身是一個通用的CAD支撐軟件,隨著CAD應(yīng)用的不斷深入,應(yīng)用范圍的不斷拓寬,越來越多的用戶需要借助二次開發(fā)來使該系統(tǒng)更好地適應(yīng)本地使用需求。很多行業(yè)有自己的專用符號體系,各自的標(biāo)注規(guī)則,這時AutoCAD自帶的標(biāo)注系統(tǒng)很難滿足用戶的需求。好在AutoCAD提供了很強的二次開發(fā)手段,借助這些開發(fā)手段,可以把這種使用率很高的繪圖過程用簡單的命令加以實現(xiàn)。

 

ObjectARX(AutoCADRuntimeeXtension)工具是Autodesk公司推出的一種新的AutoCAD二次開發(fā)工具,采用并支持面向?qū)ο蠹夹g(shù),是新一代AutoCAD二次開發(fā)的首選工具[1]。利用它的類庫,可解決許多AutoLisp、ADS、VBA難以解決或不能解決的問題[2],提高開發(fā)效率。ARX應(yīng)用程序利用AutoCAD核心數(shù)據(jù)庫結(jié)構(gòu)、圖形系統(tǒng)、幾何造型核心及代碼,建立和AutoCAD本身固有命令有同樣操作方式的新命令。利用ObjectARX開發(fā)工具進(jìn)行CAD應(yīng)用系統(tǒng)開發(fā)已有一些成功的案例,如用ObjectARX開發(fā)滑動軸承結(jié)構(gòu)CAD設(shè)計系統(tǒng)。[3]

 

本文對在AutoCAD中實現(xiàn)機械設(shè)計中常用的焊接符號的標(biāo)注進(jìn)行了深入研究。本系統(tǒng)以Auto CAD2000為平臺,以VisualC  6.0和ObjectARX3.0為二次開發(fā)工具[4],成功地實現(xiàn)了常用焊接符號的標(biāo)注。本系統(tǒng)以選擇坡口的形式來決定焊接符號,符合設(shè)計人員的設(shè)計習(xí)慣,把用戶從繁雜的焊接符號選擇和組合中解放出來。本標(biāo)注系統(tǒng)生成的焊接符號是從AcDbEntity類派生的自定義類的對象,因此它具有AutoCAD實體的各種屬性和操作方式。焊接符號生成后用戶可以很方便地修改它的層、字體,對它進(jìn)行平移、縮放、拉伸等操作,極大地滿足了后期對設(shè)計圖進(jìn)行編輯和修改的需要。

 

1 系統(tǒng)開發(fā)、運行環(huán)境

 

本系統(tǒng)是在VisualC  6.0和ObjectARX3.0編程環(huán)境下開發(fā)的,可在AutoCAD2000下動態(tài)加載運行,操作系統(tǒng)為Windows98或Windows2000。

 

2 系統(tǒng)結(jié)構(gòu)及實現(xiàn)

 

本系統(tǒng)主要由三大部分組成,包括實現(xiàn)焊接符號的選擇及焊接參數(shù)輸入的對話框類、實現(xiàn)焊接標(biāo)注的自定義實體類、實現(xiàn)以拖動方式創(chuàng)建焊接標(biāo)注的自定義類。

 

2.1 實現(xiàn)焊接符號的選擇及焊接參數(shù)輸入的對話框類

 

這是系統(tǒng)的用戶界面。通過此用戶界面,用戶可進(jìn)行焊接符號的選擇和焊接參數(shù)的輸入,如圖1所示。用戶通過選擇焊接類型、焊縫類型、焊接的坡口形式,并輸入所選坡口參數(shù)進(jìn)行焊接符號的標(biāo)注,操作過程直觀、簡便[5,6]。

 

圖1 用戶界面  2.2 實現(xiàn)焊接標(biāo)注的自定義實體類

 

實現(xiàn)焊接標(biāo)注的自定義實體類是由AcDbEntity類派生而來的,因此在程序中必須重載AcDbEntity類及其父類AcDbObject的虛函數(shù)。實現(xiàn)焊接標(biāo)注的自定義實體類是本系統(tǒng)開發(fā)的關(guān)鍵部分。

 

2.2.1 重載函數(shù)worldDraw()

AutoCAD調(diào)用函數(shù)worldDraw()在屏幕上顯示實體,因此從基類AcDbEntity中派生自定義類時必須重載函數(shù)worldDraw()。其函數(shù)原型為:

virtualAdesk::BooleanworldDraw(AcGiWorldDraw mode)。

函數(shù)worldDraw()用于繪制圖形中與指定的模型空間或圖紙空間視口內(nèi)容無關(guān)的部分。World Draw()接受一個指向類AcGiWorldDraw對象的參數(shù)。對于AcGi類庫中的幾何對象和特征對象,類AcGi WorldDraw是一個容器類。它包括兩個對象:AcGi WorldGeometry對象和AcGiSubEntityTraits對象。在函數(shù)worldDraw()中,可以通過調(diào)用函數(shù)AcGiWorld Draw::geometry()來訪問AcGiWorldGeometry對象,通過調(diào)用函數(shù)AcGiWorldDraw::subEntityTraits()來訪問AcGiSubEntityTraits對象。

 

2.2.2 重載函數(shù)getGripPoints()和moveGripPointsAt()

為了實現(xiàn)自定義實體的夾點功能,本系統(tǒng)重載了這兩個函數(shù)。當(dāng)用戶使用定點設(shè)備選擇實體時,AutoCAD調(diào)用函數(shù)getGripPoints()返回實體類定義的夾點,并顯示該實體的夾點。此時AutoCAD就可以通過調(diào)用函數(shù)moveGripPointsAt()實現(xiàn)夾點編輯的移動操作。這兩個函數(shù)的原型為:

virtualAcad::ErrorStatusgetGripPoints(AcGe Point3dArraygripPoints,AcDbIntArray&osnapModes,AcDbIntArray&geomIds)const;

virtualAcad::ErrorStatusmoveGripPointsAt(constAcDbIntArrayindices,constAcGeVector3doffset)。

 

2.2.3 重載函數(shù)getStretchPoints()和moveStretch PointsAt()

實體的拉伸點集合通常是該實體的夾點集合的一個子集,當(dāng)用戶執(zhí)行命令STRETCH時,AutoCAD調(diào)用函數(shù)getStretchPoints()返回被選擇實體中定義的所有拉伸點。對于大多數(shù)實體來說,夾點編輯模式和拉伸點編輯模式是一致的。在本系統(tǒng)中函數(shù)getStretchPoints()和moveStretchPointsAt()只是調(diào)用了重載過后的getGripPoints()和moveGripPointsAt()函數(shù)。getStretchPoints()和moveStretchPointsAt()函數(shù)的原型為:

virtualAcad::ErrorStatusgetStretchPoints(AcGe Point3dArray)const;

virtualAcad::ErrorStatusmoveStretchPointsAt(constAcDbIntArrayindices,constAcGeVector3d&offset)。

 

2.2.4 重載函數(shù)transformBy()和getTransformedCopy()

 

類AcDbEntity提供了兩個轉(zhuǎn)換函數(shù):一個是函數(shù)transformBy(),它對實體進(jìn)行指定的矩陣變換操作;另一個是函數(shù)getTransformedCopy(),它首先復(fù)制自身,然后再對復(fù)制實體進(jìn)行指定的矩陣變換,并返回變換后的復(fù)制實體。當(dāng)用戶使用編輯中的移動、旋轉(zhuǎn)、比例縮放和鏡像模式時,AutoCAD就調(diào)用這兩個函數(shù)之一來實現(xiàn)相應(yīng)的操作。這兩個函數(shù)的原型為:

virtualAcad::ErrorStatustransformBy(constAcGe Matrix3dxform);

virtualAcad::ErrorStatusgetTransformedCopy(constAcGeMatrix3dxform,AcDbEntity &ent)const。

 

2.2.5 重載函數(shù)explode()

本系統(tǒng)中為了使AutoCAD的EXPLODE和BHATCH命令能正常運行,在應(yīng)用程序的自定義類中重載了函數(shù)explode(),重載后的explode()函數(shù)將自定義實體分解為簡單的本地實體。如果分解后的實體不是本地實體,BHATCH命令會再次調(diào)用函數(shù)explode()進(jìn)行分解,直至它們被分解為本地實體為止。BHATCH命令能直接操作的本地實體有:AcDb2dPolyline、AcDb3dPolyline、AcDbPolyline、AcDb Text、AcDbMText、AcDbShape、AcDbTrace、AcDbSolid、AcDbFace、AcDbViewport、AcDbFcf、AcDbDimension、AcDbRegion、AcDbBlockReference、AcDbHatch等。此函數(shù)的原型為:virtualAcad::ErrorStatusexplode(AcDbVoidPtrArrayentitySet)const。

 

2.2.6 重載文件操作函數(shù)

當(dāng)從類AcDbEntity派生自定義類時,需要重載AcDbEntity類的父類AcDbObject的4個用于從DWG和DXF文件中讀寫數(shù)據(jù)的函數(shù)。函數(shù)原型為:

virtualAcad::ErrorStatusdwgInFields(AcDbDwg Filer filer);

virtualAcad::ErrorStatusdwgOutFields(AcDbDwg Filer filer)const;

virtualAcad::ErrorStatusdxfInfields(AcDbDxfFiler filer);

virtualAcad::ErrorStatusdxfOutFields(AcDbDxf Filer filer)const。

 

以上每個函數(shù)的主要參數(shù)都是一個文件操作類(AcDbDwgFiler或AcDbDxfFiler)的指針,使用這個參數(shù),可以完成對DWG或DXF文件數(shù)據(jù)的讀寫操作。自定義類中重載了這4個函數(shù)后,就可以持久的保存對象,實現(xiàn)復(fù)制和撤銷操作。

 

派生AcDbEntity自定義類時需要注意2個問題:

 

1)定義了自定義類的應(yīng)用程序在運行初始化時必須調(diào)用函數(shù)rxInit(),它由任意一個ACRXxxxDEFINEMEMBERS()宏自動定義,并完成下面的任務(wù):注冊自定義類;創(chuàng)建類的描述符對象;將類描述符對象添加到類詞典中。然后調(diào)用函數(shù)acrxBuild ClassHierarchy()把該類添加到ACRX運行類層次中,最后在應(yīng)用程序的卸載函數(shù)中通過調(diào)用函數(shù)deleteAcRxClass()將該類從ACRX運行類層次中刪除。

 

2)當(dāng)自定義類中定義一個新的成員函數(shù)或重載基類的虛函數(shù)時,首先應(yīng)該調(diào)用函數(shù)assertReadEn abled()或assertWriteEnabled()或assertNotifyEnabled來校驗對象是否處于正確的打開狀態(tài)。

 

2.3 實現(xiàn)以拖動方式創(chuàng)建焊接標(biāo)注的自定義類

 

為了在創(chuàng)建焊接標(biāo)注的過程中實現(xiàn)拖動的效果,本系統(tǒng)從基類AcEdJig派生了一個自定義類用來實現(xiàn)此功能。類AcEdJig用于完成拖動效果,通常用于查詢、創(chuàng)建、編輯和添加一個新的實體到數(shù)據(jù)庫中。從基類AcEdJig派生新類必須重載成員函數(shù):AcEdJig::sampler()、AcEdJig::update()和AcEd Jig::entity()。這3個函數(shù)分別用于獲得一個幾何值,如角度、距離、輸入點等;分析并保存獲得的幾何值或者更新實體;返回重構(gòu)后的實體指針[7]。

 

本系統(tǒng)在自定義類中定義了一個重要的成員函數(shù)doIt(),它用來實現(xiàn)拖動循環(huán)過程。函數(shù)doIt()首先調(diào)用函數(shù)setDispPrompt()來顯示提示字符串,然后調(diào)用drag()函數(shù)來控制拖動循環(huán)。在拖動循環(huán)過程中,函數(shù)drag()依次調(diào)用sampler()、update()和en tity()函數(shù),直至循環(huán)結(jié)束。

 

拖動循環(huán)過程如圖2所示。圖中的代表用戶從AcEdJig基類派生的自定義類。

 

圖2 程序流程圖    由本系統(tǒng)生成的焊接標(biāo)注實例如圖3所示。

 

圖3 標(biāo)注實例  3 結(jié)束語

 

對基于AutoCAD平臺的應(yīng)用程序開發(fā)進(jìn)行了有益的嘗試,采用ObjectARX與VisualC  結(jié)合編程的方法可方便地在AutoCAD2000中實現(xiàn)焊接符號的自動標(biāo)注。利用ObjectARX提供的類和函數(shù)可深入到AutoCAD系統(tǒng)內(nèi)核;利用VisualC  進(jìn)行Win dows風(fēng)格的編程,可以大大提高開發(fā)效率,能更迅速、更準(zhǔn)確地實現(xiàn)二次開發(fā)目的。利用本文提出的開發(fā)原理和實現(xiàn)方法開發(fā)的焊接符號標(biāo)注系統(tǒng)在運行效率、對象管理、用戶界面和智能化程度等方面都有了突破性的進(jìn)步,為基于AutoCAD平臺的應(yīng)用程序開發(fā)提供了一種可行方案。

 

共2 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團(tuán)
Powered By 曙海教育集團(tuán) Version 2.2
Processed in .03125 s, 2 queries.
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
91高清视频在线| 国产婷婷一区二区| 精品久久久久久久一区二区蜜臀| 亚洲欧洲在线观看av| 韩国av一区二区三区在线观看| 国产精品视频福利| 欧美一区午夜精品| 亚洲国产一区视频| 国产激情美女久久久久久吹潮| 欧美军同video69gay| 亚洲一区免费视频| 91麻豆免费在线观看| 欧美日韩中文字幕精品| 一区二区三区自拍| 99热最新在线| 欧美成人在线直播| 久久电影国产免费久久电影| 神马影院午夜我不卡影院| 亚洲国产精品黑人久久久| 国产大陆a不卡| 一本久久a久久免费精品不卡| 136国产福利精品导航| 97aⅴ精品视频一二三区| 欧美美女喷水视频| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美精品一区在线发布| 国产亚洲va综合人人澡精品| 东方aⅴ免费观看久久av| 欧美日韩不卡视频| 蜜臀av国产精品久久久久| 亚洲精品二区| 亚洲一卡二卡三卡四卡无卡久久| 精品视频免费观看| 国产精品久久久久一区 | 狠狠色狠狠色综合| 91福利小视频| 日本不卡1234视频| 亚洲天堂电影网| 午夜久久电影网| 亚洲欧洲一二三| 亚洲伦在线观看| 欧美激情一区二区三区在线视频| 国产精品久久久久久久第一福利| 91性感美女视频| 久久精品日产第一区二区三区高清版| 成人精品高清在线| 欧美精品一区二区三区久久久| 丁香婷婷综合激情五月色| 欧美一区二区三区视频免费播放| 国产精一品亚洲二区在线视频| 欧洲一区在线观看| 久久国产精品免费| 欧美一级夜夜爽| 成年人国产精品| 久久久91精品国产一区二区精品| 91在线一区二区| 国产欧美精品区一区二区三区| 国产91免费视频| 亚洲九九爱视频| 亚洲欧洲一区二区福利| 久久成人久久鬼色| 欧美一级理论片| 91一区二区在线| 国产精品白丝在线| 日韩在线第一区| 免费在线观看精品| 欧美日韩高清一区| 99久久婷婷国产综合精品电影| 国产日产亚洲精品系列| 久久99久久99精品蜜柚传媒| 午夜精品一区二区三区三上悠亚 | 国产精品青草综合久久久久99| 国产免费一区| 亚洲v精品v日韩v欧美v专区| 在线免费观看日本欧美| 国产v日产∨综合v精品视频| 精品91自产拍在线观看一区| 国产精品一区二区三区不卡| 亚洲国产日韩av| 91精品国产综合久久精品图片 | 深田咏美在线x99av| 久久99久久精品| 久久奇米777| 欧美久久综合性欧美| 日本网站在线观看一区二区三区| 69堂成人精品免费视频| 成人在线观看av| 午夜精品一区二区三区免费视频| 欧美精品1区2区3区| 国产98在线|日韩| 日韩精品亚洲一区二区三区免费| 91精品国产91久久久久久最新毛片 | 国产精品麻豆久久久| 欧洲亚洲一区二区| 精品在线亚洲视频| 国产欧美日韩综合| 色88888久久久久久影院按摩| 成人午夜伦理影院| 一区二区三区**美女毛片| 欧美日韩精品电影| 国产自产精品| 国内精品久久久久影院色| 日本一区二区免费在线| 日本韩国欧美三级| 91亚洲精品丁香在线观看| 日韩黄色在线观看| 国产精品网站在线观看| 欧美综合亚洲图片综合区| 国产精品18毛片一区二区| 久久99精品网久久| 亚洲欧美韩国综合色| 欧美一区二区三区日韩| 欧洲一区二区在线| www.日韩av| 日韩福利视频导航| 国产精品国产自产拍高清av| 91精品久久久久久久久99蜜臂| 麻豆精品视频| 99久久久国产精品免费蜜臀| 日韩av一区二| |精品福利一区二区三区| 91麻豆精品国产91久久久久久久久| 欧美亚洲国产免费| 91色在线porny| 国产精品一区三区| 婷婷开心久久网| 国产精品第一页第二页第三页| 91麻豆精品久久久久蜜臀 | 精品国产乱子伦一区| 91黄色小视频| 另类欧美小说| 99久久综合狠狠综合久久止| 久久91精品久久久久久秒播| 夜夜嗨av一区二区三区中文字幕| 国产亚洲婷婷免费| 日韩一卡二卡三卡| 日本精品一级二级| 日本欧美精品久久久| 国产视频在线观看一区| 99视频一区二区| 激情综合色播激情啊| 性做久久久久久久久| 中文字幕一区二区三区av| 精品少妇一区二区三区日产乱码| 欧美三级在线播放| 一区视频二区视频| 欧美一区二区三区精美影视| 国产精品久久久对白| 91在线看国产| 豆国产96在线|亚洲| 国产一区在线不卡| 精品影视av免费| 青青草国产成人av片免费| 亚洲国产日韩综合久久精品| 亚洲色图一区二区三区| 国产精品对白交换视频| 国产精品久久久久久久久图文区| 欧美国产在线观看| 中文字幕欧美激情一区| 国产精品理伦片| 中文字幕av在线一区二区三区| 久久夜色精品一区| 久久久91精品国产一区二区精品 | 欧洲精品在线观看| 色哟哟国产精品| 色婷婷精品久久二区二区蜜臂av | 91久久香蕉国产日韩欧美9色| 亚洲午夜久久久影院伊人| 午夜精品电影在线观看| 手机看片福利永久国产日韩| 亚洲精品乱码久久久久久蜜桃91 | 国产精品欧美久久久久无广告| 久久色成人在线| 久久久精品免费网站| 久久久不卡影院| 国产精品毛片无遮挡高清| 国产精品美女久久久久aⅴ| 国产精品乱码人人做人人爱 | 日韩中文字幕区一区有砖一区| 日韩国产一区二| 久久99久久久久久久久久久| 国产精品亚洲第一| www.av亚洲| 国产精品美女黄网| 欧美高清性xxxxhd| 深夜福利成人| 在线观看亚洲精品视频| 在线播放91灌醉迷j高跟美女| 欧美成人精品二区三区99精品| 久久综合成人精品亚洲另类欧美| 中文字幕av一区 二区| 亚洲精品免费视频| 男女男精品视频网| 国产成人精品1024| 成人激情av| 亚洲欧洲国产精品久久| 欧美日韩亚洲综合在线| 精品国产乱码久久久久久1区2区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲你懂的在线视频|