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

基于AutoCAD—VBA的圖層切換工具設計探討

2016-12-31 00:00:00呂嵐
科技創新與應用 2016年30期

摘 要:VBA是一個AutoCAD應用程序集成開發環境,是一種面向對象的可視化結構編程語言,被廣泛應用于各領域的實際工作中。通過界面或命令方式切換圖層的方法不便捷,針對這個問題,設計了一個切換圖層輔助程序,可以選擇所需圖層并且只顯示本圖層信息,還可以針對不同圖層設置不同顏色以示區別。實際應用效果良好,提高了工作效率。

關鍵詞:AutoCAD;VBA;圖層

1 概述

AutoCAD(Autodesk Computer Aided Design)是一款用于二維繪圖、詳細繪制、設計文檔和基本三維設計的自動計算機輔助設計軟件。AutoCAD繪圖功能強大,但在處理表格、數據等方面有局限性。可以通過對AutoCAD的二次開發,簡化繪圖過程,避免重復性工作,充分發揮其快速、準確的優勢[1]。Visual Basic for Applications( VBA)是Visual Basic的一種宏語言,可以通過VBA編程操作CAD的繪圖對象[2]。

在AutoCAD中,切換圖層的操作很不便捷,特別是當圖形中包含多個圖層的時候,每次都要通過打開圖層列表,去選擇要切換的圖層[3]。雖然有人開發了根據創建對象的當前類型自動切換圖層的程序,但是其具有明顯缺陷性。如在建筑制圖中,由于建筑繪圖中直線會用來表示多種對象,需要放置在很多圖層中[4],這樣的情況編寫的程序就不適用。作者在使用中分析得到,切換圖層除了打開列表不方便,搜索目標圖層也不便捷,因為圖層列表是固定不變的,而不是按照用戶使用的頻繁程序而排列。

2 編程思路

文章所創建的切換圖層程序正是針對上述問題,在文本框中顯示當前圖層的名稱,列表中顯示了當前圖形中所有的圖層。程序設計思路是在設置當前圖層后對列表的排序操作。設置當前圖層后,將列表中指定的圖層名稱移到第一位,在原來位置之前的所有元素向后退一位,其他元素位置保持不變。列表的排序方法為:當前圖層、上一次的當前圖層、再上一次的當前圖層,依此類推。列表能夠明確地顯示出當前所有圖層,省去了打開下拉列表的時間,圖層的排序保證了可以容易地選擇頻繁使用的圖層。

3 設計分析

(1)在【VBA管理器】對話框中,創建一個新工程。并在這個工程中創建用戶窗體。

(2)在窗體的初始化事件中,需要讀取圖形中圖層名稱,添加到列表框中,并且調整控件的狀態,其程序代碼為:

Private Sub UserForm_Initialize( )

Dim objLayer As AcadLayer

Dim I As Integer

For Each objLayer In ThisDrawing.Layers

lstLayers .AddItem objLayer.Name, i

i=i +1

Next

lstLayers.ListIndex = 0

txtCurLayer.Enabled = False

End Sub

(3)【僅顯示當前圖層】復選框允許用戶在指定當前圖層時關閉其他圖層,如果用戶單擊該復選框取消選中狀態,則顯示所有圖層,其實現代碼為:

If chcShow.Value = True Then

For Each objLayer In ThisDrawing.Layers

If objLayer.Name <> txtCurLayer.Text Then

objLayer.LayerOn = False

Else

objLayer.LayerOn = True

End If

Next

ElseIf chcShow.Value = False Then

For Each objLayer In ThisDrawing.Layers

objLayer.LayerOn = True

Next

End If

End Sub

(4)圖層列表框的雙擊事件中,包含了設置當前圖層以及排序列表框內容的代碼,其實現代碼為:

Private Sub lstLayers_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

txtCurLayer.Text = lstLayers.Text

Dim objLayer As AcadLayer

For Each objLayer In ThisDrawing.Layers

If objLayer.Name = txtCurLayer.Text Then

ThisDrawing.ActiveLayer = objLayer

Exit For

End If

Next

Dim strTemp As String

Dim index As Integer

Dim i As Integer

index = lstLayers.ListIndex

strTemp = lstLayers.Text

For i = 0 To index - 1

lstLayers.List(index - i) = lstLayers.List(index - i - 1)

Next

lstLayers.List(0) = strTemp

lstLayers.ListIndex = 0

4 實例效果

在VBA集成開發環境中,按下F5鍵,在AutoCAD主應用程序窗口中執行當前的程序。在圖層列表中雙擊【軸線】選項,該圖層就會被設置為當前圖層,在文本框中顯示“軸線”,幫助用戶判斷當前圖層中的對象,擊選中【僅顯示當前圖層】復選框,圖形窗口中其他圖層就會被關閉,界面如圖1所示:

5 總結與提高

本程序在AutoCAD2010/2014環境下能夠穩定正常運行,工作中應用效果良好。與通過菜單、命令操作話框中直接輸入各種參數相比,圖層切換程序的使用明顯的節省了頻繁操作圖層的時間,在繪圖和設計過程中非常實用。

參考文獻

[1]郭慶龍.AutoCAD VBA在鐵路信號工程設計中的應用[J].硅谷,2015(03):82.

[2]張勇.數字圖像修復關鍵技術的研究與實現[J].安陽師范學院學報,2014(02):32-35.

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

[4]秦洪現,崔惠嵐,孫劍,等.Autodesk系列產品開發培訓教程[M].北京:化學工業出版社,2008:167-168.

作者簡介:呂嵐(1982-),女,研究生,研究方向為計算機科學與技術,陜西鐵路工程職業技術學院講師。

主站蜘蛛池模板: 欧美激情福利| 亚洲黄色视频在线观看一区| 久久综合五月| 国产午夜精品鲁丝片| 天天做天天爱夜夜爽毛片毛片| 国产精品对白刺激| 亚洲天堂.com| 99精品欧美一区| 一级爱做片免费观看久久| 欧美精品三级在线| 亚洲无码视频一区二区三区| 在线观看视频一区二区| 一级毛片a女人刺激视频免费| 久久a级片| 欧美专区在线观看| 成人福利在线看| 日韩欧美国产成人| 污视频日本| 伦伦影院精品一区| 男女男精品视频| 狼友av永久网站免费观看| 亚洲an第二区国产精品| 性喷潮久久久久久久久| 亚洲av日韩av制服丝袜| 美女内射视频WWW网站午夜| 又黄又湿又爽的视频| 无码视频国产精品一区二区| 91精品情国产情侣高潮对白蜜| 亚洲制服丝袜第一页| 精品偷拍一区二区| 无遮挡国产高潮视频免费观看| 国产亚洲视频播放9000| 大学生久久香蕉国产线观看| 色综合成人| 欧美特级AAAAAA视频免费观看| 国产男人天堂| 四虎免费视频网站| 人妻无码一区二区视频| 精品一区二区三区中文字幕| h视频在线观看网站| 伊人久久影视| а∨天堂一区中文字幕| 99精品国产电影| 久久a毛片| 欧美日韩一区二区三区四区在线观看| 99九九成人免费视频精品| 亚洲福利片无码最新在线播放| 国产99视频精品免费观看9e| 国内精品视频区在线2021| 91年精品国产福利线观看久久| 婷婷综合色| 欧美在线国产| 亚洲国产天堂久久九九九| 国产欧美日韩视频怡春院| 国产精品久久久久久久久kt| 波多野结衣第一页| 五月天在线网站| 麻豆精品视频在线原创| 日韩人妻无码制服丝袜视频| 1024你懂的国产精品| www.日韩三级| 中文字幕av一区二区三区欲色| 亚洲无码视频图片| 亚洲av无码专区久久蜜芽| 国产真实乱人视频| 91精品免费久久久| 毛片基地视频| 欧美国产菊爆免费观看| 国内精品免费| 免费无码AV片在线观看国产| 久热re国产手机在线观看| 成年av福利永久免费观看| 久久婷婷国产综合尤物精品| 国产精品2| 亚洲va在线观看| 亚洲精品无码抽插日韩| 午夜精品久久久久久久99热下载| 欧美亚洲一二三区| 欧洲av毛片| 婷婷中文在线| 99视频在线看| 无码国产伊人|