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-),女,研究生,研究方向為計算機科學與技術,陜西鐵路工程職業技術學院講師。

主站蜘蛛池模板: 99久久精彩视频| 热re99久久精品国99热| 精品国产免费人成在线观看| 久久久噜噜噜| 国产成人精品免费av| 无码专区第一页| 欧美一级在线| …亚洲 欧洲 另类 春色| 国产国产人成免费视频77777| 午夜小视频在线| 91美女视频在线| 2020国产免费久久精品99| 久久中文电影| 在线观看免费黄色网址| 国产拍揄自揄精品视频网站| 国产凹凸视频在线观看| 亚洲熟女中文字幕男人总站| 久久永久精品免费视频| 中文精品久久久久国产网址| 91福利国产成人精品导航| 91精品人妻互换| 久草视频福利在线观看| 亚洲AV无码久久天堂| 人妻丝袜无码视频| 久久亚洲国产最新网站| 亚洲欧洲日本在线| 国产精品性| 在线看片国产| 国产精品视频导航| 91久久性奴调教国产免费| 国产喷水视频| 国产打屁股免费区网站| 青草视频免费在线观看| 中文字幕 日韩 欧美| 99热这里只有成人精品国产| 99热国产在线精品99| 免费国产一级 片内射老| 欧美激情综合| 国产无码高清视频不卡| 国产主播福利在线观看| 免费人成黄页在线观看国产| 女人18毛片水真多国产| 久久国产精品77777| 精品人妻一区二区三区蜜桃AⅤ| 日韩欧美亚洲国产成人综合| 亚洲成a人片在线观看88| 综合天天色| 性欧美在线| h网站在线播放| 亚洲精品无码人妻无码| 亚洲精品你懂的| 亚洲最大综合网| 国产在线高清一级毛片| 99久久这里只精品麻豆| 国产欧美专区在线观看| 91精品视频播放| 亚洲综合精品第一页| 亚洲欧美自拍一区| 狠狠干欧美| 中文字幕无码电影| 亚洲一级毛片在线观播放| 中文字幕亚洲乱码熟女1区2区| 国产小视频免费观看| 欧美精品另类| 亚洲午夜天堂| 欧美一级99在线观看国产| 国产哺乳奶水91在线播放| AⅤ色综合久久天堂AV色综合| 欧美国产日韩另类| 国产资源站| 色播五月婷婷| 亚洲精品午夜无码电影网| 欧美亚洲欧美| 亚洲男人的天堂久久香蕉| 米奇精品一区二区三区| 亚洲V日韩V无码一区二区| 性欧美久久| 成人亚洲视频| 久久综合九色综合97网| 色网站在线视频| 久久精品这里只有精99品| 毛片三级在线观看|