Jump to content

Recommended Posts

Posted

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

Posted

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 :)

Posted

Had some fun with it o:)

 

[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]
                          

Posted

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

Posted

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

Posted

thanks so much i will look into all of this

Posted
thanks so much i will look into all of this

 

You're very welcome Barth :)

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...