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

主站蜘蛛池模板: 91久久偷偷做嫩草影院电| 综合网久久| 欧美激情,国产精品| 成人日韩视频| 亚洲男女天堂| 97se亚洲综合在线天天| 18禁色诱爆乳网站| 国产又爽又黄无遮挡免费观看| 久久无码av三级| 亚洲综合二区| 无码精品一区二区久久久| 久久黄色毛片| 亚洲人成在线免费观看| 特级aaaaaaaaa毛片免费视频| 欧美日韩v| 国产自无码视频在线观看| 久久精品国产一区二区小说| 亚洲欧洲日本在线| 播五月综合| 免费一级毛片在线播放傲雪网| 欧美第二区| 秋霞一区二区三区| 综合社区亚洲熟妇p| 亚洲最黄视频| 日韩久草视频| 久久毛片网| 亚洲无码37.| 久久99热66这里只有精品一| 亚洲精品第一页不卡| 55夜色66夜色国产精品视频| 日本午夜精品一本在线观看| 欧美日韩资源| 午夜福利网址| 少妇精品在线| 国产小视频免费| 婷婷午夜天| 亚洲日本精品一区二区| 国产精品成人AⅤ在线一二三四| 青青青视频免费一区二区| 在线观看亚洲天堂| 欧美在线视频不卡第一页| 欧美精品啪啪| 在线观看免费人成视频色快速| 国产一区亚洲一区| 五月天丁香婷婷综合久久| 亚洲不卡影院| 欧美日韩国产在线观看一区二区三区| 久久亚洲中文字幕精品一区| 国产精品亚洲а∨天堂免下载| 欧美日韩亚洲国产| 国产一级做美女做受视频| 日韩精品一区二区三区视频免费看| 综合色区亚洲熟妇在线| 国产一级α片| 色婷婷色丁香| 亚洲二三区| 精品乱码久久久久久久| 亚洲精品手机在线| 青青草国产一区二区三区| 国产成人一区| 高清欧美性猛交XXXX黑人猛交| 欧美一区精品| 午夜国产精品视频| 日韩国产亚洲一区二区在线观看| 中文成人在线视频| 人妻丝袜无码视频| 国产欧美日韩va另类在线播放| 免费Aⅴ片在线观看蜜芽Tⅴ| 人禽伦免费交视频网页播放| 久久久亚洲色| 欧美日韩国产一级| 亚洲性视频网站| 亚洲黄网视频| 亚洲精品欧美重口| 精品一区二区三区水蜜桃| 国产av色站网站| 久热中文字幕在线观看| 亚洲一区无码在线| 波多野结衣久久精品| 亚洲欧州色色免费AV| 天天色天天操综合网| 国产一区二区网站|