Jump to content

AutoCAD Resources


STRAT
 Share

Recommended Posts

Hi guys

 

I get ppl asking me about AutoCAD tuts and general acad resource sites. And to be honest i dont know of many. i learned acad years ago and personally haven't needed the use of them. but i thought why not, it'd be a great help all round for nuwbs and proffesionals alike.

 

So post up all you autocad/adt resources here. tuts, forums, help pages, free models/blocks etc etc.

 

i'll start with the only acad site i got -

 

http://www.cadtutor.net/

Link to comment
Share on other sites

Thsi is for the real in-depth stuff.

 

AutoCAD customization.

 

Afralisp

 

I have been using AutoCAD since I was 14 years old and I feel I am quite proficient with it. I thought I was running out of stuff to learn until I discovered Lisp. Now I feel like a kid again, gobbling up information like pacman.

 

Also, with my own custom commands I cut down on my drawing time considerably.

 

Sorry I know you were referring to NooB tuts, but this is such a good site I couldn't resist.

 

Spongebob

Link to comment
Share on other sites

hi There

 

SpongeBob

 

what kind of custom Lisp routines did you come up with?

i developed a numeric alias system for autocad commands

 

i use a right-handed mouse Left-handed (i am right-handed)

so then my right hand resting on the numeric key pad anyways

 

This is extremely quick for input especially 3d work

 

example

 

(defun c:00 () (command ".save" "")

...

(defun c:10 () (command "'pan") (princ))

(defun c:11 () (command ".zoom" "w") (princ))

(defun c:12 () (command ".zoom" ".95x") (princ))

(defun c:13 () (command ".zoom" ".5x") (princ)))

...

(defun c:20 () (command ".arc") (princ))

(defun c:21 () (command ".line") (princ))

(defun c:22 () (command ".pline") (princ))

...

(defun c:30 () (command ".copy") (princ))

(defun c:31 () (command ".move") (princ))

(defun c:31-1 () (command ".move" "L" "") (princ))

(defun c:31-2 () (command ".move" "P" "") (princ))

(defun c:32 () (command ".erase") (princ))

(defun c:33 () (command ".offset") (princ))

...

(defun c:40 () (command ".rotate") (princ))

(defun c:40-0 () (progn (setq ss (ssget)) (command ".rotate" ss "" pause "r" "@" pause pause) (setq ss nil)) (princ))

(defun c:40-1 () (command ".rotate" "l" "" pause 180) (princ))

(defun c:41 () (command ".scale") (princ))

(defun c:41-0 () (progn (setq ss (ssget)) (command ".scale" ss "" pause "r" "@" pause pause) (setq ss nil)) (princ))

(defun c:42 () (command ".array") (princ))

 

etc

 

if you are interested i can send These along

 

let me know

 

Thanks

 

Randy

Link to comment
Share on other sites

That is very interresting. I see alot of peeps using AutoCAD in their own custom way but I have never seen anyone shake it up like you do. Kudos!

 

I am personally one to attempt to leave AutoCAD and a computer in general as it comes and merely add commands and functions. In other words if I want to create a command to add doors in ADT, I think about a simple two key shortcut like 'DR'. Then I find out DR is taken by the command Draw Order, I'd rather pick another shortcut then to hear a user upset about the change. (So far all of my routines are centralized on the server for all computers on the network to use.)

 

I believe that using numeric commands is a great way to avoid this but I don't think I could remember them all.

 

Mostly my commands are for inserting blocks. For instance 'ETAG' will insert an elevation tag at the current scale set in drawing setup and consists of two separate blocks which are linked together at the end of the command with grouping. One block is the attributes and the other block is the arrow - keeping them separate allows for the user to rotate the arrow to any angle.

 

Here's the code if you want to see it.

 

(defun c:etag (/ InputELEV InputELEVSHT INSPOINT BLKENT ETAGENT ARRENT)

(SETQ OLDORTHOMODE (GETVAR "ORTHOMODE")

OLDPOLARMODE (GETVAR "POLARMODE")

OLDSNAPTYPE (GETVAR "SNAPTYPE")

OLDAUTOSNAP (GETVAR "AUTOSNAP")

)

(gai-layer "A-Anno-Note" 7 "Continuous" 1)

(SETVAR "ATTREQ" 0)

(SETVAR "ATTDIA" 0)

(SETVAR "OSMODE" 0)

(PROMPT "\nTag Location:")

(vl-cmdf "._-INSERT"

"TAG"

"_x"

(tagscale)

"_y"

(tagscale)

"_r"

"0"

PAUSE

)

(setq INSPOINT (getvar "lastpoint")

BLKENT (entlast)

)

(SETVAR "ATTREQ" 1)

(if (/= (setq

inputELEV (getstring t

(if defaultELEV

(strcat "\nEnter elevation number

defaultELEV

">:"

)

"\nEnter elevation number:"

)

)

)

""

)

(setq defaultELEV inputELEV)

(setq inputELEV defaultELEV)

)

(if (/= (setq

inputELEVSHT

(getstring t

(if defaultELEVSHT

(strcat "\nEnter sheet elevation is on

defaultELEVSHT

">:"

)

"\nEnter sheet elevation is on:"

)

)

)

""

)

(setq defaultELEVSHT inputELEVSHT)

(setq inputELEVSHT defaultELEVSHT)

)

(entdel BLKENT)

(vl-cmdf "._-INSERT"

"ELEVTAG"

INSPOINT

(tagscale)

(tagscale)

"0"

inputELEV

inputELEVSHT

)

(setq ETAGENT (entlast))

(setvar "autosnap" 63)

(setvar "snaptype" 1)

(command "polarang" "15.00")

(setvar "polarmode" 2)

(vl-cmdf "._-insert"

"ETAGARR"

INSPOINT

(tagscale)

(tagscale)

PAUSE

)

(setq ARRENT (entlast))

(vl-cmdf "._group" "_c" "*"

"Elevation tag and arrow" ETAGENT

ARRENT ""

)

(SETVAR "AUTOSNAP" OLDAUTOSNAP)

(SETVAR "POLARMODE" OLDPOLARMODE)

(SETVAR "SNAPTYPE" OLDSNAPTYPE)

(SETVAR "ORTHOMODE" OLDORTHOMODE)

(SETVAR "ATTDIA" 1)

)

 

Other routines are for setting up standard layers or plot settings and creating my dim styles and text styles. They take a while to create but once done I can work faster than ever.

 

I have a growing list of about 100 routines which I am constantly working on. It really allows me to be as picky on my drawings as I like without costing me billable time.

 

I would very much like to exchange ideas with someone like you to see what direction others are going. I'm sure there are some extremely useful tools created with lisp which I have never considered.

 

Spongebob

Link to comment
Share on other sites

hi There

 

Spongebob,

 

one of the things about using the numeric keypad command aliases is that This is very quick and efficient

 

because the fingers dont have to move very far so therefor they move fairly fast

 

i organized the numbers by groups or functions

 

0-9 osnaps

10-19 views/pan/zoom

20-29 creation line pline etc

30-39 edit I

40-49 edit II

50-59 custom

60-69 ddetc (ok old style)

70-79 dimensions

80-89 Text

90-99 etc useful items

 

also, i did an ergonomic study (i dream a lot while working) and figured out which commands that i use the most and then assigned these commands to the lowest number combinations *0-*6 so that the most frequently used command in each 10 unit category is naturally at the fingertips with the least amount of unnecessasry finger movement or travel distance

 

i can keep my eyeballs on the screen and keep my right-hand on the keypad and voila presto gizmo shtuff happens

 

ok, jest joking

 

here is a sample code that i use a LOT just pick an entity and This will automatically put you onto that layer and into That command

 

i call it "doit" instead of edit. this also references a (dtx) code fragment that someone else wrote for text that i incorporated into This routine

 

Thanks

 

Randy

 

****

 

(never mind the bbs didnt like that amount of text so i will send along the short form only)

 

****

 

;;; original code by randy l. sanders c 1995

;;; a simple idea that could be expanded upon

;;; too much time on my my hands one fine day

;;; this took about 15 minutes to put together

;;; from scratch, i already was using the dtx fragment

;;; so i just incorporated it into the top part of the code

 

;;; this can be renamed to whatever

;;; MTC stands for - Match Command.

;;; DOIT instead of EDIT is a possible rename

 

;;;**********************************************

 

;;; select an Item on The Screen

;;; This not only sets the Layer current

;;; but also sets That Entities Name-Command current

 

;;; select a Block and then the Block's Insertion Layer is set current

;;; and you are in the Insert command with that Block being inserted into the dwg

 

;;; ok, select a piece of Text,

;;; you go to that Text's Layer

;;; and you are in the Text Command,

 

;;;; cool

 

;;; There is a Pattern forming here

 

;;; hey add your own Ideas

 

;;;**********************************************

 

 

(defun C:MTC (/ SS DC LA EC)

(setq EC (entsel "Entity to match Command: "))

(setq CM (cdr (assoc 0 (entget (car EC)))))

(setq BK (cdr (assoc 2 (entget (car EC)))))

(setq LA (cdr (assoc 8 (entget (car EC)))))

(setq x41 (cdr (assoc 41 (entget (car EC)))))

(setq y42 (cdr (assoc 42 (entget (car EC)))))

(setq z43 (cdr (assoc 43 (entget (car EC)))))

(command "layer" "s" LA "")

(prompt (strcat "\nCommand Set to: Command: " CM ", Layer: " LA " :"))

(cond

((eq CM "DIMENSION") (command ".dim"))

((eq CM "VIEWPORT") (command ".mview"))

((eq CM "HATCH") (command ".bhatch" "p" bk x41 "" pause))

((eq CM "INSERT") (command ".insert" bk pause x41 y42))

((eq CM "LWPOLYLINE") (command ".pline"))

((eq CM "3DSOLID") (command ".box"))

((eq CM "AEC_WALL") (command "_AecWallAdd"))

; ((eq CM "TEXT") (dtx))

 

;;;; This is where you can add your own Ideas

;;;; ((eq CM "GO-FOR-IT") (command "go-for-it"))

 

(T (command cm))

)

(princ)

)

Link to comment
Share on other sites

Talk about an odd coincidence.

 

We recently made the switch over from AutoCAD R14.0 to ADT 2004. In the move we lost alot of commands and shortcut keys.

 

I had multiple requests from users here for the creation of two commands to replace the missing ones. The two commands were 'Continuous Copy' & 'Draw by Example'. I created continuous copy with a more basic version I found on the internet as a start and help from a friend to work out the bugs. Here is the resulting code:

 

code:
 

(defun C:CC (/ A INPUTDIST INPUTANG G-PR G-PR2 G-QTY G-INPUT)

(princ "\nSelect entities to Continuous Copy: ")

(if (setq A (ssget))

(progn (if (not DEFAULTANG)

(setq DEFAULTANG 0.0)

)

(if (setq INPUTANG (getangle (strcat "\nAngle to copy :")))

(setq DEFAULTANG INPUTANG)

(setq INPUTANG DEFAULTANG)

)

(if (setq INPUTDIST (getdist (if DEFAULTDIST

(strcat "\nDistance to copy :")

"\nDistance to copy:"

)

)

)

(setq DEFAULTDIST INPUTDIST)

(setq INPUTDIST DEFAULTDIST)

)

(if INPUTDIST

(progn

(command "._copy" "P" "" "0,0,0" "0,0,0")

(command "._move"

"P"

""

"0,0,0"

(list (* (cos INPUTANG) INPUTDIST) (* (sin INPUTANG) INPUTDIST))

)

(setq G-PR2 "Press to continue, to stop..."

G-QTY 2

)

(prompt (strcat ">> Qty: (2) " G-PR2))

(setq G-INPUT (grread NIL 4 0))

(while (or (= (nth 1 G-INPUT) 13) (= (nth 1 G-INPUT) 32))

(command "copy" "P" "" "0,0,0" "0,0,0")

(command "move"

"P"

""

"0,0,0"

(list (* (cos INPUTANG) INPUTDIST) (* (sin INPUTANG) INPUTDIST))

)

(setq G-QTY (1+ G-QTY)

G-PR (strcat ">> Qty: (" (itoa G-QTY) ") " G-PR2)

)

(prompt (strcat "\015" G-PR))

(setq G-INPUT (grread NIL 4 0))

)

)

)

)

)

)

The other - Draw by Example - is intended to do exactly what your routine does. Do you mind if I use it in lieu of creating from scratch?

 

Thanks,

Jeffrey Ries

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...