Introduction |
|
xxxi | |
Part I AutoCAD Customization: Increasing Productivity through Personalization |
|
1 | (260) |
|
Chapter 1 Establishing the Foundation for Drawing Standards |
|
|
3 | (32) |
|
Naming Standards for Projects and Files |
|
|
3 | (3) |
|
|
4 | (1) |
|
|
5 | (1) |
|
Managing Standards with Drawing Templates |
|
|
6 | (8) |
|
What Is a Drawing Template? |
|
|
6 | (1) |
|
Units of Measurement and Format |
|
|
7 | (2) |
|
Graphical and Named Objects |
|
|
9 | (1) |
|
Organize Output with Layouts |
|
|
10 | (1) |
|
Working with System Variables |
|
|
11 | (3) |
|
Choosing a File Format for Your Drawings |
|
|
14 | (1) |
|
Defining Plotter Configurations and Plot Styles |
|
|
15 | (7) |
|
Configuring Output Devices |
|
|
16 | (2) |
|
Using and Creating Plot Styles |
|
|
18 | (3) |
|
Managing Plotter Configuration and Plot Style Files |
|
|
21 | (1) |
|
|
22 | (13) |
|
Drawing Standards (DWS) Files (Windows Only) |
|
|
23 | (1) |
|
Configuring, Checking, and Fixing Drawing Standards (Windows Only) |
|
|
24 | (7) |
|
Translating Layers (Windows Only) |
|
|
31 | (4) |
|
Chapter 2 Working with Nongraphical Objects |
|
|
35 | (34) |
|
Standardizing the Names of Nongraphical Objects |
|
|
35 | (3) |
|
|
36 | (1) |
|
|
37 | (1) |
|
Renaming Nongraphical Objects |
|
|
37 | (1) |
|
Managing Object Properties with Layers |
|
|
38 | (2) |
|
Setting the Default Properties for New Objects |
|
|
39 | (1) |
|
Creating and Managing Layers |
|
|
40 | (25) |
|
|
44 | (1) |
|
Defining Appearance with Linetypes, Lineweights, and Transparency |
|
|
45 | (3) |
|
Controlling Output with Plot Styles |
|
|
48 | (1) |
|
|
48 | (4) |
|
Grouping and Filtering Layers |
|
|
52 | (2) |
|
Creating and Using Layer States |
|
|
54 | (1) |
|
Creating and Managing Annotation Styles |
|
|
55 | (1) |
|
|
55 | (1) |
|
|
56 | (3) |
|
|
59 | (2) |
|
|
61 | (1) |
|
|
62 | (1) |
|
Annotative Styles and Annotation Scaling |
|
|
63 | (2) |
|
Defining and Managing Other Nongraphical Objects |
|
|
65 | (2) |
|
Removing Unused Nongraphical Objects |
|
|
67 | (2) |
|
Chapter 3 Building the Real World One Block at a Time |
|
|
69 | (30) |
|
Defining and Editing a Block Definition |
|
|
69 | (9) |
|
Defining a Block Definition |
|
|
69 | (4) |
|
Editing a Block Definition |
|
|
73 | (1) |
|
|
74 | (4) |
|
Using and Managing Block Definitions |
|
|
78 | (3) |
|
Inserting or Replacing a Block Reference |
|
|
78 | (2) |
|
Renaming and Purging Unused Block Definitions |
|
|
80 | (1) |
|
Importing or Exporting a Block Definition |
|
|
81 | (1) |
|
Embedding Information in a Block Definition with Attributes |
|
|
81 | (6) |
|
Adding an Attribute Definition |
|
|
81 | (4) |
|
Inserting a Block Definition with Attributes |
|
|
85 | (1) |
|
Editing Attribute Values and Properties in a Block Reference |
|
|
85 | (1) |
|
Redefining Block Definitions with Attribute Definitions |
|
|
86 | (1) |
|
Using Fields with Attributes |
|
|
86 | (1) |
|
Adding Dynamic Properties to a Block Definition |
|
|
87 | (8) |
|
Using Parameters to Modify Geometry in a Block Definition (Windows Only) |
|
|
88 | (1) |
|
Associating an Action with a Parameter (Windows Only) |
|
|
89 | (2) |
|
Creating a Lookup Table (Windows Only) |
|
|
91 | (1) |
|
Defining Visibility States (Windows Only) |
|
|
92 | (2) |
|
Inserting and Modifying Dynamic Blocks |
|
|
94 | (1) |
|
Extracting Properties and Values from a Block Reference |
|
|
95 | (4) |
|
Chapter 4 Manipulating the Drawing Environment |
|
|
99 | (22) |
|
Getting Started with Drawing-Environment Customization |
|
|
99 | (1) |
|
Customizing the AutoCAD Startup Process |
|
|
100 | (4) |
|
Specifying Application Preferences |
|
|
104 | (3) |
|
Customizing the Elements in the Drawing Window |
|
|
107 | (2) |
|
Configuring Command and Dynamic Input |
|
|
109 | (4) |
|
Command Input Search Options |
|
|
109 | (1) |
|
|
110 | (1) |
|
|
111 | (2) |
|
Creating and Modifying Command Aliases |
|
|
113 | (4) |
|
|
113 | (2) |
|
Defining External Commands (Windows Only) |
|
|
115 | (1) |
|
Adding Synonym and AutoCorrect Entries (Windows Only) |
|
|
116 | (1) |
|
Working with System and Environment Variables |
|
|
117 | (4) |
|
Listing and Editing System Variables |
|
|
118 | (1) |
|
Listing and Editing Environment Variables |
|
|
119 | (2) |
|
Chapter 5 Customizing the AutoCAD User Interface for Windows |
|
|
121 | (46) |
|
Getting Started with the CUI Editor |
|
|
121 | (2) |
|
Creating Commands and Defining Command Macros |
|
|
123 | (10) |
|
Understanding the Basics of a Command Macro |
|
|
123 | (5) |
|
Creating and Modifying Commands |
|
|
128 | (2) |
|
Creating and Assigning an Image to a Command |
|
|
130 | (3) |
|
Customizing User-Interface Elements |
|
|
133 | (24) |
|
|
133 | (4) |
|
|
137 | (8) |
|
|
145 | (2) |
|
|
147 | (3) |
|
|
150 | (2) |
|
Shortcut and Temporary Override Keys |
|
|
152 | (2) |
|
|
154 | (2) |
|
|
156 | (1) |
|
Setting Up Rollover Tooltips and the Quick Properties Palette |
|
|
157 | (5) |
|
Organizing the User Interface with Workspaces |
|
|
159 | (3) |
|
Working with Customization Files |
|
|
162 | (1) |
|
|
162 | (2) |
|
|
163 | (1) |
|
Transferring User-Interface Elements between CUIx Files |
|
|
164 | (1) |
|
|
164 | (1) |
|
Controlling the Tools on the Status Bars |
|
|
164 | (3) |
|
Chapter 6 Customizing the AutoCAD User Interface for Mac |
|
|
167 | (16) |
|
Getting Started with the Customize Dialog Box |
|
|
167 | (1) |
|
Creating Commands and Defining Command Macros |
|
|
168 | (7) |
|
Understanding the Basics of a Command Macro |
|
|
168 | (5) |
|
Creating and Modifying Commands |
|
|
173 | (1) |
|
Assigning an Image to a Command |
|
|
174 | (1) |
|
Customizing User-Interface Elements |
|
|
175 | (6) |
|
|
176 | (2) |
|
|
178 | (3) |
|
Controlling the Tools on the Status Bar |
|
|
181 | (2) |
|
Chapter 7 Creating Tools and Tool Palettes |
|
|
183 | (18) |
|
|
183 | (1) |
|
Using the Tool Palettes Window |
|
|
184 | (2) |
|
|
186 | (2) |
|
|
186 | (1) |
|
|
187 | (1) |
|
Adding and Modifying Tools |
|
|
188 | (10) |
|
|
189 | (7) |
|
|
196 | (1) |
|
|
197 | (1) |
|
Adding Text Labels or Separators |
|
|
198 | (1) |
|
Organizing Tool Palettes with Tool-Palette Groups |
|
|
198 | (2) |
|
Sharing Tool Palettes and Tool-Palette Groups |
|
|
200 | (1) |
|
Chapter 8 Automating Repetitive Tasks |
|
|
201 | (20) |
|
Creating and Running Scripts |
|
|
201 | (8) |
|
|
202 | (4) |
|
|
206 | (2) |
|
|
208 | (1) |
|
Recording Action Macros (Windows Only) |
|
|
209 | (12) |
|
|
209 | (1) |
|
Using the Action Recorder |
|
|
210 | (1) |
|
Recording Actions for Playback |
|
|
211 | (4) |
|
|
215 | (2) |
|
|
217 | (1) |
|
Sharing and Specifying Paths for Action Macros |
|
|
218 | (3) |
|
Chapter 9 Defining Shapes, Linetypes, and Hatch Patterns |
|
|
221 | (28) |
|
Creating and Compiling Shapes |
|
|
221 | (10) |
|
|
221 | (7) |
|
|
228 | (1) |
|
|
229 | (1) |
|
Loading and Inserting a Shape |
|
|
229 | (1) |
|
|
230 | (1) |
|
Creating and Using Custom Linetypes |
|
|
231 | (8) |
|
|
232 | (3) |
|
Defining a Custom Linetype |
|
|
235 | (2) |
|
Loading a Custom Linetype |
|
|
237 | (1) |
|
Controlling the Display of Linetypes |
|
|
238 | (1) |
|
Creating and Applying Custom Hatch Patterns |
|
|
239 | (10) |
|
Structure of a Hatch Pattern |
|
|
240 | (3) |
|
Defining a Custom Hatch Pattern |
|
|
243 | (2) |
|
Using a Custom Hatch Pattern |
|
|
245 | (4) |
|
Chapter 10 Using, Loading, and Managing Custom Files |
|
|
249 | (12) |
|
Deploying Your Custom Files |
|
|
249 | (5) |
|
Organizing Your Customized Files |
|
|
250 | (1) |
|
Where to Place Customized Files |
|
|
250 | (1) |
|
Maintaining Files Offline |
|
|
251 | (1) |
|
Customizing the Folders Used by AutoCAD |
|
|
252 | (2) |
|
Using and Loading Custom Programs |
|
|
254 | (5) |
|
What Are Custom Programs? |
|
|
254 | (2) |
|
|
256 | (2) |
|
Locating Custom Programs on the Internet |
|
|
258 | (1) |
|
Backing Up and Migrating Customization |
|
|
259 | (2) |
Part II AutoLISP: Productivity through Programming |
|
261 | (382) |
|
Chapter 11 Quick Start for New AutoLISP Programmers |
|
|
263 | (14) |
|
Working with AutoLISP Expressions |
|
|
263 | (8) |
|
Working with Commands and Input |
|
|
265 | (2) |
|
Conditionalizing and Repeating Expressions |
|
|
267 | (2) |
|
|
269 | (2) |
|
Storing and Loading AutoLISP Expressions |
|
|
271 | (6) |
|
Chapter 12 Understanding AutoLISP |
|
|
277 | (24) |
|
Getting Started with AutoLISP |
|
|
277 | (4) |
|
Understanding the Syntax of an Expression |
|
|
278 | (2) |
|
|
280 | (1) |
|
Accessing the AutoLISP Documentation |
|
|
281 | (1) |
|
Storing and Retrieving Values |
|
|
281 | (9) |
|
Setting and Using Variables |
|
|
283 | (4) |
|
Working with System Variables |
|
|
287 | (1) |
|
Accessing Environment Variables |
|
|
288 | (2) |
|
|
290 | (2) |
|
Leveraging AutoCAD and Third-Party Commands |
|
|
292 | (3) |
|
Using the command Function |
|
|
293 | (1) |
|
Using the command-s Function |
|
|
294 | (1) |
|
Working with Commands That Display a Dialog Box |
|
|
295 | (1) |
|
Defining and Using Custom Functions |
|
|
295 | (3) |
|
Defining a Custom Function |
|
|
296 | (1) |
|
|
297 | (1) |
|
Example: Drawing a Rectangle |
|
|
298 | (3) |
|
Chapter 13 Calculating and Working with Values |
|
|
301 | (32) |
|
Calculating Values with Math Functions |
|
|
301 | (9) |
|
Performing Basic Math Calculations |
|
|
301 | (4) |
|
Performing Advanced Math Calculations |
|
|
305 | (1) |
|
Working with Bitwise Operations |
|
|
306 | (4) |
|
|
310 | (9) |
|
|
311 | (1) |
|
Getting the Length of and Searching for Strings |
|
|
311 | (2) |
|
Replacing and Trimming Strings |
|
|
313 | (4) |
|
Changing the Case of a String |
|
|
317 | (1) |
|
Evaluating Values to Strings |
|
|
318 | (1) |
|
|
319 | (4) |
|
Converting Numeric Values to Strings |
|
|
319 | (1) |
|
Converting Strings to Numeric Values |
|
|
320 | (2) |
|
Converting Numeric Values to Other Number Types |
|
|
322 | (1) |
|
Returning a Value from a Custom Function |
|
|
323 | (2) |
|
Exercise: Drawing a Rectangle (Revisited) |
|
|
325 | (8) |
|
Creating the drawplate.lsp File |
|
|
326 | (1) |
|
Revising the drawplate Function |
|
|
327 | (1) |
|
Adding the Revised drawplate Function to drawplate.lsp |
|
|
328 | (1) |
|
Creating the utility.lsp File |
|
|
329 | (1) |
|
Loading the LSP Files into AutoCAD |
|
|
330 | (3) |
|
Chapter 14 Working with Lists |
|
|
333 | (26) |
|
|
333 | (2) |
|
|
335 | (1) |
|
Getting an Element from a List |
|
|
336 | (5) |
|
Retrieving a Specific Element |
|
|
337 | (3) |
|
|
340 | (1) |
|
Appending, Substituting, and Removing Elements |
|
|
341 | (3) |
|
|
341 | (2) |
|
|
343 | (1) |
|
|
343 | (1) |
|
Determining Whether an Item Exists in a List |
|
|
344 | (2) |
|
Sorting the Elements of a List |
|
|
346 | (1) |
|
Using Point Lists to Calculate Geometric Values |
|
|
346 | (6) |
|
Measuring Angular and Distance Values |
|
|
347 | (1) |
|
|
348 | (1) |
|
Finding and Snapping to Points |
|
|
348 | (2) |
|
|
350 | (1) |
|
Converting Measurement Units |
|
|
350 | (1) |
|
Accessing the AutoCAD Calculator |
|
|
351 | (1) |
|
Converting Lists to Strings and Strings to Lists |
|
|
352 | (1) |
|
Exercise: Adding Holes to the Plate |
|
|
352 | (7) |
|
Defining the New Get-Sysvars and Set-Sysvars Utility Functions |
|
|
353 | (2) |
|
Defining the New createcircle Utility Function |
|
|
355 | (1) |
|
Revising the drawplate Function |
|
|
356 | (1) |
|
Using the Revised drawplate Function |
|
|
357 | (2) |
|
Chapter 15 Requesting Input and Using Conditional and Looping Expressions |
|
|
359 | (46) |
|
Interacting with the User |
|
|
359 | (23) |
|
Requesting Input at the Command Prompt |
|
|
360 | (15) |
|
Providing Feedback to the User |
|
|
375 | (5) |
|
Working with the Graphics Windows |
|
|
380 | (2) |
|
Conditionalizing and Branching Expressions |
|
|
382 | (11) |
|
|
382 | (6) |
|
|
388 | (1) |
|
|
388 | (1) |
|
Evaluating if a Condition Is Met |
|
|
389 | (2) |
|
Testing Multiple Conditions |
|
|
391 | (2) |
|
Repeating and Looping Expressions |
|
|
393 | (6) |
|
Repeating Expressions a Set Number of Times |
|
|
394 | (1) |
|
Performing a Task While a Condition Is Met |
|
|
395 | (4) |
|
Exercise: Getting Input from the User to Draw the Plate |
|
|
399 | (6) |
|
Revising the drawplate Function |
|
|
399 | (3) |
|
Using the Revised drawplate Function |
|
|
402 | (3) |
|
Chapter 16 Creating and Modifying Graphical Objects |
|
|
405 | (56) |
|
Working with Entity Names and Dotted Pairs |
|
|
405 | (4) |
|
|
407 | (1) |
|
Accessing the Elements of an Entity Data List and Dotted Pair |
|
|
408 | (1) |
|
Adding Objects to a Drawing |
|
|
409 | (5) |
|
|
414 | (9) |
|
Selecting an Individual Object |
|
|
414 | (2) |
|
Working with Selection Sets |
|
|
416 | (6) |
|
Filtering Selected Objects |
|
|
422 | (1) |
|
|
423 | (12) |
|
Listing and Changing the Properties of an Object Directly |
|
|
424 | (6) |
|
Updating an Object's Properties with an Entity Data List |
|
|
430 | (3) |
|
|
433 | (1) |
|
|
434 | (1) |
|
Working with Complex Objects |
|
|
435 | (7) |
|
Creating and Modifying Polylines |
|
|
435 | (3) |
|
Creating and Modifying with Block References |
|
|
438 | (4) |
|
Extending an Object's Information |
|
|
442 | (7) |
|
|
442 | (1) |
|
Defining and Registering an Application Name |
|
|
443 | (1) |
|
Attaching XData to an Object |
|
|
443 | (3) |
|
Querying and Modifying the XData Attached to an Object |
|
|
446 | (2) |
|
Removing XData from an Object |
|
|
448 | (1) |
|
Selecting Objects Based on XData |
|
|
448 | (1) |
|
Exercise: Creating, Querying, and Modifying Objects |
|
|
449 | (12) |
|
Revising the Functions in utility.lsp |
|
|
449 | (1) |
|
Testing the Changes to the drawplate Function |
|
|
450 | (1) |
|
Defining the New Get-DXF-Value and Set-DXF-Value Utility Functions |
|
|
451 | (1) |
|
Moving Objects to Correct Layers |
|
|
452 | (2) |
|
Creating a Basic Block Attribute Extraction Program |
|
|
454 | (4) |
|
Using the Functions in the furntools.lsp File |
|
|
458 | (3) |
|
Chapter 17 Creating and Modifying Nongraphical Objects |
|
|
461 | (28) |
|
Working with Symbol Tables |
|
|
461 | (11) |
|
Accessing and Stepping through Symbol Tables |
|
|
462 | (2) |
|
Adding and Modifying Entries in a Symbol Table |
|
|
464 | (6) |
|
Creating and Modifying Block Definitions |
|
|
470 | (2) |
|
Working with Dictionaries |
|
|
472 | (6) |
|
Accessing and Stepping through Dictionaries |
|
|
472 | (3) |
|
Creating a Custom Dictionary |
|
|
475 | (2) |
|
Storing Information in a Custom Dictionary |
|
|
477 | (1) |
|
Managing Custom Dictionaries and Entries |
|
|
477 | (1) |
|
Exercise: Creating and Incrementing Room Labels |
|
|
478 | (11) |
|
Revising the createlayer Function in utility.lsp |
|
|
479 | (1) |
|
Creating the Room Label Block Definition |
|
|
479 | (2) |
|
Inserting a Block Reference Based on the Room Label Block Definition |
|
|
481 | (3) |
|
Prompting the User for an Insertion Point and Room Number |
|
|
484 | (2) |
|
Adding Room Labels to a Drawing |
|
|
486 | (3) |
|
Chapter 18 Working with the Operating System and External Files |
|
|
489 | (24) |
|
Storing Information in the Windows Registry or a Plist File |
|
|
489 | (4) |
|
Creating and Querying Entries |
|
|
490 | (2) |
|
Editing and Removing Entries |
|
|
492 | (1) |
|
Accessing Data from External Files |
|
|
493 | (6) |
|
Opening and Creating an External File |
|
|
493 | (3) |
|
Reading Characters and Lines from a File |
|
|
496 | (1) |
|
Writing Characters and Lines from a File |
|
|
497 | (1) |
|
|
498 | (1) |
|
Working with Directories and Files in the Operating System |
|
|
499 | (7) |
|
Locating and Listing Files and Directories |
|
|
499 | (6) |
|
Managing Files and Directories |
|
|
505 | (1) |
|
Getting Information about a File |
|
|
506 | (1) |
|
Exercise: Reading and Writing Data |
|
|
506 | (7) |
|
Creating Layers Based on Data Stored in an External File |
|
|
507 | (2) |
|
Adding Layers to a Drawing with the loadlayers Function |
|
|
509 | (1) |
|
Writing the Bill of Materials to an External File |
|
|
510 | (1) |
|
Using the furnbomexport Function |
|
|
511 | (2) |
|
Chapter 19 Catching and Handling Errors |
|
|
513 | (20) |
|
Identifying and Tracking Down Errors |
|
|
513 | (9) |
|
Putting Your Code Under the Microscope |
|
|
514 | (2) |
|
Displaying Messages During Execution |
|
|
516 | (5) |
|
|
521 | (1) |
|
Catching Errors in a Program |
|
|
522 | (2) |
|
Defining and Using a Custom Error Handler |
|
|
524 | (1) |
|
Grouping Functions into a Single Undo Action |
|
|
525 | (3) |
|
Exercise: Handling Errors in the drawplate Function |
|
|
528 | (5) |
|
Using the drawplate Function |
|
|
529 | (1) |
|
Implementing a Custom *error* Handler and Undo Grouping |
|
|
530 | (1) |
|
Testing the Changes to the drawplate Function |
|
|
531 | (2) |
|
Chapter 20 Authoring, Managing, and Loading AutoLISP Programs |
|
|
533 | (34) |
|
Storing AutoLISP Expressions |
|
|
533 | (4) |
|
Selecting an Editing Environment |
|
|
534 | (1) |
|
Creating an AutoLISP File |
|
|
534 | (2) |
|
|
536 | (1) |
|
|
537 | (1) |
|
|
538 | (3) |
|
Undefining and Redefining Standard AutoCAD Commands |
|
|
541 | (1) |
|
Defining a Startup Function |
|
|
542 | (1) |
|
|
543 | (6) |
|
Manually Loading an AutoLISP File |
|
|
543 | (1) |
|
Automatically Loading an AutoLISP File |
|
|
544 | (2) |
|
Using the Load/Unload Applications Dialog Box to Load a LSP File |
|
|
546 | (3) |
|
Managing the Locations of AutoLISP Files |
|
|
549 | (4) |
|
Specifying Support File Search Paths |
|
|
549 | (2) |
|
Identifying Trusted Locations |
|
|
551 | (2) |
|
|
553 | (7) |
|
Deployment Methods (Local vs. External) |
|
|
554 | (2) |
|
Defining a Plug-in Bundle |
|
|
556 | (2) |
|
Implementing Help for Custom Functions |
|
|
558 | (2) |
|
Exercise: Deploying the drawplate Function |
|
|
560 | (7) |
|
Loading the utility.lsp File by Reference |
|
|
560 | (1) |
|
Loading the drawplate.lsp File on Demand |
|
|
561 | (1) |
|
Enabling Help Support for the drawplate Function |
|
|
561 | (1) |
|
Configuring the AutoCAD Support and Trusted Paths |
|
|
562 | (1) |
|
Testing the Deployment of the drawplate Function |
|
|
563 | (1) |
|
Creating DrawPlate.bundle |
|
|
564 | (1) |
|
Deploying and Testing the DrawPlate.bundle |
|
|
565 | (2) |
|
Chapter 21 Using the Visual LISP Editor (Windows only) |
|
|
567 | (20) |
|
Accessing the Visual LISP Editor |
|
|
567 | (1) |
|
Managing AutoLISP Files with the Visual LISP Editor |
|
|
568 | (1) |
|
Formatting an AutoLISP File |
|
|
569 | (3) |
|
|
570 | (1) |
|
|
571 | (1) |
|
|
572 | (1) |
|
Validating and Debugging Code |
|
|
572 | (5) |
|
Executing Code from the Visual LISP Editor |
|
|
572 | (1) |
|
Checking and Loading Code in the Current Editor Window |
|
|
573 | (2) |
|
|
575 | (2) |
|
Creating a Visual LISP Project |
|
|
577 | (2) |
|
Compiling LSP and PRJ Files into a VLX File |
|
|
579 | (1) |
|
Exercise: Working with the Visual LISP Editor |
|
|
580 | (7) |
|
Formatting, Checking, and Debugging the badcode Function |
|
|
580 | (2) |
|
Stepping Through and Inspecting the badcode Function |
|
|
582 | (3) |
|
Creating and Compiling a Project |
|
|
585 | (2) |
|
Chapter 22 Working with ActiveX/COM Libraries (Windows only) |
|
|
587 | (24) |
|
Understanding the Basics of ActiveX |
|
|
587 | (11) |
|
Accessing Classes, Objects, and Collections |
|
|
588 | (3) |
|
Specifying Properties and Invoking Methods |
|
|
591 | (3) |
|
Working with Variants and Arrays |
|
|
594 | (4) |
|
|
598 | (1) |
|
Using the AutoCAD COM Library |
|
|
599 | (7) |
|
Accessing the AutoCAD Application and Current Drawing Objects |
|
|
600 | (1) |
|
Working with Graphical and Nongraphical Objects in the Current Drawing |
|
|
601 | (3) |
|
Monitoring Events with Reactors |
|
|
604 | (2) |
|
Leveraging the Windows and Microsoft Office COM Libraries |
|
|
606 | (5) |
|
Accessing the Windows Shell Object |
|
|
607 | (2) |
|
Working with Microsoft Office |
|
|
609 | (2) |
|
Chapter 23 Implementing Dialog Boxes (Windows only) |
|
|
611 | (32) |
|
What Is Dialog Control Language' |
|
|
611 | (2) |
|
Defining and Laying Out a Dialog Box |
|
|
613 | (11) |
|
|
613 | (1) |
|
|
614 | (4) |
|
Grouping, Aligning, and Laying Out Tiles |
|
|
618 | (4) |
|
Creating and Previewing a Dialog in a DCL File |
|
|
622 | (2) |
|
Loading and Displaying a Dialog Box |
|
|
624 | (7) |
|
Loading and Unloading a DCL File |
|
|
624 | (1) |
|
|
625 | (2) |
|
|
627 | (4) |
|
Interacting with and Responding to a User |
|
|
631 | (4) |
|
Specifying the Action of a Tile |
|
|
631 | (1) |
|
Getting Information about a Tile |
|
|
632 | (1) |
|
Terminating or Closing a Dialog Box |
|
|
633 | (1) |
|
Hiding a Dialog Box Temporarily |
|
|
634 | (1) |
|
Exercise: Implementing a Dialog Box for the drawplate Function |
|
|
635 | (10) |
|
Creating the drawplate Dialog Box |
|
|
636 | (2) |
|
Renaming the Existing drawplate Function |
|
|
638 | (1) |
|
Defining a New drawplate Function |
|
|
638 | (3) |
|
Testing the drawplate.lsp Changes |
|
|
641 | (2) |
Part III AutoCAD VBA: Programming with VBA and ActiveX (Windows only) |
|
643 | (410) |
|
Chapter 24 Understanding the AutoCAD VBA Environment |
|
|
645 | (20) |
|
What Makes Up an AutoCAD VBA Project? |
|
|
645 | (2) |
|
What You'll Need to Start |
|
|
647 | (1) |
|
Determine If the AutoCAD VBA Environment Is Installed |
|
|
647 | (1368) |
|
|
2015 | |
|
|
648 | (1) |
|
Getting Started with the VBA Editor |
|
|
648 | (7) |
|
Identifying the Components of a VBA Project |
|
|
649 | (2) |
|
Navigating the VBA Editor Interface |
|
|
651 | (4) |
|
Setting the VBA Environment Options |
|
|
655 | (1) |
|
|
655 | (5) |
|
Creating a New VBA Project |
|
|
656 | (1) |
|
|
657 | (1) |
|
Loading and Unloading a VBA Project |
|
|
657 | (2) |
|
Embedding or Extracting a VBA Project |
|
|
659 | (1) |
|
|
660 | (3) |
|
Accessing the AutoCAD VBA Documentation |
|
|
663 | (2) |
|
Chapter 25 Understanding Visual Basic for Applications |
|
|
665 | (36) |
|
Learning the Fundamentals of the VBA Language |
|
|
665 | (9) |
|
|
666 | (2) |
|
Declaring and Using Variables |
|
|
668 | (2) |
|
Controlling the Scope of a Procedure or Variable |
|
|
670 | (1) |
|
Continuing Long Statements |
|
|
671 | (1) |
|
|
672 | (1) |
|
Understanding the Differences Between VBA 32- and 64-Bit |
|
|
673 | (1) |
|
|
674 | (14) |
|
|
676 | (2) |
|
Accessing Objects in a Collection |
|
|
678 | (1) |
|
|
679 | (3) |
|
Calculating Values with Math Functions and Operators |
|
|
682 | (1) |
|
|
683 | (3) |
|
Converting Between Data Types |
|
|
686 | (2) |
|
|
688 | (5) |
|
Testing Values for Equality |
|
|
688 | (1) |
|
|
689 | (1) |
|
Determining If a Value Is Greater or Less Than Another |
|
|
690 | (1) |
|
Checking for Null, Empty, or Nothing Values |
|
|
691 | (1) |
|
|
692 | (1) |
|
|
692 | (1) |
|
Conditionalizing and Branching Statements |
|
|
693 | (3) |
|
Evaluating If a Condition Is Met |
|
|
693 | (2) |
|
Testing Multiple Conditions |
|
|
695 | (1) |
|
Repeating and Looping Expressions |
|
|
696 | (5) |
|
Repeating Expressions a Set Number of Times |
|
|
696 | (1) |
|
Stepping Through an Array or Collection |
|
|
697 | (1) |
|
Performing a Task While or Until a Condition Is Met |
|
|
698 | (3) |
|
Chapter 26 Interacting with the Application and Documents Objects |
|
|
701 | (26) |
|
Working with the Application |
|
|
701 | (3) |
|
Getting Information about the Current AutoCAD Session |
|
|
702 | (1) |
|
Manipulating the Placement of the Application Window |
|
|
703 | (1) |
|
|
704 | (8) |
|
Working with the Current Drawing |
|
|
705 | (1) |
|
Creating and Opening Drawings |
|
|
705 | (2) |
|
Saving and Closing Drawings |
|
|
707 | (3) |
|
Accessing Information about a Drawing |
|
|
710 | (1) |
|
Manipulating a Drawing Window |
|
|
711 | (1) |
|
Working with System Variables |
|
|
712 | (2) |
|
Querying and Setting Application and Document Preferences |
|
|
714 | (1) |
|
|
715 | (1) |
|
Exercise: Setting Up a Project |
|
|
716 | (11) |
|
Creating the DrawingSetup Project |
|
|
717 | (1) |
|
Creating and Saving a New Drawing from Scratch |
|
|
718 | (2) |
|
Inserting a Title Block with the insert Command |
|
|
720 | (2) |
|
Adding Drawing Properties |
|
|
722 | (2) |
|
Setting the Values of Drafting-Related System Variables and Preferences |
|
|
724 | (3) |
|
Chapter 27 Creating and Modifying Drawing Objects |
|
|
727 | (30) |
|
Understanding the Basics of a Drawing-Based Object |
|
|
727 | (5) |
|
Accessing Objects in a Drawing |
|
|
732 | (1) |
|
Working with Model or Paper Space |
|
|
733 | (2) |
|
Creating Graphical Objects |
|
|
735 | (8) |
|
Adding Straight Line Segments |
|
|
735 | (1) |
|
Working with Curved Objects |
|
|
736 | (4) |
|
|
740 | (3) |
|
Getting an Object in the Drawing |
|
|
743 | (2) |
|
|
745 | (3) |
|
|
746 | (1) |
|
Copying and Moving Objects |
|
|
746 | (1) |
|
|
747 | (1) |
|
Changing Object Properties |
|
|
748 | (1) |
|
Exercise: Creating, Querying, and Modifying Objects |
|
|
749 | (8) |
|
Creating the DrawPlate Project |
|
|
749 | (1) |
|
Creating the Utilities Class |
|
|
750 | (2) |
|
Defining the CLI_DrawPlate Function |
|
|
752 | (2) |
|
Running the CLI_DrawPlate Function |
|
|
754 | (1) |
|
Exporting the Utilities Class |
|
|
755 | (2) |
|
Chapter 28 Interacting with the User and Controlling the Current View |
|
|
757 | (38) |
|
Interacting with the User |
|
|
757 | (14) |
|
Requesting Input at the Command Prompt |
|
|
758 | (11) |
|
Providing Feedback to the User |
|
|
769 | (2) |
|
|
771 | (7) |
|
Selecting an Individual Object |
|
|
771 | (2) |
|
Working with Selection Sets |
|
|
773 | (3) |
|
|
776 | (2) |
|
Performing Geometric Calculations |
|
|
778 | (3) |
|
Calculating a Coordinate Value |
|
|
778 | (1) |
|
Measuring the Distance Between Two Points |
|
|
779 | (1) |
|
|
780 | (1) |
|
Changing the Current View |
|
|
781 | (6) |
|
Zooming and Panning the Current View |
|
|
781 | (2) |
|
Working with Model Space Viewports |
|
|
783 | (3) |
|
Creating and Managing Named Views |
|
|
786 | (1) |
|
|
787 | (1) |
|
Exercise: Getting Input from the User to Draw the Plate |
|
|
787 | (8) |
|
Revising the CLI_DrawPlate Function |
|
|
788 | (3) |
|
Revising the Utilities Class |
|
|
791 | (2) |
|
Using the Revised draw plate Function |
|
|
793 | (2) |
|
Chapter 29 Annotating Objects |
|
|
795 | (24) |
|
|
795 | (7) |
|
Creating and Modifying Text |
|
|
795 | (2) |
|
|
797 | (3) |
|
Controlling Text with Text Styles |
|
|
800 | (2) |
|
|
802 | (5) |
|
|
802 | (2) |
|
Formatting Dimensions with Styles |
|
|
804 | (2) |
|
Assigning a Dimension Style |
|
|
806 | (1) |
|
Creating and Modifying Geometric Tolerances |
|
|
807 | (1) |
|
|
808 | (4) |
|
Working with Multileaders |
|
|
808 | (3) |
|
Creating and Modifying Legacy Leaders |
|
|
811 | (1) |
|
Organizing Data with Tables |
|
|
812 | (2) |
|
Inserting and Modifying a Table |
|
|
812 | (1) |
|
|
813 | (1) |
|
|
814 | (1) |
|
|
814 | (1) |
|
Exercise: Adding a Label to the Plate |
|
|
815 | (4) |
|
Revising the CLI_DrawPlate Function |
|
|
815 | (2) |
|
Revising the Utilities Class |
|
|
817 | (1) |
|
Using the Revised drawplate Function |
|
|
817 | (2) |
|
Chapter 30 Working with Blocks and External References |
|
|
819 | (46) |
|
Managing Block Definitions |
|
|
819 | (8) |
|
Creating a Block Definition |
|
|
820 | (2) |
|
Adding Attribute Definitions |
|
|
822 | (3) |
|
Modifying and Redefining a Block Definition |
|
|
825 | (1) |
|
Determining the Type of Block Definition |
|
|
826 | (1) |
|
Inserting and Working with Block References |
|
|
827 | (9) |
|
Inserting a Block Reference |
|
|
827 | (1) |
|
Modifying a Block Reference |
|
|
828 | (3) |
|
Accessing the Attributes of a Block |
|
|
831 | (2) |
|
Working with Dynamic Properties |
|
|
833 | (3) |
|
Managing External References |
|
|
836 | (9) |
|
|
836 | (5) |
|
Attaching and Modifying Raster Images |
|
|
841 | (2) |
|
|
843 | (2) |
|
Listing File Dependencies |
|
|
845 | (1) |
|
Exercise: Creating and Querying Blocks |
|
|
846 | (19) |
|
Creating the RoomLabel Project |
|
|
847 | (1) |
|
Creating the RoomLabel Block Definition |
|
|
847 | (2) |
|
Inserting a Block Reference Based on the RoomLabel Block Definition |
|
|
849 | (1) |
|
Prompting the User for an Insertion Point and a Room Number |
|
|
850 | (2) |
|
Adding Room Labels to a Drawing |
|
|
852 | (1) |
|
Creating the FurnTools Project |
|
|
853 | (1) |
|
Moving Objects to Correct Layers |
|
|
854 | (2) |
|
Creating a Basic Block Attribute Extraction Program |
|
|
856 | (7) |
|
Using the Procedures of the FurnTools Project |
|
|
863 | (2) |
|
Chapter 31 Outputting Drawings |
|
|
865 | (26) |
|
Creating and Managing Layouts |
|
|
865 | (2) |
|
|
866 | (1) |
|
|
866 | (1) |
|
Controlling the Display of Layout Tabs |
|
|
867 | (1) |
|
Displaying Model Space Objects with Viewports |
|
|
867 | (5) |
|
Adding a Floating Viewport |
|
|
868 | (1) |
|
Setting a Viewport as Current |
|
|
869 | (1) |
|
Modifying a Floating Viewport |
|
|
869 | (3) |
|
Controlling the Output of a Layout |
|
|
872 | (7) |
|
Creating and Managing Named Page Setups |
|
|
873 | (1) |
|
Specifying an Output Device and a Paper Size |
|
|
873 | (3) |
|
Setting a Plot Style as Current |
|
|
876 | (2) |
|
Defining the Area to Output |
|
|
878 | (1) |
|
Changing Other Related Output Settings |
|
|
879 | (1) |
|
Plotting and Previewing a Layout |
|
|
879 | (2) |
|
Exporting and Importing File Formats |
|
|
881 | (1) |
|
Exercise: Adding a Layout to Create a Check Plot |
|
|
882 | (9) |
|
|
883 | (1) |
|
Adding and Modifying a Plot Configuration |
|
|
884 | (1) |
|
|
885 | (1) |
|
Displaying Model Space Objects with a Viewport |
|
|
886 | (1) |
|
|
886 | (4) |
|
Testing the CheckPlot Procedure |
|
|
890 | (1) |
|
Chapter 32 Storing and Retrieving Custom Data |
|
|
891 | (32) |
|
Extending Object Information |
|
|
891 | (12) |
|
|
892 | (1) |
|
Defining and Registering an Application Name |
|
|
893 | (1) |
|
Attaching Xdata to an Object |
|
|
893 | (3) |
|
Querying and Modifying the Xdata Attached to an Object |
|
|
896 | (6) |
|
Removing Xdata from an Object |
|
|
902 | (1) |
|
Selecting Objects Based on Xdata |
|
|
902 | (1) |
|
Creating and Modifying a Custom Dictionary |
|
|
903 | (6) |
|
Accessing and Stepping through Dictionaries |
|
|
904 | (2) |
|
Creating a Custom Dictionary |
|
|
906 | (1) |
|
Storing Information in a Custom Dictionary |
|
|
907 | (1) |
|
Managing Custom Dictionaries and Entries |
|
|
908 | (1) |
|
Storing Information in the Windows Registry |
|
|
909 | (3) |
|
Creating and Querying Keys and Values |
|
|
909 | (2) |
|
Editing and Removing Keys and Values |
|
|
911 | (1) |
|
Exercise: Storing Custom Values for the Room Labels Program |
|
|
912 | (11) |
|
Attaching Xdata to the Room Label Block after Insertion |
|
|
913 | (1) |
|
Revising the Main RoomLabel Procedure to Use the Windows Registry |
|
|
913 | (3) |
|
Testing the Changes to the RoomLabel Procedure |
|
|
916 | (1) |
|
Persisting Values for the Room Label Procedure with a Custom Dictionary |
|
|
917 | (2) |
|
Retesting the RoomLabel Procedure |
|
|
919 | (1) |
|
Selecting Room Label Blocks |
|
|
920 | (3) |
|
Chapter 33 Modifying the Application and Working with Events |
|
|
923 | (30) |
|
Manipulating the AutoCAD User Interface |
|
|
923 | (15) |
|
Managing Menu Groups and Loading Customization Files |
|
|
924 | (1) |
|
Working with the Pull-Down Menus and Toolbars |
|
|
925 | (12) |
|
Controlling the Display of Other User-Interface Elements |
|
|
937 | (1) |
|
Using External Custom Programs |
|
|
938 | (1) |
|
|
939 | (5) |
|
Exercise: Extending the User Interface and Using Events |
|
|
944 | (9) |
|
Loading the acp.cuix File |
|
|
945 | (1) |
|
Specifying the Location of DVB Files |
|
|
946 | (1) |
|
Adding the Document Events |
|
|
947 | (1) |
|
Implementing an Application Event |
|
|
948 | (1) |
|
Defining the AcadStartup Procedure |
|
|
949 | (1) |
|
Testing the AcadStartup Procedure |
|
|
950 | (1) |
|
Testing the Application and Document Events |
|
|
951 | (2) |
|
Chapter 34 Creating and Displaying User Forms |
|
|
953 | (30) |
|
Adding and Designing a User Form |
|
|
953 | (3) |
|
Adding a User Form to a VBA Project |
|
|
953 | (1) |
|
Considering the Design of a User Form |
|
|
954 | (2) |
|
Placing and Arranging Controls on a User Form |
|
|
956 | (7) |
|
Placing a Control on a User Form |
|
|
956 | (1) |
|
Deciding Which Control to Use |
|
|
957 | (3) |
|
Grouping Related Controls |
|
|
960 | (1) |
|
Managing Controls on a User Form |
|
|
961 | (2) |
|
Changing the Appearance of a User Form or Control |
|
|
963 | (2) |
|
Defining the Behavior of a User Form or Control |
|
|
965 | (3) |
|
Displaying and Loading a User Form |
|
|
968 | (2) |
|
Showing and Hiding a User Form |
|
|
968 | (1) |
|
Loading and Unloading a User Form |
|
|
969 | (1) |
|
Exercise: Implementing a User Form for the DrawPlate Project |
|
|
970 | (13) |
|
|
970 | (1) |
|
Adding Controls to the User Form |
|
|
971 | (3) |
|
|
974 | (1) |
|
Implementing Events for a User Form and Controls |
|
|
975 | (5) |
|
Testing the User Form and Controls |
|
|
980 | (3) |
|
Chapter 35 Communicating with Other Applications |
|
|
983 | (36) |
|
Referencing a Programming Library |
|
|
983 | (1) |
|
Creating and Getting an Instance of an Object |
|
|
984 | (6) |
|
Creating a New Instance of an Object |
|
|
985 | (3) |
|
Getting an In-Memory Instance of an Object |
|
|
988 | (2) |
|
Accessing a Drawing File from outside of AutoCAD |
|
|
990 | (1) |
|
Working with Microsoft Windows |
|
|
991 | (9) |
|
|
992 | (5) |
|
Manipulating the Windows Shell |
|
|
997 | (2) |
|
|
999 | (1) |
|
Reading and Writing Text Files |
|
|
1000 | (4) |
|
Opening and Creating a File |
|
|
1000 | (2) |
|
Reading Content from a File |
|
|
1002 | (1) |
|
Writing Content to a File |
|
|
1003 | (1) |
|
|
1004 | (1) |
|
Parsing Content in an XML File |
|
|
1004 | (3) |
|
Working with Microsoft Office Applications |
|
|
1007 | (2) |
|
Exercise: Reading and Writing Data |
|
|
1009 | (10) |
|
Creating Layers Based on Data Stored in a Text File |
|
|
1010 | (3) |
|
Searching for a File in the AutoCAD Support Paths |
|
|
1013 | (1) |
|
Adding Layers to a Drawing with the LoadLayers Procedure |
|
|
1014 | (1) |
|
Writing Bill of Materials to an External File |
|
|
1015 | (3) |
|
Using the FurnBOMExport Procedure |
|
|
1018 | (1) |
|
Chapter 36 Handling Errors and Deploying VBA Projects |
|
|
1019 | (34) |
|
Catching and Identifying Errors |
|
|
1019 | (6) |
|
Recovering and Altering Execution after an Error |
|
|
1019 | (3) |
|
Getting Information About the Recent Error |
|
|
1022 | (3) |
|
|
1025 | (7) |
|
Debugging Through Messages |
|
|
1025 | (2) |
|
Using the VBA Editor Debug Tools |
|
|
1027 | (5) |
|
|
1032 | (8) |
|
|
1032 | (4) |
|
Specifying the Location of and Trusting a Project |
|
|
1036 | (2) |
|
Starting a Macro with AutoLISP or a Command Macro |
|
|
1038 | (1) |
|
Grouping Actions into a Single Undo |
|
|
1039 | (1) |
|
|
1040 | (1) |
|
Exercise: Deploying the DrawPlate VBA Project |
|
|
1040 | (13) |
|
Stepping Through the BadCode VBA Project |
|
|
1041 | (2) |
|
Implementing Error Handling for the Utility Procedures |
|
|
1043 | (2) |
|
Implementing Error Handling and Undo Grouping for the Main Procedures |
|
|
1045 | (4) |
|
Configuring the AutoCAD Support and Trusted Paths |
|
|
1049 | (1) |
|
Creating DrawPlate_VBA.bundle |
|
|
1049 | (1) |
|
Deploying and Testing DrawPlate_VBA.bundle |
|
|
1050 | (3) |
Index |
|
1053 | |