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

用VB開發AutoCAD進行參數化孔型優化設計

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

摘要 介紹用VB開發AutoCAD進行參數化繪圖的途徑和方法。優化孔型設計是軋鋼工藝設計的主要問題之一,通過軋制角鋼孔型的優化設計,介紹這種方法在軋鋼孔型優化設計中的具體應用。

關鍵詞 VB;AutoCAD;參數化繪圖

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

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

筆者通過VB高級語言把AUTOCAD中的VBA代碼轉變為VB代碼,以VB作為編譯器,AutoCAD作為圖形支撐軟件,使VB直接調用AutoCAD來實現參數化繪圖。

1 設計思路

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

2 Visual Basic 6.0與 AutoCAD2002的連接

2.1 連接方式VBA是AutoCAD2002的內嵌式語言,它的全稱是Visual Basic for Application。它是基于Visual Basic 6.0版本,完全面向對象體系結構的一種編程語言,所以它有著與VB幾乎相同的開發環境和語法;它的功能強大,可以說是一個萬能開發工具。由于VBA是依附于AutoCAD的,所以其與AutoCAD共享內存空間、數據環境。VBA語言結構簡單,即可利用AutoCAD主界面操作環境,也可創造自己所需的主界面操作環境[1]。但是它也存在一定的缺點,為了克服這些缺點,使用Visual Basic 6.0開發AutoCAD。

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

如果AutoCAD正在運行,則用GetObject方法取得AutoCAD應用程序對象。如果AutoCAD沒有運行,則返回一個錯誤。捕捉這個錯誤并清除它,然后用CreateObject方法嘗試建立一個AutoCAD應用程序對象。如果成功,則AutoCAD啟動;如果失敗,則顯示一個消息框說明錯誤原因[2]。

2.2 連接程序代碼[3]

Public acadapp As Object

' AutoCAD應用程序對象變量

Public preference As Object

' AutoCAD優先設置對象變量

Public acaddoc As Object

' AutoCAD文檔對象變量

Public paspace As Object

' AutoCAD圖紙空間對象變量

Public mospace As Object

' AutoCAD模型空間對象變量

'繪圖初始化

Sub init()

'與CAD建立連接

On Error Resume Next

'如果CAD正在運行,則GetObject函數返回對應用程序對象的引用

'變量AcadApp已經定義成全局變量

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

If Err Then

Err.Clear'清除錯誤

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

'如果GetObject函數不能創建AutoCAD應用程序對象

'則提示不能運行AutoCAD!!!

If Err Then

MsgBox \"不能運行AutoCAD!!!\"

Exit Sub '退出本過程

End If

End If

'如果成功的引用了AutoCAD應用程序對象

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

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 '結束過程

3 參數化繪圖的實現

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

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

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

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

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

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

Public ox, oy As Double

' 圖形所放位置的相對原點坐標

Dim pn1(0 To 2) As Double

' 定義1點的坐標為雙精度數

Dim pn2(0 To 2) As Double

' 定義2點的坐標為雙精度數

Dim pn3(0 To 2) As Double

' 定義3點的坐標為雙精度數

Dim pntcen1(0 To 2) As Double

'過渡弧圓心坐標

Dim Line1 As Object

' 定義1點和2點之間的直線1為對象變量

Dim Line2 As Object

' 定義2點和3點之間的圓弧2為對象變量

Dim line11 As Object

' 定義直線1關于y軸的對稱線段11為對象變量

Dim Line21 As Object

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

Dim lkx As Object ' 輪廓線

Dim point1(0 To 2) As Double ' 鏡像點坐標

Dim point2(0 To 2) As Double' 鏡像點坐標

Dim xxobj As AcadLineType

'建立實體層

Dim stlayerobj As AcadLayer

Dim curlayerobj As AcadLayer

'添加一個實體層

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

stlayerobj.Color = acWhite

'stlayerobj.Lineweight = acLnWt025

'畫孔型輪廓線

Set curlayerobj = acaddoc.ActiveLayer

'保存當前活動層

acaddoc.ActiveLayer = stlayerobj

'設實體層為當前層

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為箱形孔的側壁斜角

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)

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

4 結論

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

參考文獻

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

[2]余承飛,王冬松.AutoCAD 數據庫應用與連接技術[M].北京:北京大學出版社,2000,6

[3]張國寶.AutoCAD Visual Basic開發技術[M].北京:科學出版社,2000,1:25

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

主站蜘蛛池模板: 色综合天天操| 免费不卡在线观看av| 亚洲AV色香蕉一区二区| 亚洲另类国产欧美一区二区| 69精品在线观看| 国产亚洲精品在天天在线麻豆 | 中文国产成人精品久久| 韩日无码在线不卡| 97久久超碰极品视觉盛宴| 超碰免费91| 人妻丝袜无码视频| 亚洲国产成人精品无码区性色| 国产激情在线视频| 亚洲无卡视频| 精品国产aⅴ一区二区三区| julia中文字幕久久亚洲| 国产欧美日韩综合一区在线播放| 亚洲第一黄片大全| 午夜日b视频| 久久狠狠色噜噜狠狠狠狠97视色| 亚洲成人在线网| 日韩欧美中文| 亚洲成人一区二区三区| 毛片网站观看| 超清人妻系列无码专区| 久久 午夜福利 张柏芝| 中文天堂在线视频| 欧美黄网站免费观看| 欧美精品成人一区二区视频一| 在线国产资源| 国产在线视频福利资源站| 最新午夜男女福利片视频| 亚洲国产系列| 欧美a级完整在线观看| 亚洲va在线观看| 国产精品自拍露脸视频| 欧美日韩一区二区在线播放| 国产97色在线| 欧美精品二区| 精品人妻AV区| 2021国产精品自产拍在线| 亚洲第一精品福利| 午夜视频日本| 日韩福利在线观看| 99色亚洲国产精品11p| 中文无码日韩精品| 欧美翘臀一区二区三区| 91精品国产丝袜| 婷婷五月在线视频| 在线欧美日韩| 毛片免费网址| 国产va在线观看免费| 色婷婷综合在线| 无码高潮喷水在线观看| 香蕉综合在线视频91| 国产精品露脸视频| 色婷婷在线播放| 亚洲乱伦视频| 国产一区二区色淫影院| 亚洲欧洲日韩国产综合在线二区| 亚洲人成影院在线观看| 欧美日韩在线亚洲国产人| 99热最新网址| 日韩精品成人网页视频在线| jizz国产在线| 国产日产欧美精品| 久久亚洲中文字幕精品一区| 亚洲日本韩在线观看| 91久久精品日日躁夜夜躁欧美| 一本大道东京热无码av| 久久青草免费91观看| 国产精品手机视频| 日韩午夜伦| 黄色网在线| 国产h视频免费观看| 日本一区二区不卡视频| 伊人久综合| 97成人在线视频| 五月六月伊人狠狠丁香网| 国产精品视频久| 无码区日韩专区免费系列 | 91在线播放免费不卡无毒|