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

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

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

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

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

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

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

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

1 設(shè)計(jì)思路

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

2 Visual Basic 6.0與 AutoCAD2002的連接

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

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

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

2.2 連接程序代碼[3]

Public acadapp As Object

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

Public preference As Object

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

Public acaddoc As Object

' AutoCAD文檔對(duì)象變量

Public paspace As Object

' AutoCAD圖紙空間對(duì)象變量

Public mospace As Object

' AutoCAD模型空間對(duì)象變量

'繪圖初始化

Sub init()

'與CAD建立連接

On Error Resume Next

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

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

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

If Err Then

Err.Clear'清除錯(cuò)誤

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

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

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

If Err Then

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

Exit Sub '退出本過(guò)程

End If

End If

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

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

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é)束過(guò)程

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

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

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

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

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

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

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

Public ox, oy As Double

' 圖形所放位置的相對(duì)原點(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

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

Dim Line1 As Object

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

Dim Line2 As Object

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

Dim line11 As Object

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

Dim Line21 As Object

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

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

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

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

stlayerobj.Color = acWhite

'stlayerobj.Lineweight = acLnWt025

'畫(huà)孔型輪廓線

Set curlayerobj = acaddoc.ActiveLayer

'保存當(dāng)前活動(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)也按照上述的方法依次找到,這樣就依次畫(huà)出箱形孔孔型圖的左半部分,再通過(guò)關(guān)于y軸鏡像得到完整的孔型圖。

4 結(jié)論

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

參考文獻(xiàn)

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

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

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

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

主站蜘蛛池模板: 国产精品林美惠子在线播放| 国产91高跟丝袜| 国产91久久久久久| 国产SUV精品一区二区| 狠狠色丁香婷婷综合| 中文字幕免费播放| 国产成人av大片在线播放| 久久一级电影| 思思99热精品在线| 小说 亚洲 无码 精品| 国产网站黄| 一本久道久综合久久鬼色 | 久草性视频| 久久精品视频一| 欧美另类精品一区二区三区| 丰满人妻中出白浆| 国产精品尤物在线| 国产成人1024精品| 亚洲国产AV无码综合原创| 国产日韩欧美在线视频免费观看| 亚洲成人黄色网址| 日韩人妻少妇一区二区| 亚洲丝袜第一页| 好吊妞欧美视频免费| 免费激情网站| 国产精品2| 一本大道香蕉久中文在线播放| 中文字幕无码中文字幕有码在线| 成人91在线| 国产剧情国内精品原创| 老色鬼久久亚洲AV综合| 成人蜜桃网| 久久久久久久97| 九色国产在线| 免费Aⅴ片在线观看蜜芽Tⅴ| 欧美怡红院视频一区二区三区| 一本一道波多野结衣av黑人在线| 97无码免费人妻超级碰碰碰| 亚洲成人免费看| 毛片一级在线| 精品国产免费观看一区| 国产手机在线小视频免费观看| 青青青视频91在线 | 日韩国产一区二区三区无码| 亚洲av无码人妻| 国产 在线视频无码| 久久免费精品琪琪| 日本伊人色综合网| 国产麻豆另类AV| 久久国产乱子| 1024你懂的国产精品| 国产免费久久精品44| 亚欧美国产综合| 国产一级α片| 潮喷在线无码白浆| 91精品免费久久久| 国产精品成人第一区| 日韩二区三区| 曰韩人妻一区二区三区| 亚洲无码免费黄色网址| 奇米影视狠狠精品7777| 91精品国产情侣高潮露脸| 人妻21p大胆| 伊人91在线| 久久久久亚洲Av片无码观看| 国产精鲁鲁网在线视频| 91国内外精品自在线播放| 久久人体视频| 久久成人免费| 色综合久久无码网| 久久精品一品道久久精品| 亚洲国产精品一区二区高清无码久久| 无码在线激情片| 日韩高清中文字幕| 色婷婷成人网| 一个色综合久久| 国产一级做美女做受视频| 国产精品高清国产三级囯产AV| jizz国产视频| 国产特级毛片aaaaaa| 人人91人人澡人人妻人人爽| 国产精品夜夜嗨视频免费视频|