AutoCAD lisp
AutoCAD lisp
;;; Creates walls, doors, windows, and room labels based on user input
;; Initialize variables
(setvar "CMDECHO" 0)
;; Label rooms
(labelRooms roomList)
;; Cleanup and finalize
(setvar "CMDECHO" 1)
(princ (strcat "\nBuilding plan created with " (itoa numRooms) " rooms."))
(princ)
(cond
((= numRooms 2)
(progn
(setq pt2 (list (+ (car origin) (/ width 2.0)) (+ (cadr origin) depth)))
(progn
(setq pt2 (list (+ (car origin) width) (+ (cadr origin) (/ depth 2.0))))
(command "_.LINE" pt1 pt2 "")
(setq roomList (list (list origin (list (+ (car origin) width) (+ (cadr origin)
depth)))))
((> numRooms 2)
;; Vertical divisions
(setq xPos (+ (car origin) (* width (/ (float (1+ (setq i (1+ i)))) cols))))
;; Horizontal divisions
(setq i 0)
(setq yPos (+ (cadr origin) (* depth (/ (float (1+ (setq i (1+ i)))) rows)))
(setq pt1 (list (car origin) yPos))
roomList
(repeat rows
(repeat cols
(setq roomList
(cons
(list
roomList
(setq i 0)
(reverse roomList)
(setq wall (nth (rem (length doorList) 4) '("N" "E" "S" "W")))
(cond
(setq midPt (list (/ (+ (caar room) (caadr room)) 2.0) (cadadr room)))
(setq doorPos (list (- (car midPt) (/ doorWidth 2.0)) (cadr midPt)))
(setq midPt (list (caadr room) (/ (+ (cadar room) (cadadr room)) 2.0)))
(setq midPt (list (/ (+ (caar room) (caadr room)) 2.0) (cadar room)))
(setq midPt (list (caar room) (/ (+ (cadar room) (cadadr room)) 2.0)))
"_C"
doorList
(repeat numWindows
(setq xPos (+ (car origin) (* spacing (setq i (1+ i))) (* winWidth (1- i))))
(command "_.LINE"
"")
(command "_.LINE"
"")
(command "_.LINE"
"")
winList
(setq roomNum 1)
(setq roomCenter
(list
(command "_.TEXT"
"_J" "_MC"
roomCenter
0 ; Rotation
(defun c:GENBUILDING ()
(c:BUILDINGPLAN)
)
(princ)