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

基于AutoCAD-VBA的對象縮放操作方法探討

2017-05-12 08:06:20
湖州職業技術學院學報 2017年1期
關鍵詞:程序效果

呂 嵐

(陜西鐵路工程職業技術學院 電氣工程系, 陜西 渭南 714099)

基于AutoCAD-VBA的對象縮放操作方法探討

呂 嵐

(陜西鐵路工程職業技術學院 電氣工程系, 陜西 渭南 714099)

VBA是一個AutoCAD應用程序集成開發環境,是一種面向對象的可視化結構編程語言,被廣泛應用于各領域的實際工作中。AutoCAD中可以通過菜單、工具欄、命令等多種方式完成對圖形的縮放,但都不能一步完成縮放效果。通過VBA對AutoCAD進行二次開發,設計了一個對圖形實現一步縮放的應用程序,提高了工作效率,實際應用效果良好。

AutoCAD; VBA; 圖形; 縮放

在AutoCAD中,經常會對圖形進行縮放操作,可以通過命令、菜單或工具欄等多種方法實現[1]14。ZOOM命令和Scale命令都稱作為縮放命令,但兩者也有區別。Zoom命令叫做視圖縮放命令,在CAD中用來繪圖和觀察圖形的是一個窗口,這就相當于一個相機的鏡頭,Zoom就相當于鏡頭的拉近和拉遠,雖然看到所有圖形顯示的大小變了,但圖形的實際尺寸不會發生任何變化。Scale命令叫做圖形的縮放命令,他會直接改變圖形的大小,而且只會改變被選中圖形的大小[2]450。CAD的Scale命令只提供一個比例設置,也就是各軸向只能等比例縮放。并且用scale命令對選定圖形進行縮放時,其標注是不會同步進行改變的。通過選擇“視圖”下的“縮放”子菜單,也可以實現縮放,但無論是通過命令還是菜單選項進行縮放,一般都需要執行多步操作,才能實現想要的效果。本文設計的程序,能夠根據用戶選擇所要查看的對象進行縮放操作,無論選擇對象的范圍是否大于當前的視口,都能夠一次完成縮放操作。

一、編程思路

縮放操作的目的是為了在圖形窗口中顯示要觀察的對象,用戶選擇所要觀察的對象之后,可以獲得這些對象的限制框,根據限制框的大小確定縮放的角點,進行窗口縮放的操作。本程序的關鍵技術在于獲取選擇集內所有對象的限制框角點,這里采用的方法是遍歷選擇集內的對象,比較所有對象的限制框角點,獲得其中最上側、最下側、最左側、最右側的幾個角點。獲得這4個關鍵角點之后,就可以使用這4個角點的X、Y坐標值,計算出選擇集的限制框角點。

二、實例分析

(1)在AutoCAD 2016中,打開【VBA管理器】對話框,創建一個新工程,保存在適當的位置,進入VBA集成開發環境。

(2)選擇【插入/模塊】菜單項,向程序中添加一個標準模塊,在其中添加宏的代碼:

Public Sub ObjZoom()

On Error Resume Next

Dim SSet As AcadSelectionSet

If Not IsNull(ThisDrawing.SelectionSets.Item(“this”)) Then

Set SSet = ThisDrawing.SelectionSets.Item(“this”)

SSet.Delete

End If

Set SSet = ThisDrawing.SelectionSets.Add(“this”)

SSet.SelectOnScreen

Dim ptArr() As Variant

Dim count As Integer

count = SSet.count

ReDimptArr(count - 1)

If count = 0 Then

MsgBox “未選擇任何對象!”, vbCritical

Exit Sub

End If

Dim objEnt As AcadEntity

Dim ptTemp As Variant

DimiAs Integer

i= 0

For Each objEnt In SSet

objEnt.GetBoundingBoxptArr(i), ptTemp

i=i+ 1

Next

Dim ptLeft, ptBottom

ptLeft = GetLimitPt(ptArr, 3)

ptBottom = GetLimitPt(ptArr, 2)

i= 0

For Each objEnt In SSet

objEnt.GetBoundingBoxptTemp, ptArr(i)

i=i+ 1

Next

Dim ptRight, ptTop

ptRight = GetLimitPt(ptArr, 4)

ptTop = GetLimitPt(ptArr, 1)

Dim ptMin(0 To 2) As Double, ptMax(0 To 2) As Double

ptMin(0) = ptLeft(0): ptMin(1) = ptBottom(1): ptMin(2) = 0

ptMax(0) = ptRight(0): ptMax(1) = ptTop(1): ptMax(2) = 0

'ThisDrawing.ModelSpace.AddLineptMin, ptMax

ptMin(0) = ptLeft(0) - (ptRight(0) - ptLeft(0)) / 8

ptMin(1) = ptBottom(1) - (ptTop(1) - ptBottom(1)) / 8

ptMax(0) = ptRight(0) + (ptRight(0) - ptLeft(0)) / 8

ptMax(1) = ptTop(1) + (ptTop(1) - ptBottom(1)) / 8

ZoomWindowptMin, ptMax

'ThisDrawing.ApplicationZoomWindowptMin, ptMax

SSet.Delete

End Sub

(3)該程序中最關鍵的代碼是計算選擇集內所有對象的限制框角點,GetLimitPt函數用來完成這個功能,其實現代碼為:

Public Function GetLimitPt(ByRefptArr() As Variant, ByValtypeCal As Integer) As Variant

Dim count As Integer

Dim dblTemp As Double

count = UBound(ptArr)

DimiAs Integer

Dim num As Integer

Fori= 0 To count

Select Case typeCal

Case 1

Ifi= 0 Then dblTemp = ptArr(i)(1)

dblTemp = MaxDouble(dblTemp, ptArr(i)(1))

If dblTemp = ptArr(i)(1) Then

num =i

End If

Case 2

Ifi= 0 Then dblTemp = ptArr(i)(1)

dblTemp = MinDouble(dblTemp, ptArr(i)(1))

If dblTemp = ptArr(i)(1) Then

num =i

End If

Case 3

Ifi= 0 Then dblTemp = ptArr(i)(0)

dblTemp = MinDouble(dblTemp, ptArr(i)(0))

If dblTemp = ptArr(i)(0) Then

num =i

End If

Case 4

Ifi= 0 Then dblTemp = ptArr(i)(0)

dblTemp = MaxDouble(dblTemp, ptArr(i)(0))

If dblTemp = ptArr(i)(0) Then

num =i

End If

End Select

Nexti

GetLimitPt = ptArr(num)

End Function

GetLimitPt這個函數的功能和數據結構中的冒泡排序類似,將數組中第一個元素的值與第二個比較,取出較大的值,再與下一個比較,同樣取出最大值,以此類推[3]137。

三、實例效果

(1)在AutoCAD 2016中,打開一幅圖形,如圖1所示。(2)在VBA集成開發環境中,按下F5鍵運行程序,系統在命令行中給出提示“選擇對象”,如圖2所示。(3)選擇所要顯示的圖形對象,按下Enter鍵完成選擇,所得結果如圖3所示。

圖1 圖形初始狀態 圖2 程序運行狀態 圖3 圖形縮放后結果

四、結 語

通過這個程序實現了在CAD中對圖形的縮放功能,在實際使用過程中,程序運行穩定,提高了工作效率,效果良好。但是,這個批量文字替換程序也有一些不足之處,如:對多個圖形中的特定對象不能具體進行設置和選擇,同時,對不同行業中有特定需求和實際問題的用戶,針對性不是很強[4]144-145。今后,可以通過一些程序軟件的嵌入和二次開發,來解決本行業個性化應用問題。

[1] 王進明,安榮.Auto CAD中對象縮放命令的應用[J].煤炭技術,2011(05).

[2] 高 虎.Auto CAD200X圖形縮放和比例設置[J].科技信息,2009(33).

[3] 張 帆,鄭立楷,王華杰.AutoCAD VBA開發精彩實例教程[M].北京:清華大學出版社,2004.

[4] 楊瑞蘭,劉藝柱.基于AutoCAD縮放命令應用的研究[J].制造業自動化,2009(9).

Study of Operation Method of Object Scaling Based on AutoCAD-VBA

LYU Lan

(Department of Electrical Engineering, Shanxi Railway Institute, Weinan 714000, China)

Visual Basic for applications is an integrated development environment in AutoCAD application, also is an object-oriented visual structure programming language, which is widely used in various fields of practical work. AutoCAD completes the scaling of the graphics through a variety of ways, such as through the menu, toolbar, command, etc. But none of them can be completed in one step. Using VBA application to the secondary development of Auto-CAD, designed the application of operation method of object scaling, it is proved that this application works more efficiency.

Autodesk Computer Aided Dided Design; Visual Basic for Application; graphic; scaling

2016-12-28

呂 嵐(1982-),女,陜西長安人,講師,計算機科學與技術碩士,主要從事計算機科學與技術研究。

TP391.72

A

1672-2388(2017)01-0086-03

猜你喜歡
程序效果
按摩效果確有理論依據
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
迅速制造慢門虛化效果
失能的信仰——走向衰亡的民事訴訟程序
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
3D—DSA與3D—CTA成像在顱內動脈瘤早期診斷中的應用效果比較
主站蜘蛛池模板: 亚洲福利一区二区三区| 国内精品久久人妻无码大片高| 国产91熟女高潮一区二区| 中文字幕第4页| 欧洲精品视频在线观看| 亚洲国产精品美女| 青青热久麻豆精品视频在线观看| 国产极品美女在线播放| 亚洲成A人V欧美综合| 成人国产免费| 色欲综合久久中文字幕网| 99er精品视频| 国产精品三级专区| 免费国产高清视频| 色亚洲激情综合精品无码视频 | 亚洲国产欧美目韩成人综合| 免费福利视频网站| 91成人在线免费视频| 真人免费一级毛片一区二区 | 成人在线观看一区| 国产美女无遮挡免费视频| h视频在线播放| 国产精品亚洲а∨天堂免下载| a毛片在线播放| 日韩一区二区在线电影| 中文字幕伦视频| 色偷偷一区| 欧洲精品视频在线观看| 国产亚洲欧美在线视频| 免费人成网站在线高清| 国产成人午夜福利免费无码r| 国产嫖妓91东北老熟女久久一| 国产AV毛片| 高清码无在线看| 亚洲第一区精品日韩在线播放| 国产99久久亚洲综合精品西瓜tv| 亚洲激情99| 91高清在线视频| 88av在线| 国产杨幂丝袜av在线播放| 午夜福利在线观看入口| 国产欧美中文字幕| 国产黄网站在线观看| 爆乳熟妇一区二区三区| 99久久精品免费看国产电影| 在线国产资源| 99久久性生片| 99国产在线视频| 国产欧美网站| 福利国产在线| 美女视频黄频a免费高清不卡| 九色在线观看视频| 波多野结衣视频一区二区| 成人在线观看一区| 91热爆在线| 在线无码私拍| 亚洲成a人在线播放www| 国产不卡在线看| 国内精品久久九九国产精品| 精品一区二区无码av| 四虎永久在线精品影院| 国产欧美日韩va另类在线播放 | 97无码免费人妻超级碰碰碰| 69综合网| 欧美激情一区二区三区成人| 久久精品人人做人人| 成人一级黄色毛片| 在线色综合| 嫩草国产在线| 免费观看成人久久网免费观看| 99久久精品国产麻豆婷婷| 色综合久久88色综合天天提莫| 怡春院欧美一区二区三区免费| 国产91在线免费视频| jizz在线观看| 国产极品美女在线播放| 欧美精品不卡| 天堂亚洲网| 91探花国产综合在线精品| 2020精品极品国产色在线观看| www.99精品视频在线播放| 国产欧美综合在线观看第七页 |