cadk Posted March 6, 2010 Posted March 6, 2010 hope i came to the right place, i have been learning lisp and been doing fine with very basic simple stuff, and decided to step it up a bit and try a bit more complex drawing...at lease for me!, could someone tell me if i have my points, varibles, math correct, i am not sure what i am doing wrong, i am getting a nil error which i believe has something to do with the math, and is there anyway autolisp will step though the code in the editor itself and tell you when things are not correct or will not work. i uploaded a drawing of what i am trying to draw with lisp as well as the lisp file...Thanks so much in advance for any help door.dwg door.LSP Quote
Lee Mac Posted March 6, 2010 Posted March 6, 2010 Perhaps something like this? Just following with your method: ;;;; door maker.lsp ;;; starting the program (defun c:door (/ *error* Line BR HGT IPT LR P1 P2 P3 P4 P5 P6 RR SP SPT TR WID) (defun *error* (msg) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ)) (defun Line (p1 p2) (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))) (if (and (setq sPt (getpoint "\nPlease Pick Your Starting Point: ")) (setq wid (getdist "\nDoor Width: " spt)) (setq hgt (getdist "\nDoor Height: " spt)) (setq lr (getdist "\nLeft Revel: ")) (setq rr (getdist "\nRight Revel: ")) (setq tr (getdist "\nTop Revel: ")) (setq br (getdist "\nBottom Revel: "))) (progn (setq p1 (list (car sPt) (+ (cadr sPt) hgt)) p2 (list (+ (car sPt) wid) (cadr sPt)) p3 (list (+ (car sPt) wid) (+ (cadr sPt) hgt))) (setq iPt (list (+ (car sPt) lr) (+ (cadr sPt) br)) p4 (list (car iPt) (+ (cadr sPt) (- Hgt tr))) p5 (list (+ (car sPt) (- wid rr)) (cadr iPt)) p6 (list (car p5) (cadr p4))) (mapcar 'line (list sPt sPt p1 p3 iPt iPt p4 p6) (list p1 p2 p3 p2 p4 p5 p6 p5)))) (princ)) I'm not sure if using getcorner might be more intuitive? And perhaps consider using polar Quote
Lee Mac Posted March 6, 2010 Posted March 6, 2010 Had some fun with it [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:door [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* LINE BR CP GR L1 L2 LR P1 P2 P3 P4 P5 P6 PT RR TR[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]msg[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#a52a2a]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n** Error: "[/color][/b] msg [b][color=#a52a2a]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]redraw[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Line [b][color=RED]([/color][/b]p1 p2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entmake[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"LINE"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] p1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]11[/color][/b] p2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lr [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#a52a2a]"\nSpecify Left Revel: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] rr [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#a52a2a]"\nSpecify Right Revel: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tr [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#a52a2a]"\nSpecify Top Revel: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] br [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#a52a2a]"\nSpecify Bottom Revel: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nPick Corner Point: "[/color][/b] [b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] [b][color=#009900]5[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] gr [b][color=RED]([/color][/b][b][color=BLUE]grread[/color][/b] [b][color=DARKRED]'[/color][color=Blue]t[/color][/b] [b][color=#009900]13[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] cP [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] gr[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]redraw[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] cP [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] cP [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] p1 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] cP[b][color=RED])[/color][/b][b][color=RED])[/color][/b] p2 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] cP[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b] p3 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] lr[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b] br[b][color=RED])[/color][/b][b][color=RED])[/color][/b] p4 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] cP[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] pt[b][color=RED])[/color][/b] rr[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] cP[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b] tr[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] p5 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] p3[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] p4[b][color=RED])[/color][/b][b][color=RED])[/color][/b] p6 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] p4[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] p3[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]grvecs[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]-3[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] l1 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] pt p1 pt p2 p1 cP p2 cP[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] l2 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] p3 p5 p3 p6 p5 p4 p6 p4[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] l1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] l2[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]line [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] l1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] l1[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]line [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] l2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] l2[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] l1 [b][color=RED]([/color][/b][b][color=BLUE]cddr[/color][/b] l1[b][color=RED])[/color][/b] l2 [b][color=RED]([/color][/b][b][color=BLUE]cddr[/color][/b] l2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]redraw[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
cadk Posted March 7, 2010 Author Posted March 7, 2010 I thank you very much, your coding is alot more advanced then what Iam doing right now but i do understand 1/2 of what you are doing..i works great i have learned a bit more...i will say any good books that teach along your method of coding..your the man Quote
Lee Mac Posted March 7, 2010 Posted March 7, 2010 Well, the second one was just showing off a tad if I'm honest - its not really a practical example, as OSnap and most other AutoCAD functionality is disabled within a grread loop (which is what it uses). As for learning, I learnt pretty much all of what I know from the forums (of course, I picked up the very basics from a few tutorial sites), but once you get going, most of the questions that you will want to ask are already answered here on the forums, and if not, you can just ask them - it makes learning the language so much faster. One tip I would give you, is to start looking into the entmake/entmakex functions and the DXF group codes of entities. These give you great power over modifying and creating entities, and are in fact the fastest way to do so. A reference for DXF codes can be found here, and I created a thread on how to create entities using entmake/entmakex here. Also, there is an explanation of how to manipulate entities by DXF here, and here. Have fun, and if there is anything you are stuck on, just ask. Lee Quote
barth11496 Posted March 7, 2010 Posted March 7, 2010 thanks so much i will look into all of this Quote
Lee Mac Posted March 7, 2010 Posted March 7, 2010 thanks so much i will look into all of this You're very welcome Barth Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.