242 lines
6.7 KiB
Common Lisp
242 lines
6.7 KiB
Common Lisp
; -----------------------------------------------------
|
|
; Die Layergruppe R- muss vorhanden sein 14.6.92/4.8.97
|
|
; Waende zeichnen - LAYER R-6
|
|
; Tuer zeichnen - LAYER R-3
|
|
; -----------------------------------------------------
|
|
(Defun C:Wand ()
|
|
(Setvar "Cmdecho" 0)
|
|
(Initget "2 S M E")
|
|
(Setq B (Getkword "\nGenerate wall - 2 Spaces/Middleline/<Edge>: "))
|
|
(If (= nil B)(Setq B "E"))
|
|
(If (Or (= B "E") (= B "M"))
|
|
(Progn
|
|
(Prompt "\nThickness of the wall <")
|
|
(Princ (Rtos (Getvar "Userr1") 2 3))
|
|
(Initget 6)
|
|
(Setq A (Getdist ">: "))
|
|
(If (= nil A)
|
|
(Setq A (Getvar "Userr1"))
|
|
)
|
|
(Setvar "Userr1" A)
|
|
)
|
|
(Progn
|
|
(Initget 7)
|
|
(Setq A1 (Getdist "\n1st distance: "))
|
|
(Initget 7)
|
|
(Setq A2 (Getdist "\n2nd distance: "))
|
|
)
|
|
)
|
|
(Initget 1)
|
|
(Setq P1 (Getpoint "\nfrom point: "))
|
|
(Initget 1)
|
|
(Setq P2 (Getpoint P1 "\nto point: "))
|
|
(Command "_PLINE" P1 P2)
|
|
(Setq P4 t)
|
|
(While
|
|
(Boundp 'P4)
|
|
(Initget "U C")
|
|
(Setq P4
|
|
(Getpoint (Getvar "Lastpoint") "\nUndo/Close/<to point>: "))
|
|
(Cond
|
|
((= nil P4)
|
|
(Command "")
|
|
)
|
|
((= "C" P4)
|
|
(Command "_close")
|
|
(Setq P4 nil)
|
|
)
|
|
((= "U" P4)
|
|
(Command "_undo")
|
|
)
|
|
((= 'LIST (Type P4))
|
|
(Command P4)
|
|
)
|
|
)
|
|
)
|
|
(Cond
|
|
((= B "E")
|
|
(Setq E2 (Entlast))
|
|
(Setq P2 (Getpoint "\nOn which side is the wall ?"))
|
|
(Command "_offset" A P1 P2 "")
|
|
(Setq E3 (Entlast))
|
|
)
|
|
((= B "M")
|
|
(Setq E1 (Entlast))
|
|
(Command "_select" "_L" "")
|
|
(Command "_offset" (/ A 2)
|
|
(Polar P1 (Angle P1 P2) (/ (Distance P1 P2) 2))
|
|
(Polar (Getvar "Lastpoint") (+ (/ Pi 2) (Angle P1 P2)) (/ A 2)) "")
|
|
(Setq E2 (Entlast))
|
|
(Command "_offset" A (Getvar "Lastpoint")
|
|
(Polar (Getvar "Lastpoint") (+ (/ Pi 2) (Angle P2 P1)) A) "")
|
|
(Setq E3 (Entlast))
|
|
)
|
|
((or (= B "S") (= B "2"))
|
|
(Setq E1 (Entlast))
|
|
(Command "_select" "_L" "")
|
|
(Prompt "\n(1)On which side ")
|
|
(Princ (Rtos A1 2 4))
|
|
(Setq P2 (Getpoint " will be cleared ?: "))
|
|
(Command "_offset" A1 P1 P2 "")
|
|
(Setq E2 (Entlast))
|
|
(Prompt "\n(2)On which side ")
|
|
(Princ (Rtos A2 2 4))
|
|
(Setq P2 (Getpoint " will be cleared ?: "))
|
|
(Command "_offset" A2 P1 P2 "")
|
|
(Setq E3 (Entlast))
|
|
)
|
|
)
|
|
(If
|
|
(Or (= B "2") (= B "S") (= B "M"))
|
|
(Progn
|
|
(Prompt "\nMiddleline will be ")
|
|
(Initget "D P O")
|
|
(Setq A (Getkword "\n<D>eleted/<P>reserve/<On R-6>: "))
|
|
(Cond
|
|
((= A "D")
|
|
(Command "_erase" "_p" "")
|
|
)
|
|
((Or (= A "O") (= A "P") (= A nil))
|
|
(Command "_change" "_p" "" "_p" "_la" "R-6" "")
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(Initget "Y N")
|
|
(Setq A (Getkword
|
|
"\nWalls are POLYLINES. Transform to LINE? <Y>: "))
|
|
(If
|
|
(Or (= A "Y") (= A nil))
|
|
(Command "_explode" E2 "_explode" E3 "_explode" E1 ^C)
|
|
)
|
|
(Princ)
|
|
)
|
|
; ----------------ENDE WAND --------------------------
|
|
|
|
; ---------------------------------
|
|
; Durchbrueche zeichnen - LAYER R-6
|
|
;---------------------------------
|
|
(Defun C:DURCHBRUCH ()
|
|
(Setvar "Cmdecho" 0)
|
|
(Initget 7)
|
|
(Setq A (Getdist "\nWidth of break: "))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P1 (Getpoint "\n1st point: "))
|
|
(Setvar "Lastpoint" P1)
|
|
(Initget 1)
|
|
(setvar "osmode" 128)
|
|
(Setq P2 (Getpoint "\nOpposite side of wall: "))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P3 (Getpoint "\nOn which side is the break:"))
|
|
(setvar "osmode" 0)
|
|
(Setq A1 (Angle P1 P3))
|
|
(Setq P3 (Polar P1 A1 A))
|
|
(Setq A2 (Angle P1 P2))
|
|
(Setq P4 (Polar P3 A2 (Distance P1 P2)))
|
|
(Command "_break" P1 "_f" P1 P3 "_break" P2 "_f" P2 P4)
|
|
(Command "_line" P1 P2 "" "_line" P3 P4 "")
|
|
(Princ)
|
|
)
|
|
; ------------------- ENDE Durchbruch ---------------------------
|
|
|
|
; --------------------------
|
|
; Tuer zeichnen - LAYER R-3
|
|
; --------------------------
|
|
(Defun C:TUER ()
|
|
(Setvar "Cmdecho" 0)
|
|
(Initget 7)
|
|
(Setq A (Getdist "\nWidth of the door: "))
|
|
(Initget 1)
|
|
(Setq P1 (Osnap (getpoint "\Rotation point: ") "_nea"))
|
|
(Setvar "Lastpoint" P1)
|
|
(Initget 1)
|
|
(Setq P2 (Osnap (Getpoint "\nOpposite side of the wall: ") "_per"))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P3 (Getpoint "\nOn which side is the door: "))
|
|
(setvar "osmode" 0)
|
|
(Setq A1 (Angle P1 P3))
|
|
(Setq P3 (Polar P1 A1 A))
|
|
(Setq A2 (Angle P1 P2))
|
|
(Setq P4 (Polar P3 A2 (Distance P1 P2)))
|
|
(Setq P5 (Polar P1 (+ Pi A2) A))
|
|
(Command "_break" P1 "_f" P1 P3 "_break" P2 "_f" P2 P4)
|
|
(Command "_line" P1 P2 "" "_line" P3 P4 "" "_line" P1 P5 "")
|
|
(Command "_arc" P3 "_e" P5 "_A" 90)
|
|
(Princ)
|
|
)
|
|
|
|
; ---------------------------------
|
|
; Doppel-Tuer zeichnen - LAYER R-3
|
|
; ---------------------------------
|
|
(Defun C:DTUER ()
|
|
(Setvar "Cmdecho" 0)
|
|
(Initget 7)
|
|
(Setq A (/ (Getdist "\nDouble door width: ") 2)) ; eingegeb. Abstand
|
|
; halbieren
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P1 (getpoint "\nRotation point: "))
|
|
(Setvar "Lastpoint" P1)
|
|
(Initget 1)
|
|
(setvar "osmode" 128)
|
|
(Setq P2 (Getpoint "\nOpposite side of the wall: "))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P3 (Getpoint "\nOn which side is the double door: "))
|
|
(setvar "osmode" 0)
|
|
(Setq A1 (Angle P1 P3))
|
|
(Setq P3 (Polar P1 A1 A))
|
|
(Setq A2 (Angle P1 P2))
|
|
(Setq P4 (Polar P3 A2 (Distance P1 P2)))
|
|
(Setq P5 (Polar P1 (+ Pi A2) A))
|
|
(Setq P6 (Polar P3 A1 A))
|
|
(Setq P7 (Polar P4 A1 A))
|
|
(Setq P8 (Polar P6 (+ Pi A2) A))
|
|
(Command "_break" P1 "_f" P1 P6 "_break" P2 "_f" P2 P7)
|
|
(Command "_line" P1 P2 "" "_line" P6 P7 "" "_line" P1 P5 "" "_line" P6 P8 "")
|
|
(Command "_arc" P3 "_e" P5 "_a" 90)
|
|
(Command "_arc" P8 "_e" P3 "_a" 90)
|
|
(Princ)
|
|
)
|
|
|
|
; ---------------------------------------------------
|
|
; Fenster - LAYER R-3
|
|
; Tor - LAYER R-7
|
|
; die Layer werden ausserhalb des Makros eingestellt
|
|
; ----------------------------------------------------
|
|
(Defun C:fenstor ()
|
|
(Setvar "Cmdecho" 0)
|
|
(Initget 7)
|
|
(Setq A (Getdist "\nWidth of the window/gate: "))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P1 (getpoint "\n1st point: "))
|
|
(Setvar "Lastpoint" P1)
|
|
(Initget 1)
|
|
(setvar "osmode" 128)
|
|
(Setq P2 (Getpoint "\nOpposite side of the wall: "))
|
|
(Initget 1)
|
|
(setvar "osmode" 512)
|
|
(Setq P3 (Getpoint "\nOn which side is the window/door:"))
|
|
(setvar "osmode" 0)
|
|
(Setq A1 (Angle P1 P3))
|
|
(Setq P3 (Polar P1 A1 A))
|
|
(Setq A2 (Angle P1 P2))
|
|
(Setq P4 (Polar P3 A2 (Distance P1 P2)))
|
|
(Command "_break" P1 "_f" P1 P3 "_break" P2 "_f" P2 P4)
|
|
(Command "_line" P1 P2 "" "_line" P3 P4 "")
|
|
|
|
(Setq dicke (Distance P1 P2))
|
|
(Setq P1A (Polar P1 A2 (- (/ dicke 2) 40)))
|
|
(Setq P2A (Polar P1 A2 (+ (/ dicke 2) 40)))
|
|
(Setq P3A (Polar P3 A2 (- (/ dicke 2) 40)))
|
|
(Setq P4A (Polar P3 A2 (+ (/ dicke 2) 40)))
|
|
(Command "_line" P1A P2A P4A P3A P1A "")
|
|
|
|
(Princ)
|
|
)
|
|
|