亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2017-05-12 08:06:20
        關(guān)鍵詞:程序效果

        呂 嵐

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

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

        呂 嵐

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

        VBA是一個AutoCAD應用程序集成開發(fā)環(huán)境,是一種面向?qū)ο蟮目梢暬Y(jié)構(gòu)編程語言,被廣泛應用于各領(lǐng)域的實際工作中。AutoCAD中可以通過菜單、工具欄、命令等多種方式完成對圖形的縮放,但都不能一步完成縮放效果。通過VBA對AutoCAD進行二次開發(fā),設計了一個對圖形實現(xiàn)一步縮放的應用程序,提高了工作效率,實際應用效果良好。

        AutoCAD; VBA; 圖形; 縮放

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

        一、編程思路

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

        二、實例分析

        (1)在AutoCAD 2016中,打開【VBA管理器】對話框,創(chuàng)建一個新工程,保存在適當?shù)奈恢茫M入VBA集成開發(fā)環(huán)境。

        (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)該程序中最關(guān)鍵的代碼是計算選擇集內(nèi)所有對象的限制框角點,GetLimitPt函數(shù)用來完成這個功能,其實現(xiàn)代碼為:

        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這個函數(shù)的功能和數(shù)據(jù)結(jié)構(gòu)中的冒泡排序類似,將數(shù)組中第一個元素的值與第二個比較,取出較大的值,再與下一個比較,同樣取出最大值,以此類推[3]137。

        三、實例效果

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

        圖1 圖形初始狀態(tài) 圖2 程序運行狀態(tài) 圖3 圖形縮放后結(jié)果

        四、結(jié) 語

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

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

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

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

        [4] 楊瑞蘭,劉藝柱.基于AutoCAD縮放命令應用的研究[J].制造業(yè)自動化,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-),女,陜西長安人,講師,計算機科學與技術(shù)碩士,主要從事計算機科學與技術(shù)研究。

        TP391.72

        A

        1672-2388(2017)01-0086-03

        猜你喜歡
        程序效果
        按摩效果確有理論依據(jù)
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        迅速制造慢門虛化效果
        失能的信仰——走向衰亡的民事訴訟程序
        抓住“瞬間性”效果
        中華詩詞(2018年11期)2018-03-26 06:41:34
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        模擬百種唇妝效果
        Coco薇(2016年8期)2016-10-09 02:11:50
        創(chuàng)衛(wèi)暗訪程序有待改進
        3D—DSA與3D—CTA成像在顱內(nèi)動脈瘤早期診斷中的應用效果比較
        国产成人综合在线视频| 极品美女调教喷水网站| 在线观看国产精品自拍| 中文字幕人妻少妇久久| 成人免费av色资源日日| 一区二区三区字幕中文| 亚洲精品久久| 久久天天躁狠狠躁夜夜爽蜜月| 久久半精品国产99精品国产| 国产白浆流出一区二区| 美腿丝袜视频在线观看| 内射人妻无套中出无码| 中国丰满熟妇xxxx| 国产成人精品曰本亚洲| 精品蜜桃在线观看一区二区三区| 三级日本理论在线观看| 国产欧美综合一区二区三区| 国产在线精品一区二区三区直播| 日本老熟妇毛茸茸| 亚洲综合免费| 亚洲图文一区二区三区四区| 天堂网站一区二区三区| 久青草久青草视频在线观看 | 国产成社区在线视频观看| 丰满人妻被持续侵犯中出在线| 性无码一区二区三区在线观看| 欧美人妻精品一区二区三区| 亚洲一区视频在线| 91精品国产免费青青碰在线观看| 精品女同一区二区三区亚洲| 精品无码av一区二区三区不卡| 色777狠狠狠综合| 国产欧美乱夫不卡无乱码| 中文字幕亚洲无线码a| 国产高潮迭起久久av| 一边做一边喷17p亚洲乱妇50p| 全部孕妇毛片| 538亚洲欧美国产日韩在线精品 | 性刺激的大陆三级视频| 蜜桃视频一区二区三区在线观看 | 国产精品国产三级国产av18|