Làm v ic vi module và macro (0.5t) Ch y macro t toolbar và menu

Một phần của tài liệu lap trinh trong autocad (Trang 85 - 89)

III. To và ch nh sa Pull-down và Shorcut menus (1,5t) 1.T o m i Pull-down menu

2. Làm v ic vi module và macro (0.5t) Ch y macro t toolbar và menu

B n có th ch y macro t AutoCAD toolbar ho c menu b ng cách thay đ i menu Macro property cho toolbar ho c menu đó. Macro property có d ng :

-VBARUN filename.dvb!modulename.macroname

Trong đó :

- filename là tên c a project file.

- modulename là tên c a module ch a macro c n ch y. - macroname là tên c a macro.

Ví d : -VBARUN Project1.dvb!module1.thongkethep

T i Project m t cách t đ ng

Có 2 cách đ Load Project m t cách t đ ng :

1. Khi VBA đ c t i, nó s tìm ki m trong AutoCAD m t project có tên là acad.dvb. File này s đ c t i m t cách m c đnh nh m t default project

2. C ng gi ng nh VBA, Autolisp c ng có m t file có tên là acad.lsp c ng đ c t i m t cách t đ ng khi b n v m i xu t hi n. Dòng l nh sau trong file acad.lsp dùng đ t i project myproj.dvb vào trong b n v m i khi m t b n v m i đ c m

(defun S::STARTUP()

(command "_VBALOAD" "myproj.dvb") )

Ch y macro m t cách t đ ng

Có 2 cách đ chay macro m t cách t đ ng :

1. B n có th ch y các macro m t cách t đ ng, b ng cách so n th o AutoCAD startup c a acad.lsp. Ví d , đ t đ ng ch y Macro có tên drawline, đ u tiên b n copy đo n macro vào trong file project acad.dvb . Sau đó, m notepad.exe và so n đo n sau :

(defun S::STARTUP()

(command "_-vbarun" "drawline") )

2. Trong Project acad.dvb, macro có tên AcadStartup s t đ ng đ c chay khi VBA load. III. T ng tác v i các ng d ng và các c s d li u khác (0.5t) 1. T ng tác v i Visual Lisp T đ c 2. S d ng c s d li u DAO T đ c, gi ng VB 3. Giao ti p v i các ng d ng khác.

trao đ i thông tin gi a các Activex Model, ta làm theo các b c sau :

2. T o m t instance c a ng d ng

3. Vi t Code b ng cách s d ng c AutoCAD Object Model và Object Model c a ng d ng ngoài.

Tham chi u đ n ActiveX Object Library c a ng d ng khác

Vi c đ u tiên khi b n trao đ i thông tin v i các ng d ng ngoài là tham chi n đ n ActiveX Object Library, vì nó ch a t t c các đ i t ng, ph ng th c, thu c tính, h ng s và s ki n do ng d ng đó đnh ngh a

Thông th ng, đ k t n i v i các Activex Library, b n ch n Tools menu å References. , sau đó m t danh sách các object librarie VBA tìm th y trong h th ng c a b n s đ c hi n lên. Sau đó b n ch n nh ng Library mà b n c n trao đ i d li u t i nó. V d , b n thêm object library c a Microsoft Excel, ch n Microsoft Excel object library entry trong danh sách.

Khi b n đã t o tham chi u đ n object library c a ng d ng ngoài, b n có th s d ng VBA Object Browser đ xem danh sách các object c a ng d ng mà b n tham chi u đ n.

C th nh sau :

1. In the VBA IDE, open the Tools menu and select the References menu option.

2. Find and select the entry in the list of Available References for the application you want to access.

3. Select OK to close the dialog box with your changes.

T o m t Instance c a ng d ng ngoài

Sau khi tham chi u đ n Object library, b n ph i t o m t instance c a ng d ng đó. Các b c th c hi n nh sau :

1. B n khai báo m t bi n đ i di n cho application. Ví d , khai báo m t bi n đ i di n cho Excel.Application :

Dim ExcelAppObj as Excel.Application

2. sau đó b n t o m t instance cho application. Ví d :

Set ExcelAppObj = New Excel.Application Vi t Code cho Objects t ng d ng ngoài

Ví d sau đây đi u khi n s hi n h c a Excel sau khi đã tao Instance cho nó :

ExcelAppObj.Visible = TRUE

B n có th s d ng VBA Object Browser đ tìm các đ i t ng và s d ng help file đ đ c thêm v b t k m t Object Model mà b n tham chi n đ n.

Khi ng d ng ngoài ch y, nó chi m m t b nh nh t đnh trong máy tính. Sau khi không s d ng đ n ch ng trình đó n a, t t nh t b n nên t t t t c các ng d ng mà b n đã t o Instance cho nó. Ví d , thoát session Excel nh sau :

ExcelAppObj.Application.Quit List AutoCAD attributes on an Excel spreadsheet

Ví d : th t c sai tìm t t c các block references trong b n v hi n hành. Li t kê t t c các attributes c a các block references đó :

Sub Ch12_Extract()

Dim Excel As Excel.Application Dim ExcelSheet As Object Dim ExcelWorkbook As Object Dim RowNum As Integer Dim Header As Boolean Dim elem As AcadEntity Dim Array1 As Variant Dim Count As Integer ' Launch Excel.

Set Excel = New Excel.Application

' Create a new workbook and find the active sheet. Set ExcelWorkbook = Excel.Workbooks.Add Set ExcelSheet = Excel.ActiveSheet

ExcelWorkbook.SaveAs "Attribute.xls" RowNum = 1

Header = False

' Iterate through model space finding ' all block references.

For Each elem In ThisDrawing.ModelSpace With elem

' When a block reference has been found, ' check it for attributes

If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then If .HasAttributes Then

' Get the attributes Array1 = .GetAttributes ' Copy the Tagstrings for the ' Attributes into Excel

For Count = LBound(Array1) To UBound(Array1) If Header = False Then

If StrComp(Array1(Count).EntityName, _ "AcDbAttribute", 1) = 0 Then

ExcelSheet.Cells(RowNum, Count + 1).value = _ Array1(Count).TagString

End If End If

Next Count

RowNum = RowNum + 1

For Count = LBound(Array1) To UBound(Array1)

ExcelSheet.Cells(RowNum, Count + 1).value = Array1(Count).textString Next Count Header = True End If End If End With Next elem

Excel.Application.Quit End Sub

S d ng GetObject, và NewObject

Nh đã trình bày tr ng I “Cách l p trình AutoCAD VBA trong Excel”, B n c ng th GetObject, và NewObject đ connect t i các ng d ng khác

B ng l p ng d ng

APPLICATION CLASS IDENTIFICATION

Excel Excel.Application.x (x là product version) Word Word.Application.x (x là version index)

Microsoft Product Versions

PRODUCT VERSION EXAMPLE

Office 95 7 Word.Application.7 Office 97 8 Excel.Application.8 Office 2000 9 Word.Application.9 Office XP 10 Powerpoint.Application.10 Office 2003 11 Outlook.Application.11 Ví d :

Public Sub StartExcel(App As Excel.Application, Visible As Boolean) 'handle errors inline

On Error Resume Next

Set App = GetObject(, "Excel.Application") 'depends on application 'check to see if application is running

If Err Then

'no, application will need to be started Err.Clear

Set App = CreateObject("Excel.Application") 'depends on application 'check to see if application was started

If Err Then

'no, application could not be started - exit Exit Sub

End If End If

'set the application visibility App.Visible = Visible

End Sub

Ki m tra xem đã connect đ c v i Excel hay ch a : Public Sub Start()

Dim oExcel As Excel.Application 'attempt to start Excel

StartExcel oExcel, True If Not oExcel Is Nothing Then MsgBox "Success"

Else

Exit Sub End If

End Sub

IV. Làm vi c v i Xdata (1 ti t) 1. Khái ni m v XData

Một phần của tài liệu lap trinh trong autocad (Trang 85 - 89)

Tải bản đầy đủ (PDF)

(96 trang)