Sd ng Form

Một phần của tài liệu vba_cad_25_8_08 (Trang 89 - 93)

1. Làm vi c v i Form và Macro

T o m i m t form, ch y form trong ch đ run_mode

Gi ng h t VB

Chèn controls vào form

Không khác VB

n, hi n th form

Gi ng h t VB

Load và Unload form

Gi ng y nh VB

S d ng Modal form

ây là đi m khác c a VBA v i VB. Ch đ Modal form cho phép b n cùng m t lúc làm vi c v i c Form và c màn hình c a CAD nh vi c Pick chu t, đánh l nh,…

2. Làm vi c v i module và macro Ch y macro t toolbar và menu 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() B浦 MÔN T IN H窺C XÂY D衛NG KHOA CÔNG NGH烏 THÔN G TIN TR姶云NG A萎 I H窺C XÂY D衛NG

)

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 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 : (adsbygoogle = window.adsbygoogle || []).push({});

1. Tham chi u đ n ActiveX Object Model c a ng d ng c n giao ti p v i. 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 B浦 MÔN T IN H窺C XÂY D衛NG KHOA CÔNG NGH烏 THÔN G TIN TR姶云NG A萎 I H窺C XÂY D衛NG

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.

Thoát kh i ng d ng

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. (adsbygoogle = window.adsbygoogle || []).push({});

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

B浦 MÔN T IN H窺C XÂY D衛NG KHOA CÔNG NGH烏 THÔN G TIN TR姶云NG A萎 I H窺C XÂY D衛NG

' 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

B浦 MÔN T IN H窺C XÂY D衛NG KHOA CÔNG NGH烏 THÔN G TIN TR姶云NG A萎 I H窺C XÂY D衛NG

Err.Clear

Set App = CreateObject("Excel.Application") 'depends on application 'check to see if application was started (adsbygoogle = window.adsbygoogle || []).push({});

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

MsgBox "Could not start Excel, exiting ...", vbCritical Exit Sub

End If

End Sub

IV. Làm vi c v i Xdata 1. Khái ni m v XData

Một phần của tài liệu vba_cad_25_8_08 (Trang 89 - 93)