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

基于CAD二次開發技術的鋼桁梁橋參數化繪圖研究

2014-09-26 11:34:42朱宗喜程耀東
鐵道標準設計 2014年10期
關鍵詞:設置

朱宗喜,程耀東,王 博

(1.蘭州交通大學測繪與地理信息學院, 蘭州 730070;2.蘭州交通大學土木工程學院, 蘭州 730070)

基于CAD二次開發技術的鋼桁梁橋參數化繪圖研究

朱宗喜1,程耀東2,王 博1

(1.蘭州交通大學測繪與地理信息學院, 蘭州 730070;2.蘭州交通大學土木工程學院, 蘭州 730070)

在研究多種鋼桁梁橋的結構特點、桿件類型的基礎上,運用VC++和ObjectARX開發技術,建立圖層、顏色、線型、文字和標注樣式等繪圖環境設置接口函數,開發圖形繪制、尺寸標注、文字書寫等接口功能,根據鋼桁梁桿件參數的不同,創建各種桿件的參數化繪圖和符號標注子模塊,實現鋼桁梁桿件的參數化繪圖,為鋼桁梁橋的參數化繪圖提供了新的思路和方法。

橋梁結構;鋼桁梁橋;AutoCAD;ObjectARX;參數化繪圖

現代鋼桁梁橋及其他鋼結構日趨復雜,其桿件二維平面圖的設計和繪制工作繁重,如果僅僅采用AutoCAD軟件交互繪圖,依次繪制各種類型的桿件,則工作量大且效率低。因此,在AutoCAD環境下,實現鋼桁梁橋桿件二維平面圖的參數化繪圖,將會大大提高繪圖效率。

文獻[1]對我國移動模架技術標準化進行了研究與展望,給鋼結構桿件的標準化設計提供了思路;文獻[2]對混合梁斜拉橋鋼混結合段的關鍵設計技術進行了研究;文獻[3]對箱梁結構特點進行了分析,運用VC++和ObjectARX工具,對箱梁三維實體參數化建模進行了研究;文獻[4-7]對ObjectARX工具包的編程環境、類庫、應用程序框架以及ARX的接口技術等進行了研究,并結合線路設計和其他工程設計進行了開發;文獻[8]討論了ObjectARX與MFC結合進行AutoCAD 二次開發的方法,文獻[9-11]對圖紙自動化生成技術和生成系統進行了研究。由上可以看出,在鋼桁梁橋自動繪圖方面的研究文獻較少。

本文運用VC2005軟件開發平臺和ObjectARX二次開發工具包,對AutoCAD圖形數據庫的操作、繪圖接口方法和繪圖參數標準化進行探討,建立了設置圖層、標注樣式和基本繪圖等接口函數,實現了桿件的參數化自動繪圖,為鋼桁梁的設計提供自動繪圖軟件。

1 開發環境配置

1.1 ObjectARX簡介

ObjectARX是AutoDesk公司為實現AutoCAD平臺上的二次開發而推出的一個軟件開發包,它提供了以C++語言為基礎的面向對象的開發環境及應用程序接口,能快速訪問AutoCAD圖形數據庫。

ObjectARX應用程序是一個動態鏈接庫(Dynamic Link Library,縮寫為DLL),與AutoCAD在同一地址空間運行,能夠利用AutoCAD的內核代碼直接訪問AutoCAD的數據庫、圖形系統及幾何造型核心,在運行期間實時擴展AutoCAD的功能,使得程序運行速度大大提高。另外,ARX 類庫采用了標準的C++類庫的封裝形式,大大提高了程序員編程的可靠度和效率。

1.2 搭建開發環境

運用VC++和ObjectARX工具 對AutoCAD進行二次開發,首先必須設置ObjectARX開發環境,不同版本的AutoCAD軟件對應的開發工具和語言有一定的對應關系,本文采用ObjectARX 2007 SDK和VC2005語言對AutoCAD 2008進行開發。在VC2005語言環境中,選擇[視圖]→[屬性頁]進行配置:設置編譯器,包括附加包含目錄、警告等級、可移植性及運行時庫等;設置鏈接器,包括輸出文件、附加庫路徑、附加依賴項及模塊定義文件等。

1.3 圖層創建及其屬性設置

在AutoCAD狀態下,為了便于圖形管理,應該對圖形進行分層,圖層一般劃分為:輪廓層、虛線層、中心線層、尺寸標注層、文字說明與注寫層等。創建圖層就是在數據庫的層表中添加層表記錄,在建立層的同時給該層設置顏色、線型和線寬等屬性。

1.3.1 添加圖層

添加圖層的方法和步驟如下。

(1)定義圖層接口函數

AcDbObjectId NewLayer(TCHAR* LayerName, Adesk::UInt16 ColorIndex,double

LineTypeFactor, TCHAR* LineType, AcDb::LineWeight Weight);

函數中的參數依次為圖層名稱、顏色、線型比例因子、線型和線寬,返回值類型為AcDbObjectId;在圖層創建后,若不進行更改圖層屬性等操作,可設置返回值類型為void。

(2)獲取當前圖形的層表

定義層表指針pLayerTbl,在當前數據庫符號表中以寫的方式打開層表:acdbHostApplicationServices()->workingDatabase()->getLayerTable(pLayerTbl, AcDb::kForWrite);

(3)判斷圖層名是否存在

若存在,關閉層表,結束圖層創建;否則繼續下一步。

(4)創建新層表記錄

定義層表記錄指針pLayerTblRcd=new AcDbLayerTableRecord();設置圖層名:pLayerTblRcd->setName(LayerName);將新的層表記錄添加到層表中:pLayerTbl->add(LayerTblRcdId, pLayerTblRcd)。

(5)設置顏色、線寬和線型

成員函數setColor()和setLineWeight()可以完成顏色和線寬設置,需要注意的是在設置前需將Adesk::UInt16類型轉換為AcCmColor類型,代碼如下:

AcCmColor Color;

Color.setColorIndex(ColorIndex);

設置線型時要檢查所設置的線型是否在當前的線型表中存在,若不存在,則需要加載線型文件“acad.lin”,步驟包括:①定義線型表指針和線型ID號,在當前數據庫中以讀的方式打開線型表;②判斷當前線型表中是否存在需要設置的線型ID號,若存在,執行下一步操作,否則加載線型文件“acad.lin”并獲取需要設置的線型ID號;③設置線型。加載線型文件的代碼如下:

acdbCurDwg()->loadLineTypeFile(LineType,_T("acad.lin"));

acdbCurDwg()->getLinetypeTable(pLinetypeTbl,AcDb::kForRead);

pLinetypeTbl->getAt(LineType, DashedLineId);

(6)關閉層表指針,返回層表ID號

1.3.2 創建標注樣式及文字樣式

創建標注樣式和文字樣式的操作方法相似,以創建標注樣式為例方法如下。

(1)定義接口函數。

AcDbObjectId AddDimStyle(TCHAR* StyleName,double LinearFactor,double Scale,

double DimTextHeight);

函數中參數依次為標注樣式名稱、線性單位比例因子、全局比例因子和標注字體高度。

(2)獲取當前標注樣式表。

(3)判斷要定義的標注樣式名稱是否存在,若存在,關閉標注樣式表,結束標注樣式創建;否則進行下一個步驟。

(4)創建標注樣式表記錄并設置標注樣式屬性。

標注樣式屬性由其對象成員函數進行設置:setName()設置標注樣式名稱,setDimasz()設置箭頭長度,setDimtxt() 設置標注文字的高度,setDimscale()設置全局比例因子,其余屬性如尺寸界線與標注點的偏移量、尺寸界線起點偏移量、線性單位比例因子等也由相關成員函數進行設置。屬性賦值一般根據國標規定來確定,部分屬性賦值也可以由具體的設計來確定,如全局比例因子、線性單位比例因子。

(5)將標注樣式表記錄添加到標注樣式表中,關閉標注樣式表,返回標注記錄ID號。

2 創建基本繪圖接口函數

工程圖由圖形、文字和符號等內容構成,復雜圖形是由直線、矩形、圓和多段線等繪制,所以要實現參數化自動繪圖就必須創建基本繪圖接口函數。以下是幾種基本繪圖接口函數。

2.1 創建直線

工程圖中直線是最基本的圖形,創建直線的實質是對數據庫進行操作,方法步驟如下。

(1)定義函數。設直線起點ptStart(x1,y1,z1)和終點ptEnd(x2,y2,z2),函數定義為:

AcDbObjectId CreateLine(doublex1,doubley1,doublez1, doublex2,doubley2,doublez2);

為了程序中調用函數的方便,可以重載CreateLine()函數:

AcDbObjectId CreateLine(AcGePoint3d ptStart, AcGePoint3d ptEnd);

(2)創建AcDbLine對象。AcDbLine *pLine=new AcDbLine(ptStart, ptEnd);

(3)獲得指向塊表的指針pBlockTable:

acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,

AcDb::kForRead);

(4)獲得指向塊表記錄的指針pBlockTblRcd,將AcDbLine對象添加到塊表記錄中:

pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTblRcd, AcDb::kForWrite);

pBlockTblRcd->appendAcDbEntity(LineId, pLine);

(5)關閉圖形數據庫的塊表對象、塊表記錄和AcDbLine對象。若需要對創建的實體進行操作,則返回實體ID號。

上述步驟可以劃分為3個階段,如圖1所示,考慮到繪制每一個基本圖形都會重復將實體對象添加到模型空間,造成代碼重復、程序不簡潔,所以在編程中將(3)~(5)中的代碼組合成一個函數供CreateLine()調用,其功能是將實體對象添加到模型空間,函數聲明如下:

AcDbObjectId PostToModelSpace(AcDbEntity* pEnt);

圖1 創建直線的流程

創建圓的方法和直線類似,創建AcDbCircle對象的方法為:

AcDbCircle *pCircle=new AcDbCircle(ptCenter,Vec,Rradius);

其中,Vec為圓所在平面法向矢量。

2.2 創建多段線

多段線和直線的不同在于直線的每一段為一個實體,而多段線整體為一個實體;多段線可以進行曲線擬合,而單條直線不能擬合。創建多段線的接口函數聲明如下:

AcDbObjectId CreatePolyline(AcGePoint2dArray Points, double Width );

參數Points和Width分別表示構成多段線的頂點數組和線寬。部分代碼如下:

AcDbPolyline *pPoly=new AcDbPolyline(Points.length()); //創建AcDbPolyline對象

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

pPoly->addVertexAt(i, Points.at(i), 0, Width, Width); //添加頂點}

在鋼桁梁桿件二維圖中,用矩形表示鋼板截面,可利用多段線接口函數和矩形的長、寬數據定義矩形繪制函數。

3 創建文字及尺寸標注接口函數

3.1 創建文字

文字是工程圖的重要組成部分之一,創建文字時需要定義文字插入點、高度、樣式和旋轉角度,文字的書寫分為單行和多行兩種形式,下面給出兩個接口函數聲明及主要代碼:

(1)單行文本

AcDbObjectId CreateText(AcGePoint3d ptInsert, CString Text,double Height,AcDbObjectId Style,double Rotate);

AcDbText *pText=new AcDbText(ptInsert,Text,Style,Height,Rotate); //創建AcDbText對象

(2)多行文本

AcDbObjectId CreateMText(AcGePoint3d ptInsert,CString Text,double Height,double

Width, AcDbObjectId Style);

AcDbMText *pMText=new AcDbMText(); //創建AcDbMText對象

通過AcDbMText對象成員函數可以設置相關屬性:setTextStyle()設置文本樣式,setWidth()設置文本寬度,setContents()設置文本內容,setLocation()設置插入點,setTextHeight()設置文本高度。

3.2 創建尺寸標注

常用的尺寸標注有對齊標注、直徑、半徑標注等,以對齊標注和半徑標注為例,接口函數聲明及部分代碼如下[12]:

(1)對齊標注

AcDbObjectId CreateDimAligned(AcGePoint3d pt1, AcGePoint3d pt2, AcGePoint3d ptLine,

AcDbObjectId DimStyle, CString DimText="");

參數含義:pt1為第一條尺寸界線的起點,pt2為第二條尺寸界線的起點,ptLine為通過尺寸線上的一點,DimStyle為標注樣式,DimText為標注內容。創建尺寸標注:

AcDbAlignedDimension *pDim=new AcDbAlignedDimension(pt1, pt2, ptLine, DimText, DimStyle);

(2)半徑標注

AcDbObjectId CreateDimRadial(AcGePoint3d ptCenter, double Radius, double Angle,

double LeaderLength, AcDbObjectId DimStyle, CString DimText="");

參數含義依次為圓心坐標、半徑、標注尺寸線旋轉角度、引線長度、標注樣式和內容。

標注半徑尺寸時,先確定尺寸線與圓周交點坐標ptChord(類型為AcGePoint3d),標注半徑的方法為:

AcDbRadialDimension *pDim=new AcDbRadial Dimension(ptCenter,ptChord, LeaderLength, DimText, DimStyle);

3.3 創建標注符號

在鋼結構圖中除上述基本尺寸標注外,還包括材料號、截面號、標題、坡度、焊接、詳圖、鋼板信息(鋼板數目、長、寬、厚)等標注,這些都是工程圖的重要組成部分,必須創建標注符號,標注符號的位置、大小、旋轉角度等屬性可以由參數進行設置,以適應具體工程圖及圖形拓撲需要,這些符號由繪圖和文字書寫接口函數組合繪制。部分標注符號如圖2所示。

圖2 標注符號

4 鋼桁梁橋桿件參數化繪圖方法

參數化繪圖是專業CAD軟件最重要的應用技術之一,它是通過修改圖形參數,從而自動改變圖形中的相關部分,或者是改變圖形中某一部分或某幾部分的尺寸,實現對圖形的修改。用參數化繪圖方法繪制鋼桁梁橋桿件,便于設計人員設計和修改,將大大提高繪圖效率。

4.1 標準化繪圖參數

為了實現自動化繪圖,必須對桿件參數進行標準化,鋼桁梁橋桿件參數歸納為以下4種:

(1)輪廓尺寸參數,包括桿件長、寬、厚、螺栓直徑等;

(2)拓撲關系參數,指組成桿件的各組件空間位置及各視圖之間的間距等;

(3)數量參數,指組成桿件的各組件的數目,例如隔板數目、螺栓個數等;

(4)指代參數,是可以指代圖形幾何形狀的參數,如在繪制螺栓陣列的接口函數中定義一個bool型的變量IsCircle,當IsCircle為0時,用實心點表示螺栓,當IsCircle為1時,用圓圈表示螺栓,因此,可以設置指代參數來改變圖形形狀樣式。

將鋼桁梁橋各類桿件的參數按照上述分類方法進行歸納整理,以便于繪圖時輸入參數,輸入參數的方法分為3種:一是讀取txt格式的文件,當參數數據量大且類型比較單一時,適用這種方法;二是對話框輸入,當參數的意義比較抽象,需要配置示意圖解釋時,此方法比較合適;三是在AutoCAD命令行輸入,如輸入變量或拾取坐標點等參數。

4.2 子圖分類

鋼桁梁橋桿件工程圖是由大量直線、圓、矩形及多段線等組成,其繪圖實質是將基本繪圖接口函數進行組合創建更加復雜的圖形。對于相對單一的圖形(如工字鋼橫截面)可以用一個接口函數一次性繪制完成(如圖3(a));對于比較復雜的圖形,可以將圖形按組成特征分成若干子圖,對每個子圖創建繪圖接口函數,最后將各個子圖整合為完整工程圖(如圖3(b))。子圖以桿件的類型、詳圖內容、節點形式等因素進行劃分,包括:輪廓子圖、加勁肋子圖、螺栓陣列子圖及隔板子圖等。

圖3 子圖舉例

4.3 標注

對于工程圖的標注有以下兩種標注方法。

(1)簡單標注,針對由基本繪圖接口函數繪制的簡單圖形的標注,可以是對齊標注、半徑標注和符號標注中的任意一種。

(2)復合標注,針對劃分的子圖創建標注接口函數,由若干對齊標注、半徑標注和符號標注組成。如圖4中工字鋼側面投影的標注,包括5個對齊標注和3個文字標注。

4.4 鋼桁梁橋桿件繪圖實例

根據上述鋼桁梁橋桿件參數化繪圖方法,以趙寨潁河雙線特大橋施工圖中的某一段工字鋼桿件為例繪制平面圖。如圖4所示。

圖4 工字鋼桿件平面(單位:mm)

5 結語

本文運用VC2005結合 ObjectARX二次開發工具包,對AutoCAD繪圖環境中的圖層、顏色、線型和線寬進行自動設置,建立了基本實體、標注樣式、文字書寫及尺寸標注等接口函數,實現了鋼桁梁橋桿件、節點板、斷面圖及詳圖的二維參數化繪圖,通過設計實例證明了這種CAD技術出圖快、精度高,比交互繪圖提高效率75%左右。這種鋼桁梁橋參數化繪圖技術對其他形式的橋梁CAD研究具有一定的參考價值。

[1] 劉宏剛,尤繼勤,張超福.我國移動模架技術標準化與現代化展望[J].鐵道標準設計,2014(4):37-43.

[2] 蔡建業.混合梁斜拉橋鋼混結合段設計[J].鐵道標準設計,2014(1):68-71.

[3] 朱德榮.箱梁三維實體自動建模方法研究[J].鐵道標準設計,2014(3):54-58.

[4] 程耀東,姚德新,徐軍.既有軌道縱斷面CAD軟件開發研究[J].蘭州交通大學學報,2005(1):14-17.

[5] 程耀東,趙建昌,徐軍.圖形數據庫應用技術研究[J].工程圖學學報,2006(1):143-148.

[6] 何亮.基于ObjectARX的CAD系統開發若干關鍵技術的研究[D].合肥:合肥工業大學,2008.

[7] 杜剛,劉東學,張磊.基于ObjectARX的AutoCAD二次開發及應用實例[J].機械設計與制造,2004(3):30-32.

[8] 崔秀麗,魯墨武,邢艷秋,等.ObjectARX與MFC結合開發AutoCAD應用程序[J].沈陽航空工業學院學報,2007(1):28-31.

[9] 孫建峰.圖紙自動化生成系統的設計與實現[D].江蘇鎮江:江蘇大學,2007.

[10] 張鋒.基于ObjectARX的圖紙自動處理技術若干問題的研究[D].杭州:浙江大學,2006.

[11] 饒上榮.工程圖紙自動生成技術的研究與實現[D].北京:中國科學院研究生院(計算技術研究所),2000.

[12] 李世國.AutoCAD高級開發技術——ARX編程及應用[M].北京:機械工業出版社,1999.

Research of Parametric Drawing of Steel Truss Bridge Based on Secondary Development of CAD

Zhu Zongxi1, Cheng Yaodong2, Wang Bo1

(1.Faculty of Geomatics ,Lanzhou Jiaotong University, Lanzhou Gansu, 730070, China; 2.School of Civil Engineering, Lanzhou Jiaotong University, Lanzhou Gansu 730070, China)

On the basis of the structural characteristics of various kinds of steel truss bridge and member models, interface functions of drawing environment settings for setting layer, color, line type, text and marking style are established, and the interface services to draw graphics, mark dimensions and write characters are developed. According to the different parameters of steel truss members, parametric drawing and symbol annotation sub-module for various members are created, parametric drawing for members of steel truss bridge is fulfilled, and then new concept and method for parametric drawing of steel truss bridge are proposed.

Bridge structure; Steel truss bridge; AutoCAD; ObjectARX; Parametric drawing

2014-04-03;

:2014-04-24

甘肅省自然科學基金(1212RJZA042);甘肅省省級教學團隊基金資助(101004)

朱宗喜(1987—),男,碩士研究生,E-mail:441005644@qq.com。

1004-2954(2014)10-0078-05

U442

:A

10.13238/j.issn.1004-2954.2014.10.019

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與專科設置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 亚洲日韩国产精品无码专区| 欧美精品成人一区二区视频一| 欧美成人影院亚洲综合图| 国产区福利小视频在线观看尤物| 午夜福利视频一区| 9啪在线视频| 欧美中出一区二区| 久久国产精品嫖妓| AV不卡无码免费一区二区三区| 亚洲国产午夜精华无码福利| 国产成+人+综合+亚洲欧美 | 久久亚洲欧美综合| 欧美人在线一区二区三区| 高清不卡毛片| 亚洲日本韩在线观看| 福利一区三区| 在线观看亚洲成人| 亚洲成人免费在线| 国产导航在线| 蝴蝶伊人久久中文娱乐网| 日韩中文字幕免费在线观看| 91精品福利自产拍在线观看| 免费无码又爽又黄又刺激网站 | 精品国产欧美精品v| 久久久91人妻无码精品蜜桃HD| 色悠久久久| 免费A级毛片无码免费视频| 2020精品极品国产色在线观看 | 无码有码中文字幕| 亚洲国产成人超福利久久精品| 亚洲无码不卡网| 天堂成人av| 亚洲精品动漫在线观看| 国产剧情无码视频在线观看| 午夜老司机永久免费看片 | 久久男人资源站| 色爽网免费视频| 中文字幕有乳无码| 青青久在线视频免费观看| 日韩A级毛片一区二区三区| 99精品在线看| 91在线国内在线播放老师| 久久精品人人做人人爽| 国产微拍精品| 国产一区二区人大臿蕉香蕉| 丁香婷婷激情综合激情| 99热在线只有精品| 欧美成人精品在线| 美女一级毛片无遮挡内谢| 欧美精品v欧洲精品| 国产亚洲欧美另类一区二区| 亚洲色无码专线精品观看| 青青网在线国产| 亚洲区欧美区| 91视频国产高清| 精品偷拍一区二区| 国产97视频在线| 国产国产人成免费视频77777| 综合天天色| 青草午夜精品视频在线观看| 99福利视频导航| 久久semm亚洲国产| 成人国产小视频| 亚洲高清资源| 国产亚洲精品自在线| 强奷白丝美女在线观看| 19国产精品麻豆免费观看| 日韩第九页| 国产浮力第一页永久地址| 亚洲国产清纯| 亚洲无线观看| 亚洲AⅤ无码日韩AV无码网站| 婷婷色中文网| 亚洲欧美另类日本| 色综合国产| 国产激情第一页| 国模在线视频一区二区三区| 男人天堂伊人网| 精品国产成人国产在线| 亚洲天堂成人| 萌白酱国产一区二区| 沈阳少妇高潮在线|