欧美三级欧美成人高清,麻豆网神马久久人鬼片,男同gay自慰网站,欧美日韩精品一区二区三区激情,在线,男人的天堂av

企業(yè)檔案

  • 會員類型:免費(fèi)會員
  • 工商認(rèn)證: 【已認(rèn)證】
  • 最后認(rèn)證時間:
  • 法人:
  • 注冊號:
  • 企業(yè)類型:生產(chǎn)商
  • 注冊資金:人民幣5118萬

聯(lián)系我們

聯(lián)系人:鄧友坤

點(diǎn)擊查看聯(lián)系方式

技術(shù)文章

基于ObjectARX的閥體三維參數(shù)化繪圖

點(diǎn)擊次數(shù):806 發(fā)布時間:2009/2/11 8:50:46

三維圖形能夠真實反映物體的實際情況,不僅可以方便地自動生成可靠的標(biāo)準(zhǔn)或輔助二維視圖,創(chuàng)建二維剖面圖,而且可進(jìn)行工程分析,提取工藝數(shù)據(jù),易于與鑄造工藝CAD系統(tǒng)和三維快速原型技術(shù)相結(jié)合,提高設(shè)計生產(chǎn)效率。三維鑄造工藝CAD系統(tǒng)已成為傳統(tǒng)工藝CAD系統(tǒng)的主流[1~3],而三維圖形是三維鑄造工藝CAD的基礎(chǔ)。本研究在Window 2000環(huán)境下,以O(shè)bjectARX 2000為二次開發(fā)工具,以VC++ 6.0為編程語言,在AutoCAD 2000中實現(xiàn)了閥體的三維參數(shù)化繪圖。

    1 ObjectARX編程環(huán)境

    ObjectARX 2000是基于AutoCAD 2000的一種新的編程環(huán)境,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能真正快速地訪問AutoCAD 圖形數(shù)據(jù)庫。ObjectARX程序?qū)嶋H為動態(tài)連接庫,與AutoCAD共享同一地址空間,能直接利用AutoCAD核心數(shù)據(jù)庫和函數(shù)。與其它二次開發(fā)工具相比,ObjectARX具有模塊性強(qiáng)、獨(dú)立性強(qiáng)、開發(fā)能力強(qiáng)、速度快、面向?qū)ο蟮木幊碳夹g(shù)等優(yōu)點(diǎn),是AutoCAD新一代強(qiáng)有力的開發(fā)工具。此外,ObjectARX編程環(huán)境可利用MFC類庫來編制豐富的Windows風(fēng)格界面,采用了面向?qū)ο蟮木幊碳夹g(shù),開發(fā)人員可在其提供的基類上派生出自定義的類,給開發(fā)工作帶來極大的方便。

    2 參數(shù)化繪圖

    參數(shù)化繪圖是一種利用零件或產(chǎn)品組成形狀上的相似性,以基本參數(shù)作為變量編寫相應(yīng)的程序來定義圖形的方法?尚纬上盗,其各尺寸關(guān)系可用一組參數(shù)來確定,參數(shù)的求解較簡單,參數(shù)與設(shè)計對象的控制尺寸有明顯的對應(yīng)關(guān)系,設(shè)計結(jié)果的修改受參數(shù)驅(qū)動,這些參數(shù)稱為零件的基本參數(shù)。參數(shù)化繪圖是一種參數(shù)驅(qū)動機(jī)制,通過參數(shù)驅(qū)動機(jī)制,可以對圖形的幾何數(shù)據(jù)進(jìn)行參數(shù)化修改,而且在修改的同時,還要滿足圖形的約束條件。設(shè)計者可以建立這些基本參數(shù)的外部數(shù)據(jù)庫,利用ObjectARX程序調(diào)用相應(yīng)的參數(shù)數(shù)據(jù)庫中的數(shù)據(jù),系統(tǒng)會自動完成相應(yīng)實體形狀的改變。參數(shù)化設(shè)計能真正將初次設(shè)計從生產(chǎn)過程中分離出來,通過標(biāo)準(zhǔn)化減少零件的數(shù)量,以*快的速度適應(yīng)市場變化,滿足用戶的需求。

    參數(shù)化繪圖的基本特征是通過訪問外部參數(shù)數(shù)據(jù)庫進(jìn)行操作,因此它具有較好的交互性,用戶可以利用繪圖系統(tǒng)全部的交互功能修改圖形及其屬性,進(jìn)而控制參數(shù)化的過程。參數(shù)化繪圖具有簡單、方便、易開發(fā)和使用的特點(diǎn),能夠在現(xiàn)有的繪圖系統(tǒng)基礎(chǔ)上進(jìn)行二次開發(fā)。

    1)程序驅(qū)動法。程序驅(qū)動法主要適用于結(jié)構(gòu)比較穩(wěn)定,僅尺寸數(shù)值發(fā)生變化或僅有局部結(jié)構(gòu)變化的場合,比如標(biāo)準(zhǔn)件和常用件的開發(fā)。程序驅(qū)動法是將零件的基本參數(shù)和所有結(jié)構(gòu)關(guān)系式融人應(yīng)用程序,然后在程序的控制下,順序執(zhí)行這些設(shè)計表達(dá)式來繪制圖形。其主要特點(diǎn)是:如果要修改圖形,只要給應(yīng)用程序輸入不同的參數(shù)值,便可生成不同的圖形。它是參數(shù)化繪圖*常用也是*基本的方法。本課題也是主要采用這種方法來完成大部分圖形的繪制工作,并且為了使用方便,所有的尺寸參數(shù)都是通過讀取外部參數(shù)數(shù)據(jù)庫獲得,而不是人工錄入。這樣既增加了程序的靈活性,又減少人工錄入的麻煩和可能出現(xiàn)的不必要的參數(shù)錄入錯誤,便于圖形庫的擴(kuò)充和修改,提高工作效率。

    2)鼠標(biāo)驅(qū)動法。鼠標(biāo)驅(qū)動法即通過鼠標(biāo)移動光標(biāo)來調(diào)整所需的參數(shù)。其原理是通過讀取鼠標(biāo)的位置座標(biāo)來實現(xiàn)鼠標(biāo)拖動實體數(shù)據(jù)庫與屏幕圖形的一致變化。其鼠標(biāo)拖動的關(guān)鍵是如何取得實體的數(shù)據(jù),并將修改后的數(shù)據(jù)寫回實體數(shù)據(jù)庫中,即實現(xiàn)圖形數(shù)據(jù)的存儲與交換。

    3)尺寸驅(qū)動法。尺寸驅(qū)動(Dimension-Driven)法主要是利用鼠標(biāo)在圖形上點(diǎn)取需要修改的尺寸參數(shù)實體,由命令行輸入新值,之后重新生成圖形。

    3 三維閥體繪制的應(yīng)用實例

    閥體是閥門的主要零件,閥門的設(shè)計主要就是閥體部分的設(shè)計。根據(jù)閥體的產(chǎn)品特點(diǎn),采用CAD二次開發(fā)工具ObjeetARX 2000,以VC++ 6.0為編程語言,利用MFC類庫的Windows風(fēng)格界面,開發(fā)出功能強(qiáng)大、界面友好的閥體的三維繪圖系統(tǒng)。首先,在AutoCAD 2000環(huán)境下加載本系統(tǒng)所需的定制用戶菜單,方便用戶操作。然后在加載應(yīng)用程序下的啟動組里加載本系統(tǒng)所開發(fā)的ARX程序,這樣每當(dāng)AutoCAD 2000啟動時就自動加載本系統(tǒng),無需人工手動加載。定制的用戶菜單如圖1所示。

    開發(fā)的閥體主要針對福州閥門廠生產(chǎn)量比較大的幾類閥門的閥體,其類型主要有角式截止閥、蝶閥、閘閥等,現(xiàn)以角式截止閥的閥體為例做簡要說明。繪制角式截止閥的閥體的參數(shù)化設(shè)置對話框如圖2所示,角式截止閥的閥體的繪制結(jié)果如圖3所示。

    在系統(tǒng)開發(fā)過程中,利用ObjectARX環(huán)境下的ADO數(shù)據(jù)庫接口技術(shù),訪問外部閥體參數(shù)數(shù)據(jù)庫,真正實現(xiàn)參數(shù)化。設(shè)計好的閥體參數(shù)和ObjeetARX強(qiáng)大的三維繪制功能結(jié)合,使得系統(tǒng)能真正快速、高效地繪制三維閥體實體造型圖。給出繪制閥體的三維旋轉(zhuǎn)實體的一般例程[4]

    //函數(shù)名:create3dRevolveSolid
    //參數(shù):pt[]-初始點(diǎn)坐標(biāo),N-坐標(biāo)點(diǎn)數(shù)
    //返回值:AcDb3dSolid-返回3d實體指針
    AcDb3dSolid create3dRevolveSolid(ads_point pt[],int N )
    {
    AcGeVeetor3d normal(O.0,0.0,1.0);
    AcGePoint3d axisPoint(0.0,0.0,0.0);
    AcGeVect0r3d axisDir(0.0,1.0,0.O);
    double Revolution = 2.0 * PI;
    AcGePoint3d origin(O.0,0.0,0.0);
    AcGeVect0r3d x(1,0,0),y(O,1,0),z(O,0,1);
    AcGeMatrix3d mat;
    AcGePoint2dArray pt2d;
    pt2d.setLogiealLenth(N);
    for(int i= 0;i< N;i++)
    {
    pt2d[i].set(pt[I][x],pt[I][Y]);
    }
    AcDbPolyline * poly = new AcDbPolyline;
    //設(shè)置多義線各頂點(diǎn)坐標(biāo)
    //
    for(i=0;i< N;i++)
    {
    poly->addVertexAt(i,pt2d[i]);
    }
    poly->setClosed(Adesk::kTrue);
    poly一>setNormal(norma1);
    AcDbVoidPtrArray lines,regions;
    //獲取指向封閉邊界的無值型指針數(shù)組
    ||
    lines.append((void *)poly);
    //根據(jù)封閉邊界中生成的面域?qū)ο?br />    //
    AcDbRegion::createFromCurves(lines,regions);
    //獲得指向面域的指針
    //
    AcDbRegion * pRegion= AcDbRegion::cast((AcRxObject*)regions[0]);
    AcDb3dSolid * p3dObj= new AcDb3dSolid;
    if(Acad::eOk= p3dObj->revolve(pRegion,axisPoint,axisDir,Revolution))
    {
    mat.setGoordSystem(origin,x,Y,z);
    p3dObj->transformBy(mat);
    }
    delete pRegion;
    return p3dObj;

    這是生成一些比較簡單的三維旋轉(zhuǎn)實體的一般例程,還有三維實體也可以通過拉伸生成,在ObjectARX中的AcDb3dSolid類的成員函數(shù)extrude()提供了拉伸功能,其函數(shù)原型為:

    virtual Acad::ErrorStatus extrude(
    const AcDbRegion * region,
    double height,
    double taper);

    其中:指針型參數(shù)region是所要拉伸的面域,雙精度型參數(shù)height是指region面域所要拉伸的高度;雙精度型參數(shù)taper是指拉伸體的錐度,缺省值為0。函數(shù)調(diào)用成功則返回Acad::eOK。

    對于復(fù)雜的三維實體必須利用三維實體的并(Union)、交(Intersection)、差(Subtract)集合運(yùn)算。ObjectARX 中的AcDb3dSolid類的成員函數(shù)booleanOper()提供了這三種運(yùn)算的功能,其函數(shù)原型為:

    virtual Acad::ErrorStatus booleanOper(
    AcDb:: BoolOperType operation,
    AcDb3dSolid * solid):

    其中:布爾運(yùn)算型參數(shù)operation的可能取值為:AcDb::kBoolUnite(并)、AcDb::kBoolIntersect(交)、AcDb::kBoolSubtract(差)。實體指針型參數(shù)solid表示另一個參加布爾運(yùn)算的實體的指針.函數(shù)調(diào)用成功則返回Acad::eOK。

原創(chuàng)作者:浙江金鋒自動化儀表有限公司

相關(guān)產(chǎn)品

script>