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

用VB開發(fā)AutoCAD進(jìn)行參數(shù)化孔型優(yōu)化設(shè)計

2008-04-29 00:00:00張弛光張雪蓮
中國教育技術(shù)裝備 2008年20期

摘要 介紹用VB開發(fā)AutoCAD進(jìn)行參數(shù)化繪圖的途徑和方法。優(yōu)化孔型設(shè)計是軋鋼工藝設(shè)計的主要問題之一,通過軋制角鋼孔型的優(yōu)化設(shè)計,介紹這種方法在軋鋼孔型優(yōu)化設(shè)計中的具體應(yīng)用。

關(guān)鍵詞 VB;AutoCAD;參數(shù)化繪圖

中圖分類號:TP391.72 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-489X(2008)20-0108-03

軋鋼孔型的優(yōu)化設(shè)計是軋制工藝的主要問題之一。如果利用參數(shù)化繪圖,可以將圖形尺寸與設(shè)計條件相關(guān)聯(lián),即將圖形尺寸看作是“設(shè)計條件”的函數(shù),當(dāng)設(shè)計條件發(fā)生變化時,圖形尺寸也隨之發(fā)生變化,從而完成圖形的繪制。這樣不僅可以縮短設(shè)計周期,而且提高了設(shè)計質(zhì)量。其實(shí),AutoCAD自問世之初,就為人們提供了參數(shù)化繪圖的功能,它不但提供了與其他程序設(shè)計語言的接口,而且其自身擁有的AUTOLISP、ADS、ARS、VBA等開發(fā)工具功能強(qiáng)大。

筆者通過VB高級語言把AUTOCAD中的VBA代碼轉(zhuǎn)變?yōu)閂B代碼,以VB作為編譯器,AutoCAD作為圖形支撐軟件,使VB直接調(diào)用AutoCAD來實(shí)現(xiàn)參數(shù)化繪圖。

1 設(shè)計思路

對于高級語言Visual Basic 6.0來說,其計算能力較強(qiáng)而繪圖能力卻相對較差;而繪圖軟件AutoCAD2002恰好相反,計算能力差而繪圖能力強(qiáng)。設(shè)計者可以用前者計算,用后者繪圖。這就要求高級語言和繪圖軟件之間要有接口,設(shè)計者給出參數(shù),經(jīng)高級語言處理后能夠調(diào)用AutoCAD繪出所需的圖形。

2 Visual Basic 6.0與 AutoCAD2002的連接

2.1 連接方式VBA是AutoCAD2002的內(nèi)嵌式語言,它的全稱是Visual Basic for Application。它是基于Visual Basic 6.0版本,完全面向?qū)ο篌w系結(jié)構(gòu)的一種編程語言,所以它有著與VB幾乎相同的開發(fā)環(huán)境和語法;它的功能強(qiáng)大,可以說是一個萬能開發(fā)工具。由于VBA是依附于AutoCAD的,所以其與AutoCAD共享內(nèi)存空間、數(shù)據(jù)環(huán)境。VBA語言結(jié)構(gòu)簡單,即可利用AutoCAD主界面操作環(huán)境,也可創(chuàng)造自己所需的主界面操作環(huán)境[1]。但是它也存在一定的缺點(diǎn),為了克服這些缺點(diǎn),使用Visual Basic 6.0開發(fā)AutoCAD。

轉(zhuǎn)化VBA代碼為VB代碼,首先要引用AutoCAD type library。在VB6.0中,選擇工程—“引用”,然后在“引用”對話框選擇AutoCAD2000 type library,接下來將VBA代碼中所有的Thisdrawing替換成一個用戶定義的代表當(dāng)前活動文檔的變量,為AutoCAD應(yīng)用程序acadApp和當(dāng)前文檔acadDoc定義一個變量,然后設(shè)置應(yīng)用程序變量為當(dāng)前AutoCAD應(yīng)用程序。

如果AutoCAD正在運(yùn)行,則用GetObject方法取得AutoCAD應(yīng)用程序?qū)ο蟆H绻鸄utoCAD沒有運(yùn)行,則返回一個錯誤。捕捉這個錯誤并清除它,然后用CreateObject方法嘗試建立一個AutoCAD應(yīng)用程序?qū)ο蟆H绻晒Γ瑒tAutoCAD啟動;如果失敗,則顯示一個消息框說明錯誤原因[2]。

2.2 連接程序代碼[3]

Public acadapp As Object

' AutoCAD應(yīng)用程序?qū)ο笞兞?/p>

Public preference As Object

' AutoCAD優(yōu)先設(shè)置對象變量

Public acaddoc As Object

' AutoCAD文檔對象變量

Public paspace As Object

' AutoCAD圖紙空間對象變量

Public mospace As Object

' AutoCAD模型空間對象變量

'繪圖初始化

Sub init()

'與CAD建立連接

On Error Resume Next

'如果CAD正在運(yùn)行,則GetObject函數(shù)返回對應(yīng)用程序?qū)ο蟮囊?/p>

'變量AcadApp已經(jīng)定義成全局變量

Set acadapp = GetObject(, \" AutoCAD.Application\")

If Err Then

Err.Clear'清除錯誤

Set acadapp = CreateObject(\"AutoCAD.Application\")'啟動AutoCAD

'如果GetObject函數(shù)不能創(chuàng)建AutoCAD應(yīng)用程序?qū)ο?/p>

'則提示不能運(yùn)行AutoCAD!!!

If Err Then

MsgBox \"不能運(yùn)行AutoCAD!!!\"

Exit Sub '退出本過程

End If

End If

'如果成功的引用了AutoCAD應(yīng)用程序?qū)ο?/p>

'則使其界面可見(缺省狀態(tài)下是不可見的)

acadapp.Visible = True

acadapp.Width = Screen.Width

acadapp.Height = Screen.Height

Set preference = acadapp.preference

Set acaddoc = acadapp.ActiveDocument

Set mospace = acaddoc.ModelSpace

Set paspace = acaddoc.PaperSpace

End Sub '結(jié)束過程

3 參數(shù)化繪圖的實(shí)現(xiàn)

3.1 AutoCAD2002對象模型AutoCAD2002應(yīng)用程序公開的對象很多,每個對象都代表了AutoCAD應(yīng)用程序的一部分。圖形實(shí)體對象,如直線line、圓circle等;樣式設(shè)置對象,如線型linetype等;組織結(jié)構(gòu)對象,如層layer、塊block等。這些對象按照從屬關(guān)系,有層次地組織在一起,就形成了AutoCAD2002對象模型。在編制參數(shù)化繪圖代碼前必須建立實(shí)體層、中心線層,并設(shè)定各層的顏色和線型。

實(shí)體對象的創(chuàng)建與編輯:在創(chuàng)建實(shí)體對象之前,要確定實(shí)體將放于何處,是模型空間、圖紙空間,還是存放在塊中。不論在哪個對象中創(chuàng)建實(shí)體,都要先引用這個對象。

3.2 建立圖形的幾何及數(shù)學(xué)模型無論怎么復(fù)雜的圖形,均可看成是由直線、圓弧、圓等基本繪圖元素拼接而成的。只要已知特征點(diǎn)(直線兩端點(diǎn)、圓的圓心、圓弧的起點(diǎn)和終點(diǎn)等)的坐標(biāo)和有關(guān)參數(shù),就能調(diào)用 AutoCAD的基本作圖命令,將它們畫出來。

在參數(shù)化繪圖過程時,首先確定所選坐標(biāo)系的原點(diǎn)坐標(biāo),這里是(ox,oy)。其次是確定一些特征點(diǎn)的坐標(biāo)。按照圖形的幾何關(guān)系,根據(jù)特征點(diǎn)計算繪圖點(diǎn),繪圖點(diǎn)由特征點(diǎn)兩邊夾角和圓角半徑來確定。然后利用AutoCAD的直線﹑圓弧繪圖命令,把這些繪圖點(diǎn)連接起來,即可繪出完整的孔型圖。

現(xiàn)以型鋼軋制過程的孔型設(shè)計中箱形孔為例來說明圖形的參數(shù)化繪圖的具體途徑。型材是在帶有所謂軋槽所構(gòu)成的環(huán)形凹槽或凸緣的軋輥上軋制出來的。由兩個或多個軋輥的軋槽所構(gòu)成的斷面輪廓叫做孔型[4]。孔型設(shè)計中首先確定孔型形狀和孔型尺寸,其次是將孔型配置在軋輥上。如圖1所示:要畫出箱形孔必須知道軋件寬度b、軋件高度h、外角半徑r1、內(nèi)角半徑r2、孔型上半部傾斜角qxj1、孔型下半部傾斜角qxj2、輥縫s共7個尺寸。孔型寬高可以由VB計算部分得到,也可以手工輸入,而其他5個尺寸可以由人手工輸入。在參數(shù)化繪制孔型圖的過程中首先要正確地確定特征點(diǎn)的坐標(biāo)。一般應(yīng)根據(jù)尺寸的幾何關(guān)系,建立孔型上所有的特征點(diǎn)的坐標(biāo)和孔型寬度和高度的關(guān)系式,從而實(shí)現(xiàn)當(dāng)軋件尺寸改變時,相應(yīng)孔型圖也隨之改變的目的。繪圖點(diǎn)由特征點(diǎn)兩邊夾角和圓角半徑來確定。因?yàn)橄湫慰资前凑誽軸對稱,所以只畫出左面一半的圖形,右面一半的圖形由左面圖形關(guān)于y軸鏡像得到。

編制箱形孔參數(shù)化繪圖的程序如下所示(以1、2兩點(diǎn)的線段1和2、3兩點(diǎn)之間的圓弧2來說明圖形的繪制,其中13點(diǎn)為一個特征點(diǎn)):

Public ox, oy As Double

' 圖形所放位置的相對原點(diǎn)坐標(biāo)

Dim pn1(0 To 2) As Double

' 定義1點(diǎn)的坐標(biāo)為雙精度數(shù)

Dim pn2(0 To 2) As Double

' 定義2點(diǎn)的坐標(biāo)為雙精度數(shù)

Dim pn3(0 To 2) As Double

' 定義3點(diǎn)的坐標(biāo)為雙精度數(shù)

Dim pntcen1(0 To 2) As Double

'過渡弧圓心坐標(biāo)

Dim Line1 As Object

' 定義1點(diǎn)和2點(diǎn)之間的直線1為對象變量

Dim Line2 As Object

' 定義2點(diǎn)和3點(diǎn)之間的圓弧2為對象變量

Dim line11 As Object

' 定義直線1關(guān)于y軸的對稱線段11為對象變量

Dim Line21 As Object

' 定義圓弧2 y軸的對稱弧21為對象變量

Dim lkx As Object ' 輪廓線

Dim point1(0 To 2) As Double ' 鏡像點(diǎn)坐標(biāo)

Dim point2(0 To 2) As Double' 鏡像點(diǎn)坐標(biāo)

Dim xxobj As AcadLineType

'建立實(shí)體層

Dim stlayerobj As AcadLayer

Dim curlayerobj As AcadLayer

'添加一個實(shí)體層

Set stlayerobj = acaddoc.Layers.Add(\"lunkuoxian\")

stlayerobj.Color = acWhite

'stlayerobj.Lineweight = acLnWt025

'畫孔型輪廓線

Set curlayerobj = acaddoc.ActiveLayer

'保存當(dāng)前活動層

acaddoc.ActiveLayer = stlayerobj

'設(shè)實(shí)體層為當(dāng)前層

Set xxobj = acaddoc.Linetypes.Add(\"continuous\")

acaddoc.ActiveLinetype = xxobj

'xxobj.Lineweight = acLnWt025

acaddoc.Regen True

qxj1 = 7 * pi / 180: r1 = 25: r2 = 18: s= 15

' qxj1為箱形孔的側(cè)壁斜角

pn1(0) = ox - b / 2 - r1 * Tan((pi / 2 - qxj1) / 2) - 20: pn1(1) = oy + s / 2: pn1(2) = 0

pn2(0) = ox - b(i) / 2 - r1 * Tan((pi / 2 - qxj1) / 2): pn2(1) = oy + s / 2: pn2(2) = 0

Set Line1 = mospace.AddLine(pn1, pn2)

pntcen1(0) = pn2(0): pntcen1(1) = oy + s(i) / 2 + r1: pntcen1(2) = 0

Set Line2 = mospace.AddArc(pntcen1, r1, 3 / 2 * pi, 2 * pi - qxj1)

point1(0) = ox: point1(1) = oy - 135: point1(2) = 0

point2(0) = ox: point2(1) = oy + 118.5: point2(2) = 0

Set line11 = Line1.Mirror(point1, point2)

Set Line21 = Line2.Mirror(point1, point2)

圖中其他點(diǎn)的坐標(biāo)也按照上述的方法依次找到,這樣就依次畫出箱形孔孔型圖的左半部分,再通過關(guān)于y軸鏡像得到完整的孔型圖。

4 結(jié)論

本文介紹Visual Basic 6.0 與AutoCAD 2002的連接,以VB作為編譯器,以AutoCAD為圖形支撐軟件,在AutoCAD繪圖環(huán)境下進(jìn)行參數(shù)化繪圖。這種方法可以使設(shè)計人員從繁瑣的計算、繪圖工作中解放出來,以從事其他創(chuàng)造性的工作;并將高級語言在計算和數(shù)據(jù)處理上的優(yōu)勢與AutoCAD在圖形處理上的特長有機(jī)地結(jié)合在一起,能夠更好地滿足需要,提高優(yōu)化水平。

參考文獻(xiàn)

[1]孔曉玲.AutoCAD 2000 的二次開發(fā)—通用件壓板的計算機(jī)輔助設(shè)計[J].機(jī)械設(shè)計與制造,2002,10:16

[2]余承飛,王冬松.AutoCAD 數(shù)據(jù)庫應(yīng)用與連接技術(shù)[M].北京:北京大學(xué)出版社,2000,6

[3]張國寶.AutoCAD Visual Basic開發(fā)技術(shù)[M].北京:科學(xué)出版社,2000,1:25

[4]B.K.斯米爾諾夫,等.軋輥孔型設(shè)計[M].北京:冶金工業(yè)出版社,1991,1

主站蜘蛛池模板: 国产一在线| 狠狠做深爱婷婷久久一区| 亚洲伦理一区二区| 中国特黄美女一级视频| 伊人国产无码高清视频| 日本爱爱精品一区二区| 国产喷水视频| 性网站在线观看| 日韩黄色在线| 国产男女免费完整版视频| 久久99精品久久久久久不卡| 国产精品美女免费视频大全| 亚洲伊人久久精品影院| 亚洲无码熟妇人妻AV在线| 欧美综合区自拍亚洲综合绿色| 久久黄色视频影| 亚洲精品色AV无码看| 国产成人无码Av在线播放无广告| 成年看免费观看视频拍拍| 人人91人人澡人人妻人人爽| 国产精品一老牛影视频| 欧美黄网在线| 日韩欧美亚洲国产成人综合| 国产一级毛片在线| 欧美在线视频a| 国产高清在线丝袜精品一区| 国产小视频免费| 天堂成人在线| 亚洲一区二区三区国产精品| 日韩欧美视频第一区在线观看| 免费无码AV片在线观看国产| 国产成人免费| 国产男人的天堂| 亚洲看片网| 91在线视频福利| 日韩av电影一区二区三区四区| 国内精品视频在线| 成人字幕网视频在线观看| 日本午夜在线视频| 亚洲区第一页| 日韩在线网址| 久久亚洲天堂| 多人乱p欧美在线观看| 成人精品午夜福利在线播放| 国产激情在线视频| 综合亚洲网| 91视频99| 在线亚洲小视频| 国产主播在线一区| 草逼视频国产| 人人看人人鲁狠狠高清| 亚洲天堂区| 久久精品国产亚洲AV忘忧草18| aaa国产一级毛片| 极品国产在线| 亚洲中文字幕久久精品无码一区| 成年人福利视频| 九九热精品视频在线| 最新国产精品第1页| 亚洲精品麻豆| 中文毛片无遮挡播放免费| 亚洲欧洲日韩综合色天使| 日本一本正道综合久久dvd | 999精品在线视频| 红杏AV在线无码| 欧美国产日韩在线播放| 一区二区三区在线不卡免费| 毛片在线播放a| 久操中文在线| 国产H片无码不卡在线视频| 亚洲国产亚综合在线区| 亚洲男人的天堂在线观看| 日韩无码黄色| 欧美日韩91| 国模私拍一区二区三区| 伊人精品成人久久综合| 亚洲天堂日韩av电影| 婷婷六月综合网| 性色生活片在线观看| 成人免费一区二区三区| 国产人成在线观看| 国产欧美在线观看视频|