Seven LISP Functions of Highly Effective CAD Users



Similar documents
QUERYING THE COMPONENT DATA OF A GRAPHICAL CADASTRAL DATABASE USING VISUAL LISP PROGRAM

While Loops and Animations

AutoLISP Cheat Sheet for CAD Managers

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

JavaScript: Introduction to Scripting Pearson Education, Inc. All rights reserved.

Drawing a Bedroom Floorplan

Data Tool Platform SQL Development Tools

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Chapter 1. Creating Sketches in. the Sketch Mode-I. Evaluation chapter. Logon to for more details. Learning Objectives

Eventia Log Parsing Editor 1.0 Administration Guide

VISUAL GUIDE to. RX Scripting. for Roulette Xtreme - System Designer 2.0

MATLAB Programming. Problem 1: Sequential

Chapter 23: Drafting in Worksheet View

Introduction to the TI-Nspire CX

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, Introduction 1. 2 Invoking Shell Scripts 2

We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.

Autodesk Revit Keynotes Made Simple: Adding Custom Keynotes to Your Construction Documents Tony Crawford CAD-1, Inc.

A sample script file is displayed below: DRF271.SCR snap.125 grid.5 layer make vports color blue vports. zoom all

The CAD interface is comprised of two different screens: the graphic/drawing screen and the text screen.

Basic Lisp Operations

Symbol Tables. Introduction

Pemrograman Dasar. Basic Elements Of Java

SDC. Schroff Development Corporation PUBLICATIONS. MultiMedia CD by Jack Zecher

Microsoft Access 2010 Part 1: Introduction to Access

ASSEMBLY LANGUAGE PROGRAMMING (6800) (R. Horvath, Introduction to Microprocessors, Chapter 6)

Using Parametric Equations in SolidWorks, Example 1

Introduction to CATIA V5

Lecture 5: Java Fundamentals III

Tutorial - First Level: 2D Fundamentals

Envisioneer Technical Note

MS Access Lab 2. Topic: Tables

Perl in a nutshell. First CGI Script and Perl. Creating a Link to a Script. print Function. Parsing Data 4/27/2009. First CGI Script and Perl

2 ASCII TABLE (DOS) 3 ASCII TABLE (Window)

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

Custom Linetypes (.LIN)

DTD Tutorial. About the tutorial. Tutorial

AutoDWG DWGSee DWG Viewer. DWGSee User Guide

AutoCAD Civil 3D 2010 ESSENTIALS

First Level: 2D Fundamentals. by Randy H. Shih Oregon Institute of Technology

To develop an understanding of the basic principles of drawing using AutoCAD. 3) Deduce the intersection lines for intersected cylinders.

Introduction to Measurement Tools

How to test and debug an ASP.NET application

java.util.scanner Here are some of the many features of Scanner objects. Some Features of java.util.scanner

Embroidery Fonts Plus ( EFP ) Tutorial Guide Version

Variables, Constants, and Data Types

Programming Project 1: Lexical Analyzer (Scanner)

Moving from CS 61A Scheme to CS 61B Java

Basic AutoSketch Manual

Regular Expressions. General Concepts About Regular Expressions

This is a preview of the book "QCAD - An Introduction to Computer-Aided Design (CAD)" QCAD. An Introduction to ComputerAided Design (CAD)

Algebra 2 Chapter 1 Vocabulary. identity - A statement that equates two equivalent expressions.

Hands-on Exercise 1: VBA Coding Basics

Chapter 2: Elements of Java

A Computer Glossary. For the New York Farm Viability Institute Computer Training Courses

To draw a line. To create a construction line by specifying two points

Welcome to CorelDRAW, a comprehensive vector-based drawing and graphic-design program for the graphics professional.


Programming Languages CIS 443

DWGSee Professional User Guide

TABLE OF CONTENTS. INTRODUCTION... 5 Advance Concrete... 5 Where to find information?... 6 INSTALLATION... 7 STARTING ADVANCE CONCRETE...

Regular Expressions. In This Appendix

CNCTRAIN OVERVIEW CNC Simulation Systems

Part Number: PMT1080-ENG Rev. 1

Hewlett-Packard Development Company, L.P., 8000 Foothills Boulevard, Roseville, California

DATA 301 Introduction to Data Analytics Microsoft Excel VBA. Dr. Ramon Lawrence University of British Columbia Okanagan

Linear Referencing Tutorial

Version 1.5 Satlantic Inc.

Autodesk Certification Exam Guide AutoCAD 2010

Introductory Handbook for the TI-89 Titanium

Sheet Metal Design: Beyond Bends and Flanges

Lesson Four 3D Modeling


VB.NET Programming Fundamentals

Introduction to Autodesk Inventor for F1 in Schools

Cabri Geometry Application User Guide

The following is an overview of lessons included in the tutorial.

Random Map Generator v1.0 User s Guide

Automated Inventory System

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

BIGPOND ONLINE STORAGE USER GUIDE Issue August 2005

MATLAB Functions. function [Out_1,Out_2,,Out_N] = function_name(in_1,in_2,,in_m)

Athena Knowledge Base

Plant Design Tips and Tricks

Getting Started with the Cadence Software

Microsoft Access 3: Understanding and Creating Queries

Introduction to Autodesk Inventor for F1 in Schools

Quick Reference ebook

Exercise 4 Learning Python language fundamentals

Hands-On UNIX Exercise:

AutoCAD New Icon Quick Reference

DToolsX-DWG. Version: An ActiveX DLL To Retrieve DWG/DXF information. DToolsX-DWG REFERENCE MANUAL

PL / SQL Basics. Chapter 3

COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing

ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER

Data Integrator. Pervasive Software, Inc B Riata Trace Parkway Austin, Texas USA

Chapter 7: Additional Topics

If you know exactly how you want your business forms to look and don t mind

ECDL. European Computer Driving Licence. Spreadsheet Software BCS ITQ Level 2. Syllabus Version 5.0

Extract Tools. 4.1 Overview. 4.2 Extraction of Graphic Elements CHAPTER 4

Transcription:

11/28/2005-8:00 am - 9:30 am Room:Swan 7/8 (Swan) Walt Disney World Swan and Dolphin Resort Orlando, Florida Seven LISP Functions of Highly Effective CAD Users Anthony Meulemans - Jacobs Sverdrup - Technology Group CP11-2 This course is designed as an introduction to AutoLISP for CAD users who want to begin customizing AutoCAD using the programming language. It uses seven AutoLISP functions to teach the basics of the AutoCAD programming language. These functions can be used by even the novice programmer to create effective commands. About the Speaker: Tony has 29 years of experience in the engineering field. For the past 8 years, he has been the CADD system administrator at Jacobs Sverdrup Technology Group. The Technology Group specializes in the design and construction of test facilities for the aerospace and automotive industries. For 9 years previously, he was the manager and principal instructor at an Autodesk Authorized Training Center.

Introduction AutoLISP applications or routines can interact with AutoCAD in many ways. These routines can prompt the user for input, access built-in AutoCAD commands directly, and modify or create objects in the drawing database. By creating AutoLISP routines, you can add discipline-specific commands to AutoCAD. In the past, developing AutoLISP programs for AutoCAD meant supplying a text editor for writing code, then loading the code into AutoCAD and then running it. AutoLISP has been enhanced with Visual LISP (VLISP), which offers an integrated development environment (IDE) that includes a compiler, debugger, and other development tools to increase productivity. Because AutoCAD can read AutoLISP code directly, no compiling is required. While Visual LISP provides an IDE, you may choose to experiment by entering code at the Command prompt, which allows you to see the results immediately. This makes AutoLISP an easy language to experiment with, regardless of your programming experience. Basic AutoLISP syntax and data types The AutoLISP Expression An AutoLISP expression is the most fundamental part of writing programs. An AutoLISP expression has the syntax: (function argument) Every expression has opening and closing parentheses. Each element within an expression must be separated by white space. White space includes spaces, tabs, and returns. The number of spaces is variable but there must be at least one. Every expression has a function name. This is the AutoLISP command. The name must immediately follow the opening parentheses. Every expression is evaluated (executed) and returns a result. A function is a subroutine that tells AutoLISP what task to perform. An argument provides data to the function. A function may have any number of arguments or none at all. Arguments may be symbols (variables), literals, or other functions. Some arguments are flags or option parameters that alter the action of the function. If a function is defined to accept an argument, you must provide the function with a value for the argument. 2

(getvar variable_name) Retrieves the value of an AutoCAD system variable The variable_name must be a quoted string. (getvar "FILLETRAD") ;returns the current fillet radius (getvar "CLAYER") ;returns the current layer AutoLISP Data Types AutoLISP expressions are processed according to the order and type of data type used within the parentheses. To fully utilize AutoLISP, you must understand the differences in the data types and how to use them. Integers Integers are whole numbers that do not contain a decimal point. AutoLISP integers are 32-bit signed numbers with values ranging from +2,147,483,647 to 2,147,483,648. 0 56 4133 Reals A real is a number containing a decimal point. Numbers between 1 and 1 must contain a leading zero. Missing zero will return: ERROR: misplaced dot on input. Real numbers are stored in double-precision floating-point format, providing at least 14 significant digits of precision. Reals can be expressed in scientific notation, which has an optional e or E followed by the exponent of the number (for example, 0.0000041 is the same as 4.1e-6). 3.1415927 0.25 54.321 Strings A string is a group of characters surrounded by quotation marks. Strings must be surrounded by double quotes ( ). Within quoted strings, the backslash (\) denote the following character as a control character (also referred to as escape codes). 3

"GRIDMODE" "1234.5" "\nmy AutoLISP loaded" "" ;Null string Symbols Control Characters: AutoLISP uses symbols to refer to data. Symbols are sometimes referred to as variables in other languages. Symbol names are not case-sensitive and may consist of any sequence of alphanumeric characters with the following exceptions: May not consist of only numeric characters. May not contain spaces. May not contain the following special characters: ( ), ; \. Do not name any symbol the name of any internal AutoLISP function or the predefined symbols: pause, pi, nil, and t. Entity-Names An entity name is a numeric label assigned to objects in a drawing. It is actually a pointer into a file maintained by AutoCAD, and can be used to find the object's database record and its vectors (if they are displayed). Example: <Entity name: 27f0540> This label can be referenced by AutoLISP functions to allow selection of objects for processing in various ways. VLA-Objects Objects in a drawing may be represented as Visual LISP ActiveX (VLA) objects, a data type introduced with Visual LISP. Selection-Sets Selection sets are groups of one or more entity names that may be referenced as a single group. You can interactively add objects to, or remove objects from, selection sets with AutoLISP routines. These selection sets may be referenced by any AutoCAD command that recognizes the Last option. File Descriptors A file descriptor is a pointer to a file opened by the AutoLISP open function. The open function returns this pointer as an alphanumeric label. Example: #<file "c:\\projdwgs.csv"> \\ Backslash character \" Quote (") character \n Newline character \t Tab character 4

You supply the file descriptor as an argument to other AutoLISP functions that read or write to the file. Lists An AutoLISP list is a group of related values separated by spaces and enclosed in parentheses. Three types of common lists are quoted, point, and entity lists: Quoted Lists If a list is preceded by a ' (quote) it evaluates to itself and is not executed, these lists may be thought of as data. Example: '("Monday" "Tuesday" "Wednesday" "Thursday" "Friday") Point Lists A point is a list with a fixed data structure and is the primary form of data used when dealing with graphics. A point is a list of two or three real numbers in (X-value Y-value Z-value) format. 2D point list: (2.0000 3.0000) 3D point list: (2.0000 1.0000 0.0000) Entity Lists Entity lists are an association list containing the description of the entity. This association list is built using dotted pairs (sub-lists). These dotted pairs consist of a group code and data field. The group code is the same as the group codes used in the DXF file definition. Example: ((-1. <Entity name:60000164>) (0. "LINE") (8. "CENTERLINE") (6. "CENTER") (62. 1) (5. "7") (39. 1.0) (10 2.0 3.0 0.0) (11 4.0 4.0 0.0) (210 0.0 0.0 1.0)) (setvar variable_name value) This function sets a system variable varname to value, and returns that value. The variable_name must be a quoted string. (setvar "CLAYER" "0") ;Set the current layer to 0 (setvar "FILLETRAD" 0.125) ;Set the fillet radius to 0.125 (setvar "LUPREC" 5) ;Linear Unit Precision (setvar "SNAPMODE" 0) ;Sets Snap Mode Off 5

System Variables in AutoLISP Many of the modes, sizes, and limits AutoCAD uses are stored in a collection of system variables. System variables are valuable when creating AutoLISP routines that change AutoCAD drawing parameters. Setting AutoLISP Variables Variables are the basic means by which a program can organize, remember, and recall information. In AutoLISP, variables are called symbols. When a symbol is created, it is given a name. After a symbol is created and named it can then receive a value. When a symbol has an assigned value, it is said to be bound to that value. Whenever the symbol name is encountered by a function AutoLISP substitutes the value of the symbol for the symbol name. The AutoLISP function that will create symbols and bind a value to it is setq. The setq function can assign multiple symbols in one call to the function. (setq symbol expression [symbol expression] ) This function assigns the value of evaluating expression to symbol. This function returns the new value assigned to sym. (setq i 1) ;Assigns the integer 1 to i, returns 1 (setq s "APM") ;Assigns the string "APM" to s, returns "APM" (setq x 1.0 y 2.0) ;Assigns 1.0 to x and 2.0 to y, returns 2.0 The current binding or value of an AutoLISP symbol may be used on the drawing editor s command line by simply putting an! exclamation point in front of the symbol name. Nesting AutoLISP Expressions Nesting is putting an expression inside another expression as a substitute for an argument. Results returned by an expression can be used as arguments for other functions in a process called nesting. AutoLISP evaluates the innermost or deepest nesting level expression first and expressions from left to right that are at the same nesting level. Always keep an equal number of open and closed parentheses in every statement. LISP is sometimes known as, Lost In Stupid Parentheses due to the fact that it is a parentheses delimited language, that allows functions, atoms and lists to be nested. (setq o:fr (getvar "FILLETRAD")) ;Retrieves current fillet radius (setvar "FILLETRAD" 0.0) ;Set fillet radius to 0.0 (setvar "FILLETRAD" o:fr) ;Resets fillet radius to original 6

Interacting with AutoCAD (command [arguments]...) The command function executes an AutoCAD command. Any AutoCAD command that functions from the command line may be used. A hyphen (-) before the command suppresses the dialog box and displays prompts on the command line instead. Use a period (.) before the command name to insure you always access a built-in AutoCAD command. SKETCH command cannot be used because it reads the input device directly. These arguments must correspond to the types and values expected by that command's prompt sequence; these may be strings, real values, integers, points, entity names, or selection set names. Data such as angles, distances, and points can be passed either as strings or as the values themselves (as integer or real values, or as point lists). A null string ("") is equivalent to pressing ENTER on the keyboard. (command) - Invoking command with no argument is equivalent to pressing ESC and cancels most AutoCAD commands. The predefined symbol pause allows direct user input when it is encountered as an argument to the command function. The command function evaluates each argument and sends it to AutoCAD in response to successive prompts. (command ".POLYGON" "6" pause "C" pause) (command ".BREAK" pause "First" pause "@") (command ".-BHATCH" "Properties" "Solid" pause "") (ssget) The ssget function creates a selection set from the selected object. ;Create Hexagon ;Breaks at Point (no gap) ;Fills w/solid hatch These selection sets may be used in any AutoCAD command that accepts the Previous or Last option for set selection, such as ERASE, COPY, MOVE, and ROTATE commands. Selection sets can contain objects from both paper and model space, but when the selection set is used in an operation, ssget filters out objects from the space not currently in effect. Selection sets returned by ssget contain main entities only (no attributes or polyline vertices). If (ssget) is used without any parameters AutoLISP will prompt the user with "Select entity: " in the same manor as other AutoCAD commands. Example: (setq sset (ssget)) (command ".MIRROR" sset "" pause pause "Y") ;Selected items to modify ;Mirror w/o copying 7

Create personal AutoCAD shortcuts With AutoLISP, you can define your own functions. Once defined, you can use these functions at the AutoCAD Command prompt, or within other AutoLISP expressions, just as you use the standard functions. You can also create your own AutoCAD commands, because commands are just a special type of function. (defun symbol ([arguments] [/ variables...]) expression...) The defun function defines a function. The symbol names the function. Warning! Never use the name of a built-in function or symbol for the symbol argument to defun. This overwrites the original definition and makes the built-in function or symbol inaccessible. If the symbol name is defined in the form of C:xxx, it can be issued at the AutoCAD Command prompt in the same manner as a built-in AutoCAD command. The C: portion of the name must always be present in the XXX portion is a command name of your choice. The function must be defined with no arguments. The arguments name the symbols for the values expected by the function. The variables name the local variables for the function. The slash preceding the variable names must be separated from the first local name and from the last argument, if any, by at least one space. Any number of AutoLISP expressions to be evaluated when the function executes. If you do not declare any arguments or local symbols, you must supply an empty set of parentheses after the function name. If duplicate argument or symbol names are specified, AutoLISP uses the first occurrence of each name and ignores the following occurrences. Return the result of the last expression evaluated. (defun C:ZE () (command ".ZOOM" "Extents") (command ".ZOOM" "0.95x")) ; Zoom Extents (defun C:LGD () (command ".LENGTHEN" "DYnamic")) ;Extend/Trim to Point (princ [expression]) The princ function prints an expression to the command line. The expression is either a string or an AutoLISP expression that returns a string. Only the specific expression is printed; a newline or space character is not included. If princ is called without arguments, it returns a null. (princ \nautolisp routines loaded ) ; returns AutoLISP routines loaded to the command line (princ) ; returns null (nothing) 8

Sample ACADdoc.lsp: (setvar "AUPREC" 1) ;Angular Unit Precision (setvar "GRIDMODE" 0) ;Grid Off (setvar "LUPREC" 5) ;Linear Unit Precision (setvar "MIRRTEXT" 0) ;Mirror Text Off (setvar "ORTHOMODE" 0) ;Ortho Off (setvar "SNAPMODE" 0) ;Snap Off (defun C:ALT () (command ".DIMEDIT" "New" "<>\\X[]") (princ)) ;Adds alternate units to dims (defun C:ARA (/ o:sna sset) (command ".UNDO" "BEgin") (setq o:sna (getvar "SNAPANG")) (setvar "CMDECHO" 1) (setq sset (ssget)) (command ".SNAP" "Rotate" "" pause) (command ".ARRAY" sset "" "R" pause pause pause pause) (command ".SNAP" "Rotate" "" o:sna) (command ".UNDO" "End") (princ)) ;Array at Angle (defun C:ATR () (setvar "CMDECHO" 1) ;Rotate and Reposition Attribute Values (command ".ATTEDIT" "Y" "" "" "" pause "" "Angle" "0" "Position" pause "") (princ)) (defun C:BAA () (command ".UNDO" "BEgin") (setvar "CMDECHO" 0) (princ "\nspecify internal point of area: ") (command ".-BOUNDARY" pause "") (command ".AREA" "Object" "Last") (command ".Erase" "Last" "") (setvar "CMDECHO" 1) (command ".UNDO" "End") (princ (getvar "AREA")) (princ)) ;Reports Area by Picking Point (defun C:CORO (/ sset) (setq sset (ssget)) (command ".ROTATE" sset "" pause "Copy" pause) (princ)) ;Rotate with copy (defun C:DIA () (command ".DIMEDIT" "New" "%%C<>") (princ)) ;Adds diameter symbol to dims (defun C:F0 (/ o:fr o:tm) (setq o:fr (getvar "FILLETRAD")) (setvar "FILLETRAD" 0) (setq o:tm (getvar "TRIMMODE")) (setvar "TRIMMODE" 1) (command ".FILLET" pause pause) (setvar "FILLETRAD" o:fr) (setvar "TRIMMODE" o:fr) (princ)) ;Trim/Extend to Intersection (defun C:FLIP (/ sset) (setq sset (ssget)) (command ".MIRROR" sset "" pause pause "Y") (princ)) ;Mirrors selected items w/o copying (defun C:LGD () (command ".LENGTHEN" "DYnamic") (princ)) ;Extend or Trim Item to Point (defun C:LIM () (command ".LIMITS" (getvar "EXTMIN") (getvar "EXTMAX")) (princ)) (defun C:O1 (/ o:od) (setq o:od (getvar "OFFSETDIST")) (setvar "OFFSETDIST" -1) (command ".OFFSET" "" pause pause "") (setvar "OFFSETDIST" o:od) (princ)) ;Offsets selected object (defun C:PAL () (command ".-LAYER" "Set" "0" "") (command ".PURGE" "All" "" "N") (command ".PURGE" "All" "" "N") (princ)) ;Purges all unused symbols (defun C:SCI (/ sset) (setvar "CMDECHO" 1) (setq sset (ssget)) (command ".SCALE" sset "" pause "10/254") (princ)) ;Scales selected to Inch (defun C:SCM (/ sset) (setvar "CMDECHO" 1) (setq sset (ssget)) (command ".SCALE" sset "" pause "25.4") (princ)) ;Scales selected to Metric (defun C:SFH (/ o:hpn) (setq o:hpn (getvar "HPNAME")) ;Fills area w/solid hatch (command ".-BHATCH" "Properties" "Solid" pause "") (setvar "HPNAME" o:hpn) (princ)) (defun C:ZE ()(command ".ZOOM" "Extents")(command ".ZOOM" "0.95x")(princ)) ;Zoom Extents (princ "\n\ta. P. Meulemans - User Commands Loaded") 9

Load your AutoCAD shortcuts AutoLISP applications are stored in ASCII text files with the.lsp extension. An AutoLISP application must first be loaded before it can be used. Loading an AutoLISP application loads the code from the LSP file into the system's memory. The APPLOAD command loads applications and specifies which applications are to be loaded at start-up. If the file is named acaddoc.lsp and is stored in a support path folder (directory), AutoCAD will load the contents of the file automatically with the opening of each individual drawing. 10