Tài liệu Vẽ kỹ thuật với Autocad 2006 P2 doc

10 435 1
Tài liệu Vẽ kỹ thuật với Autocad 2006 P2 doc

Đang tải... (xem toàn văn)

Thông tin tài liệu

In this example, use a question mark (?) to ask the VBAIDE to tell you a variable’s value. To set a variable’s value in the Immediate window, type the statement just as you would in the Code window. Figure 1-10 shows how it’s done. ■Note You can’t declare variables in the Immediate window. Also, a variable’s scope and valid VBA commands in the Immediate window are equally important. Chapter 2 covers variable scope. The Options Dialog Box The Options dialog box, shown in Figure 1-11, lets you customize the IDE’s look and feel, in- cluding syntax color scheme, source code font, and tab spacing. To open the Options dialog box, choose Tools ➤ Options. This section covers the most commonly used options. For most developers, the default settings are fine. However, you should consider changing two settings on the Editor tab: Auto Syntax Check and Require Variable Declaration. When the Auto Syntax Check option is checked, syntax errors in your code generate an error message similar to Figure 1-12. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE)8 Figure 1-10. Setting a variable in Immediate window Figure 1-11. The Options dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 8 As you begin to develop more complex applications and reuse lines of code from other places in your application, these error messages will become a nuisance. Any time you move the cursor off the offending line of code, you get one of these error messages. But if you uncheck Auto Syntax Check, the VBAIDE notifies you of errors by changing the color of the offending line of code to red. The Require Variable Declaration option is unchecked by default, meaning that the VBAIDE does not require that you properly declare your variables before you use them. This isn’t much of a concern when you write a simple macro, but when you start developing larger and more complex applications, you’ll find this option indispensable. Checking this option forces you to think about each variable and its data type. When you check this option, the VBAIDE adds a line of code to the start of each module, as shown in Figure 1-13. After you check this option, exit and restart AutoCAD to make it take effect. By declaring variables to be a specific data type, you save memory resources. Undeclared variables are, by default, assigned the variant data type. This data type uses the most memory and could lead to memory resource problems when users run your application. As a rule of thumb, always declare each variable you use in your application, and choose the data type that uses the least possible memory. Chapter 2 discusses data types and memory in more detail. Managing Projects Managing your code components is critical to successfully developing applications. This section discusses adding components to your project, saving your project, and loading and executing an application. Project Structure A VBA project contains several different types of files, including the following: • UserForm module • Standard module • Class module • Reference .dvb file CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE) 9 Figure 1-12. The error- message dialog box Figure 1-13. An example of the checked Require Variable Declaration 5793c01_final.qxd 8/22/05 2:41 AM Page 9 UserForm Module UserForm modules (files with a .frm extension) contain a text description of your form, controls placement, and property settings. They also include UserForm-level declarations of constants, variables, and procedures; and event procedures. Standard Module Standard modules (files with a .bas extension) contain module-level declarations of programmer- defined data types, constants, variables, and public procedures. A standard module typically contains routines that don’t fit nicely into a class definition. Class Module Use class modules (files with a .cls extension) to create your own objects, including methods, properties, and events. Class modules are similar to UserForm modules except that they have a visible user interface. Class modules are very versatile and vital to VBA and AutoCAD. As you progress through this book, you’ll see that classes and objects are everywhere. Reference .dvb File You can reference the code of another .dvb file in your current project. This feature lets you easily reuse code among several projects. You can’t create a circular reference, which is a refer- ence to one project and a reference in that project to the current project. If you accidentally create a circular reference, AutoCAD tells you of the error. You have to undo the reference before you can continue. Creating, Opening, and Saving Projects To extract, embed, create, save, load, and unload VBA projects, open the VBA Manager dialog box, shown in Figure 1-14. To open it, either type VBAMAN at the AutoCAD command prompt or choose Tools ➤ Macros ➤ VBA Manager. You must explicitly load all .dvb projects. AutoCAD loads embedded projects automatically when the drawing containing them is opened, depending upon how you configure AutoCAD’s security options. Clicking New creates a new project in the VBAIDE that you can access by clicking the Visual Basic Editor button. To load an existing project, click the Load button. The Open VBA Project dialog box in Figure 1-15 appears, letting you choose the project to load. ■Tip Embedding VBA macros within drawings is fine for drawings that remain within your organization. Avoid embedding macros when you’ll deliver the drawings to outside users or customers as it imposes a security risk on their part to trust your macros in their environment. This dialog box is similar to the standard File Open dialog box in Windows. Similar to cre- ating a new project, when you choose the .dvb project you want, click the Visual Basic Editor button to start working on your project. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE)10 5793c01_final.qxd 8/22/05 2:41 AM Page 10 There are two other ways to create and load DVB project files: • Type VBAIDE at the AutoCAD command prompt or press Alt+F11 to open or create a DVB project file. • Type VBALOAD at the AutoCAD command prompt to open the Open VBA Project dia- log box so you can choose a project to load. To save your project, choose File ➤ Save or press Ctrl+S. If you have not previously saved your project, the standard Save As dialog box appears, as shown in Figure 1-16. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE) 11 Figure 1-14. The VBA Manager dialog box Figure 1-15. The Open VBA Project dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 11 Unlike in Visual Basic, you don’t need to save each project module separately. AutoCAD saves them all in a .dvb file. However, as the next section illustrates, you can export each mod- ule to a separate file. ■Tip Avoid saving your custom program files under the AutoCAD installation folder tree. Instead, create a separate folder tree for them. This prevents AutoCAD installations and updates from affecting your program files. Adding, Saving, and Removing Files You will sometimes want to add to your VBA project a file such as a common UserForm module or a collection of routines in a standard module. To do this, choose File ➤ Insert File or press Ctrl+M. The Import File dialog box appears, as shown in Figure 1-17. To export a module to a separate file, highlight the module name in the Project Explorer window, and then either choose File ➤ Export File or press Ctrl+E. A Save As dialog box appears for the type of file to export. Alternatively, you can highlight the module name in the Project Explorer window, right-click to invoke the pop-up menu, and choose Export File. To remove a file from your project, highlight the module name in the Project Explorer dia- log. Then choose File ➤ Remove (you will be offered the option of exporting the file prior to removal). You can also highlight the module name, right-click to invoke the pop-up menu in Figure 1-18, and then choose Remove. Notice that this menu also includes the Export File option. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE)12 Figure 1-16. Save As dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 12 Adding ActiveX Controls and Code Components When you start a project and add a UserForm module, a common Toolbox appears. It contains a standard collection of ActiveX controls called intrinsic controls. Chapter 3 covers intrinsic con- trols in more detail. If you want to insert an ActiveX control that is not in the Toolbox, choose Tools ➤ Additional Controls or right-click in the Toolbox window and choose Additional Con- trols. The Additional Controls dialog box shown in Figure 1-19 appears. This dialog box lists all the ActiveX controls that are properly registered on your machine. However, if you want to use a particular ActiveX control, check its End User License Agree- ment (EULA) to determine whether you have a license to use it in a VBA host application. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE) 13 Figure 1-17. The Import File dialog box Figure 1-18. The Remove Module pop-up menu Figure 1-19. The Additional Controls dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 13 Many ActiveX controls installed with Microsoft Visual Basic, including TreeView, ListView, File, Directory, and Drive, are not licensed for use in a VBA host application. However, Chap- ter 19 explains some easy ways you can use the Windows application programming interface (API) to get around this dilemma. You can add more than ActiveX controls—code components are perhaps even more com- mon. This is the means by which your application can gain access to other ActiveX automation applications such as Microsoft Excel, Access, and Word. ActiveX automation is your key to building powerful applications that take advantage of objects exposed by other applications. To use the objects, methods, properties, and events that other applications expose, first add a reference to that application. Choose Tools ➤ References to open the References dialog box, shown in Figure 1-20. Check the reference you want to add. The dialog box contains an alphabetical list of the references your application doesn’t use. Later, when you write your own objects using Class modules, this is where you’ll add them to your project. To improve performance, deselect any references your application doesn’t use. Each refer- ence must be resolved before your project loads. Depending on your project’s size, this could greatly decrease how long your user waits for the application to load and run. ■Note If your application uses an object of another application, you can’t remove the reference to it without first removing the object. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE)14 Figure 1-20. The References dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 14 The Object Browser When you set a reference to an application’s object library, the Object Browser lists all the objects, methods, properties, constants, and events that application exposes. To open the Object Browser, choose View ➤ Object Browser or press F2. By default, the Object Browser lists all libraries your project currently references. To view just the AutoCAD library, for example, click AutoCAD in the drop-down list in the Object Browser, as shown in Figure 1-21. The Object Browser gives you a perspective of the objects an application exposes and the methods, properties, events, and con- stants those objects expose for your application to manipulate. Loading and Running Applications You can load and subsequently execute your VBA applications in many different ways. This section explains the most common ways. Acad.dvb AutoCAD searches the support file search path for the file acad.dvb. If AutoCAD finds this file, it loads it into the current session. The following example illustrates how to implement this feature. Public Sub Start() Application.ActiveDocument.SetVariable "OSMODE", 35 End Sub Place this code in the ThisDrawing module and save the file as acad.dvb. Save this file in any subdirectory specified in the support file search path. Now each time you start an AutoCAD session, AutoCAD loads this file. Also, if you include a routine called AcadStartup, AutoCAD exe- cutes it when it loads acad.dvb. The example in Figure 1-22 shows how to use the macros that you have stored in the acad.dvb file. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE) 15 Figure 1-21. The Object Browser dialog box 5793c01_final.qxd 8/22/05 2:41 AM Page 15 Type –vbarun then the name of the macro to run (Start in this instance). In this example, the value of the system variable OSMODE is set to 35. This is a convenient way to store macros that will invoke AutoCAD with a particular setup. Acaddoc.lsp AutoCAD automatically searches the default search path (a combination of the support/file path list, the current working folder, and the shortcut’s startup folder) for a file named acaddoc.lsp. If AutoCAD finds this file, it loads it into the current drawing. Unlike with acad.dvb, which loads only when you start a new AutoCAD session, AutoCAD loads acaddoc.lsp each time you open or create a drawing. ■Tip To verify the actual search-path list, go to the command prompt, type -insert , enter a meaningless string of characters such as sdfsdfsdf (keep it less than 31 characters, though), and press Enter. AutoCAD displays a list of folders in which it tried to find your file when it failed. AutoCAD provides a special programmer-defined function called S::STARTUP that, if included in acaddoc.lsp or any default startup LISP file, is automatically executed when you open or create a drawing. You can define S::STARTUP in acaddoc.lsp to perform setup opera- tions for each drawing. You can define an S::STARTUP function in several different places, including acad.lsp, acaddoc.lsp, a .mnl file, or any AutoLISP file loaded from any of these files. You can overwrite a previously defined S::STARTUP function—which means that another definition can over- write your S::STARTUP routine. ■Note Never modify or replace the files acad2006.lsp or acad2006doc.lsp, as they may be overwritten by a service pack installation without warning. It is also a good idea to append the S::STARTUP function in- stead of defining it, as many third-party products rely upon S::STARTUP to initialize their environments. If you define a new S::STARTUP, you could disable some or all of another loaded product in the process. The following example shows how to ensure that your startup function works with other functions. (defun-q Startup () (command "-vbarun" "Start") ) (setq S::STARTUP (append S::STARTUP Startup)) CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE)16 Figure 1-22. The AutoCAD command prompt 5793c01_final.qxd 8/22/05 2:41 AM Page 16 This code appends your startup function to any existing S::STARTUP function, and then redefines the S::STARTUP function to include your startup code. This works regardless of any other existence of an S::STARTUP function. ■Note In AutoLISP, you must use defun-q as opposed to defun for this example to work properly. Visual LISP constructs functions differently from AutoLISP between defun and defun-q. Embedded Projects AutoCAD lets you embed a VBA project into a drawing. Each time the drawing is loaded, AutoCAD also loads the VBA project embedded in the drawing. Of all the options to load VBA projects auto- matically, this is the worst one. It stores the VBA project with the drawing, making your drawing file that much bigger. If you copy the drawing file to create a new drawing, you also copy its VBA project. If you want to change the VBA project, you need to change each VBA project in every drawing file that you created from the original. In addition, delivering drawings with embedded macros to customers imposes a serious potential security risk on their part. Well, you get the pic- ture of why this is the worst option to choose! VBARUN and the Macros Dialog Box The dialog-box version of the VBARUN command features several options that extend how you create and execute a VBA macro. You can execute a VBA macro at the AutoCAD command prompt. To execute a macro from the AutoCAD command prompt, type –VBARUN, press Enter, and type the macro name, similar to the example in Figure 1-23. In this example, AutoCAD would execute the Start macro. If the macro you wish to execute is unique among all the VBA projects loaded, then just specify the macro name after the –VBARUN command. However, if you have multiple macros loaded with the same name, specify the macro to execute using either of these syntaxes: ProjectName.ModuleName.MacroName or ModuleName.MacroName How far down inside your project and modules your macro is placed, and whether you have multiple projects loaded determine which syntax is appropriate. CHAPTER 1 ■ THE VBA INTEGRATED DEVELOPMENT ENVIRONMENT (VBAIDE) 17 Figure 1-23. The AutoCAD command prompt 5793c01_final.qxd 8/22/05 2:41 AM Page 17 . path. Now each time you start an AutoCAD session, AutoCAD loads this file. Also, if you include a routine called AcadStartup, AutoCAD exe- cutes it when it. is a convenient way to store macros that will invoke AutoCAD with a particular setup. Acaddoc.lsp AutoCAD automatically searches the default search path

Ngày đăng: 27/01/2014, 14:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan