You are on page 1of 10

;;;----------------------------------------------------------;;;----------------------------------------------------------;;;--------------------ACP.

LSP-------------------------------;;;----------------------------------------------------------;;;
;;; Aquest lisp senyalant un punt escriu les seves coordenades,
;;; en el dibuix.
;;; Per Jaume Pla Torra
;;; 27.NOV.92
;;; 26.mar.94
;;;
;;;-------------------PROGRAMA-------------------------------;;;
(defun c:acp (/ osm blp htf acp_ver acp_err olderr mlst
tip-n unctr anb ho au ii sd si id n5
nx ny nz n2 n3 n4 nr2 nr3 nr4 ncon lpun2 temp ctrbas)
;(acp_dec op-ctr tex tey tez co-z ht td )
(graphscr)
(setq acp_ver "2.3 (v12)")
;------------------------------------------------------------(defun MODES (a)
(setq MLST '
())
(repeat (length a)
(setq MLST (append MLST (list (list (car a) (getvar (car a))))))
(setq a (cdr a))
)
)
;;;----------------------------------------------------------(defun MODER ()
(repeat (length MLST)
(setvar (caar MLST) (cadar MLST))
(setq MLST (cdr MLST))
)
)
;------------------------------------------------------------(defun acp_err (st)
(if (/= st "Function cancelled")
(if(= st "quit / exit abort")(exit)
(princ (strcat "\nError: " st))
))
(if (and (/= htf 0) (boundp 'htf))
(command "_.STYLE" "" "" htf "" "" "" "")
)
(command "_.UNDO" "_END")
(if olderr (setq *error* olderr))
(moder)
(princ)
)
;-----------------------------------------------------------(if *error*
(setq olderr *error* *error* acp_err)
(setq *error* acp_err))
;------------------------------------------------------------(modes '("CMDECHO" "BLIPMODE" "OSMODE" "PICKBOX"))
(command "_.UNDO" "_group")
(setvar "CMDECHO" 0)

(if (= acp_dec nil)(setq acp_dec (getvar "LUPREC")))


(if (= co-z nil)(setq co-z "No"))
(if (= tex nil)(setq tex " x: "))
(if (= tey nil)(setq tey " y: "))
(if (= tez nil)(setq tez " z: "))
(if (= ht nil)(setq ht (getvar "TEXTSIZE")))
(if (= td nil)(setq td (* ht 0.35)))
(if (= op-ctr nil)(setq op-ctr "Numeracio"))
(setq ncon 0)
(setq osm (getvar "OSMODE") blp (getvar "BLIPMODE"))
(princ(strcat "\nACP, Versi "acp_ver", JPT (C) 1994 "))
(styl)
(p-angu)
(princ (strcat "\nSentit "ho "---" anb "--- Graus " au))
(tipo-a)
(final)
)
;;;;--------------------------------------------------------(defun p-angu ()
(if (= (getvar "ANGDIR") 1)(setq ho "HORARI ")
(setq ho "ANTI-HORARI "))
(cond
((equal (getvar "ANGBASE") 0.00 0.01) (setq anb " EST " ) )
((equal (getvar "ANGBASE") 1.57 0.01) (setq anb " NORT ") )
((equal (getvar "ANGBASE") 3.14 0.01) (setq anb " OEST ") )
((equal (getvar "ANGBASE") 4.71 0.01) (setq anb " SUD " ) )
( T (setq anb " OTRA ") )
)
(cond
((= (getvar "AUNITS") 0)(setq au "SEXAGESIMALS"))
((= (getvar "AUNITS") 1)(setq au "GR/MIN/SEG" ))
((= (getvar "AUNITS") 2)(setq au "CENTESIMALS" ))
((= (getvar "AUNITS") 3)(setq au "RADIANS"
))
((= (getvar "AUNITS") 4)(setq au "GEODESICS" ))
)
)
;;;;--------------------------------------------------------(defun final ()
(if (and (/= htf 0) (boundp 'htf))
(command "_.STYLE" "" "" htf "" "" "" "")
)
(command "_.UNDO""_end")
(moder)
(if olderr (setq *error* olderr) )
(princ)
)
;-----------------------------------------------------------(defun tipo (/ tip)
(initget "Base N Marca Z Decimal Altura Text Continuar")
(if (setq tip (getkword
(strcat
"\nText /Marca ("(rtos td 2 2)") /Decimal ("(itoa acp_dec)") /Continuar "
"/Base /Z-("co-z") /Altura ("(rtos ht 2 2)")
/Num...("(substr op-ctr 1 3)")/ <TORNAR>:")))
())
(if (= tip "Marca")(f_marc) )

(if (= tip "Decimal")(f_deci) )


(if (= tip "Z")(coo-z) )
(if (= tip "N")(f_n) )
(if (= tip "Altura")(f_text) )
(if (= tip "Text")(f_cadn) )
(if (= tip "Continuar")(f_prim) )
(if (= tip "Base")(f_base) )
)
;------------------------------------------------------------(defun f_prim ()
(initget 6)
(cond
((= unctr 1)
(if (setq ncon (getint
"\nUltim numero de la serie anterior: "))()
(setq ncon 0)
)
(setq unctr (1+ ncon))
)
((/= unctr 1)
(princ "\nAQUESTA OPCIO NOMES ES DISPONIBLE ABANS DEL PRIMER PUNT.\n")
)
)
(tipo)
)
;------------------------------------------------------------(defun f_deci (/ dec2)
(setq dec2 acp_dec)
(if (setq acp_dec (getint (strcat
"\nN de decimals <"(itoa acp_dec)">:")))()
(setq acp_dec dec2))
(tipo)
)
;------------------------------------------------------------(defun f_marc ()
(if (setq td (getreal (strcat
"\nTamany donut- "(rtos td)" /<ELIMINAR>: ")))()
(setq td 0))
(tipo)
)
;------------------------------------------------------------(defun f_text (/ ht2)
(setq ht2 ht)
(if (setq ht (getreal (strcat
"\nAltura text <"(rtos ht)">: ")))()
(setq ht ht2)
)
(if (/= td 0)(setq td (* ht 0.35)))
(tipo)
)
;------------------------------------------------------------(defun coo-z ()
(initget 6 "Si No Yes")
(if (setq co-z (getkword "Incloure coordenada Z- <No>:"))()
(setq co-z "No"))
(if (or (= co-z "Si")(= co-z "Yes"))
(setq co-z "Si"))
(tipo)
)
;--------------------------------------------------------------

(defun f_n (/ op-ctr2)


(if (= op-ctr "Coordenades")
(setq op-ctr2 "Numeracio")(setq op-ctr2 "Coordenades"))
(initget "Coordenades Numeracio")
(if (setq op-ctr (getkword
(strcat "Escriure -- "op-ctr" o <"(strcase op-ctr2 nil)">:")))()
(setq op-ctr op-ctr2))
(tipo)
)
;-------------------------------------------------------------(defun f_cadn ()
(setq tex (getstring T (strcat "\nText x -> ("tex"): ")))
(setq tey (getstring T (strcat "\nText y -> ("tey"): ")))
(if (= co-z "Si")
(setq tez (getstring T (strcat "\nText z -> ("tez"): "))))
(tipo)
)
;-------------------------------------------------------------(defun styl (/ stil tstil)
(setq stil(getvar "TEXTSTYLE"))
(setq tstil (tblsearch "STYLE" stil))
(setq htf (cdr(assoc 40 tstil)))
(cond ((/= htf 0)
(command "_.STYLE" "" "" "0" "" "" "" "")
)
)
)
;-------------------------------------------------------------(defun a-l ()
(if (boundp 'conj)
(setq conj (ssadd (entlast) conj))
(setq conj (ssadd (entlast)) )
)
)
;;;;--------------------------------------------------------(defun tipo-a (/ tip-n)
(graphscr)
(setq temp T)(setq unctr 1)
(setq lpun2 lpun)(setq lpun '() )
(while temp
(if(= lpun '()) (initget 7 "Opcions Undo")
(initget 6 "Opcions Undo ")
)
(setq tip-n (getpoint
(strcat
"\nOpcions ("(substr op-ctr 1 3)") / Undo/ <PUNT "(itoa unctr)"> --> ")))
(cond
((= tip-n "Opcions")(tipo))
((= tip-n "Undo")(f_undo) )
((null tip-n)(setq temp nil))
((= temp T)
(f_punt)
(setq lpun (cons tip-n lpun))
(setq unctr (1+ unctr))
)
)
)
(if (= lpun nil)(setq ctrbas T))
(cond
((= ctrbas nil)

(if (= op-ctr "Coordenades")


(progn (initget "Si Yes")
(if (getkword "\nFer cuadre de coordenades <No>:")
(progn (princ "\nCUADRE DE COORDENADES")(cal-dis))
)
)
(progn (princ "\nCUADRE DE COORDENADES")(cal-dis))
)
)
)
)
;-------------------------------------------------------------(defun f_punt ()
(prin1 tip-n)
(command "_.UNDO""_m")
(cond ((= op-ctr "Coordenades") (escr2)(line2)
)
((= op-ctr "Numeracio") (escr-c)
)
)
(if (/= td 0)(command "_.donut" 0 td tip-n ""))
(command)
(setvar "OSMODE" osm)
(setvar "BLIPMODE" blp)
)
;-----------UNDO-----------------------------------------------(defun f_undo ()
(if (> unctr (+ 1 ncon))
(progn
(command "_.UNDO""_B")
(setq unctr(- unctr 1))
(setq lpun (cdr lpun))
)
(progn
(princ "\nRES PER UNDO.")
)
)
)
;------------------------------------------------------------(defun f_base ()
(setq ctrbas T)
(if (= lpun2 nil)
(progn
(princ "\nNO HI HA LLISTA DE PUNTS.")
(setq temp nil)
)
(progn
(princ "\nCUADRE DE COORDENADES A PARTIR DE L'ULTIMA SELECCIO:")
(setq lpun lpun2)
(setq lpun(reverse lpun))
(setq temp nil)
(cal-dis)
)
)
)
;-------------------------------------------------------------(defun cal-dis (/ ldis xyb1 ctrn)
(if (= xyb nil)(setq xyb (list 0 0 0)))
(setq xyb1 xyb)
(if (setq xyb (getpoint (strcat

"\nPunt base <"(rtos (car xyb))","(rtos (cadr xyb))","(rtos (caddr xyb))">:")))


()(setq xyb xyb1))
(setq ldis '() ) (setq ctrn 0)
(repeat (length lpun)
(setq ldis (cons (distance xyb (nth ctrn lpun)) ldis))
(setq ctrn (+ ctrn 1))
)
(cal-ang)
)
;-------------------------------------------------------------(defun cal-ang (/ lang ctrn angu)
(setq ctrn 0)
(cond
((= (getvar "AUNITS") 0) ;graus sexagesimals
(repeat (length lpun)
(setq angu (angle xyb (nth ctrn lpun)))
(setq angu (/ (* angu 180.0) PI))
(setq ctrn (+ ctrn 1))
(cond
((equal (getvar "ANGBASE") 0.00 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (- 360 angu)))
)
((equal (getvar "ANGBASE") 1.57 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 360 angu)90))
(setq angu (+ 270 angu)))
)
((equal (getvar "ANGBASE") 3.14 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 360 angu)180))
(setq angu (+ 180 angu)))
)
((equal (getvar "ANGBASE") 4.71 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 360 angu)270))
(setq angu (+ 90 angu)))
)
)
(if (>= angu 360)(setq angu (- angu 360)))
(setq lang (cons angu lang))
)
)
((= (getvar "AUNITS") 2) ;graus centesimals
(repeat (length lpun)
(setq angu (angle xyb (nth ctrn lpun)))
(setq angu (/ (* angu 200.0) PI))
(setq ctrn (+ ctrn 1))
(cond
((equal (getvar "ANGBASE") 0.00 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (- 400 angu)))
)
((equal (getvar "ANGBASE") 1.57 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 400 angu)100))
(setq angu (+ 300 angu)))
)
((equal (getvar "ANGBASE") 3.14 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 400 angu)200))
(setq angu (+ 200 angu)))
)
((equal (getvar "ANGBASE") 4.71 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(- 400 angu)300))
(setq angu (+ 100 angu)))

)
)
(if (>= angu 400)(setq angu (- angu 400)))
(setq lang (cons angu lang))
)
)
((= (getvar "AUNITS") 3) ;radians
(repeat (length lpun)
(setq angu (angle xyb (nth ctrn lpun)))
(setq ctrn (+ ctrn 1))
(cond
((equal (getvar "ANGBASE") 0.00 0.01)
(if (= (getvar "ANGDIR")1)(setq angu(-(* 2 pi)angu)))
)
((equal (getvar "ANGBASE") 1.57 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(-(* 2 pi)angu)(/ pi 2)))
(setq angu (+(/(* 3 pi)2)angu)))
)
((equal (getvar "ANGBASE") 3.14 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(-(* 2 pi)angu)(* pi 1)))
(setq angu (+(* pi 1)angu)))
)
((equal (getvar "ANGBASE") 4.71 0.01)
(if (= (getvar "ANGDIR") 1)(setq angu (+(-(* 2 pi)angu)(/(* 3 pi)2)))
(setq angu (+(/ pi 2)angu)))
)
)
(if (>= angu (* 2 PI))(setq angu (- angu (* 2 PI))))
(setq lang (cons angu lang))
)
)
((or(= (getvar "AUNITS") 1) (= (getvar "AUNITS") 4))
(repeat (length lpun)
(setq lang (cons '0 lang))
)
)
)
(princ "\nEscrivint...")
(p-angu)
(escr-a)
)
;-------------------------------------------------------------(defun escr-a (/ ctrn2 conj pte pte1 m 1t 2t 3t 4t 5t
m lf 1i 2i lv1 lv2 lv3 lv4)
(setq pte (getvar "VIEWCTR"))
(setq pte1 pte)
(setq ctrn2 (1+ ncon))
(setq ctrn 0)
(setvar "blipmode" 0) (setvar "osmode" 0)
(setq lpun (reverse lpun))
(setq m (* 10 ht))
(setq 1t (/ m 4) 2t m 3t (* m 2) 4t (* m 3) 5t (* m 4)
lf (* m 4.5) 1i (* ht 2) 2i (* ht 0.5)
lv1 (/ m 2) lv2 (* m 1.5) lv3 (* m 2.5) lv4 (* m 3.5)
)
(command "_.LINE" pte (list(+(car pte)lf) (cadr pte)) "")
-l)
(setq pte (list (car pte) (- (cadr pte)1i)))

(a

(command "_.TEXT" "_j" "_bc"


" anb)) (a-l)
(command "_.TEXT" "_j" "_bc"
7)) (a-l)
(command "_.TEXT" "_j" "_bc"
7)) (a-l)
(setq pte (list (car pte) (-

(list(+(car pte)3t) (cadr pte)) ht "" (strcat " 0 (list(+(car pte)4t) (cadr pte)) ht "" (substr au 1
(list(+(car pte)5t) (cadr pte)) ht "" (substr ho 1
(cadr pte)2i)))

(command "_.LINE" pte (list(+(car pte) lf) (cadr pte)) "")


(setq pte (list (car pte) (- (cadr pte) 1i)))
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
(a-l)
(setq pte (list (car pte) (-

(a-l)

(list(+(car pte) 1t) (cadr pte)) ht "" "N")


(list(+(car pte) 2t) (cadr pte)) ht "" "X")
(list(+(car pte) 3t) (cadr pte)) ht "" "Y")
(list(+(car pte) 4t) (cadr pte)) ht "" "ANGLE")
(list(+(car pte) 5t) (cadr pte)) ht "" "DISTANCIA")
(cadr pte) 2i)))

(command "_.LINE" pte (list(+(car pte)lf) (cadr pte)) "")


(a-l)
(setq pte (list (car pte) (- (cadr pte)1i)))
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
))) (a-l)
(command "_.TEXT" "_j" "_bc"
b))) (a-l)
(setq pte (list (car pte) (-

(list(+(car pte)1t) (cadr pte)) ht "" "BASE")


(list(+(car pte)2t) (cadr pte)) ht "" (rtos(car xyb
(list(+(car pte)3t) (cadr pte)) ht "" (rtos(cadr xy
(cadr pte)2i)))

(command "_.LINE" pte (list(+(car pte) lf)(cadr pte)) "")


(a-l)
(setq pte (list (car pte) (- (cadr pte)2i)))
(command "_.LINE" pte (list(+(car pte) lf)(cadr pte)) "")
(a-l)
(setq pte (list (car pte) (- (cadr pte)1i)))
(repeat (length lpun)
(command "_.TEXT" "_j" "_bc"
(a-l)
(command "_.TEXT" "_j" "_bc"
h ctrn lpun))))(a-l)
(command "_.TEXT" "_j" "_bc"
h ctrn lpun))))(a-l)
(command "_.TEXT" "_j" "_bc"
n lang)))
(a-l)
(command "_.TEXT" "_j" "_bc"
n ldis)))
(a-l)
(setq pte (list (car pte) (-

(list(+(car pte)1t) (cadr pte)) ht "" (itoa ctrn2))


(list(+(car pte)2t) (cadr pte)) ht "" (rtos(car (nt
(list(+(car pte)3t) (cadr pte)) ht "" (rtos(cadr(nt
(list(+(car pte)4t) (cadr pte)) ht "" (rtos(nth ctr
(list(+(car pte)5t) (cadr pte)) ht "" (rtos(nth ctr
(cadr pte)2i)))

(command "_.LINE" pte (list(+(car pte) lf)(cadr pte)) "")


(setq pte (list (car pte) (- (cadr pte)1i)))

(a-l)

(setq ctrn (+ 1 ctrn))


(setq ctrn2 (+ 1 ctrn2))
)
(setq pte (list (car pte) (+ (cadr pte)1i)))
(command "_.LINE" pte1 pte "")
(a-l)
(command "_.LINE" (list(+(car pte1) lv1) (cadr pte1))
(list(+(car pte) lv1) (cadr pte)) "")
(a-l)
(command "_.LINE" (list(+(car pte1) lv2) (cadr pte1))
(list(+(car pte) lv2) (cadr pte)) "")
(a-l)
(command "_.LINE" (list(+(car pte1) lv3) (cadr pte1))
(list(+(car pte) lv3) (cadr pte)) "")
(a-l)
(command "_.LINE" (list(+(car pte1) lv4) (cadr pte1))
(list(+(car pte) lv4) (cadr pte)) "")
(a-l)
(command "_.LINE" (list(+(car pte1) lf) (cadr pte1))
(list(+(car pte) lf) (cadr pte)) "")
(a-l)
(setvar "OSMODE" osm)
(command "_.MOVE" conj "" (list(+(car pte1) lv3) (cadr pte1)) pause)
(redraw)
)
;-----------------------------------------------------------(defun escr-c ()
(setvar "OSMODE" 0) (setvar "BLIPMODE" 0)
(command "_.TEXT" "_j" "_mc" tip-n ht "" (itoa unctr))
(command "_.MOVE" "_last" "" tip-n pause)
(setq n5 (getvar "lastpoint"))
(command "_.CIRCLE" n5 (* ht 1.35) )
(command "_.LINE" tip-n
(polar tip-n (angle tip-n n5)(-(distance n5 tip-n)(* ht 1.35))) "")
)
;-----------------------------------------------------------(defun escr2 (/ conj )
(setq nx (car tip-n) ny (cadr tip-n) nz (caddr tip-n))
(setq osm (getvar "OSMODE") blp (getvar "BLIPMODE"))
(setvar "OSMODE" 0) (setvar "BLIPMODE" 0)
(if (= co-z "Si")
(progn
(setq n2 (list nx (+ ny (* ht 3)) nz))
(setq n3 (list nx (+ ny (* ht 1.5)) nz))
(setq n4 tip-n)
(setq nr2 (list nx (+ ny (* ht 3) ht) nz))
(setq nr3 (list nx (+ ny (* ht 1.5)) nz))
(setq nr4 tip-n)
(command "_.TEXT" n2 ht "" (strcat tex (rtos
(command "_.TEXT" n3 ht "" (strcat tey (rtos
(command "_.TEXT" n4 ht "" (strcat tez (rtos
)
(progn
(setq n2 (list nx (+ ny (* ht 1.5)) nz))
(setq n3 tip-n)
(setq nr2 (list nx (+ ny (* ht 1.5) ht) nz))
(setq nr3 tip-n)
(command "_.TEXT" n2 ht "" (strcat tex (rtos
(command "_.TEXT" n3 ht "" (strcat tey (rtos
(setq nr4 nr3)
)
)
(command "_.MOVE" conj "" nr4 pause)
(setq n5 (getvar "lastpoint"))

nx 2 acp_dec))) (a-l)
ny 2 acp_dec))) (a-l)
nz 2 acp_dec))) (a-l)

nx 2 acp_dec))) (a-l)
ny 2 acp_dec))) (a-l)

)
;----------------------------------------------------------------(defun line2 ()
(if (= co-z "Si")
(command "_.LINE" n5 (list (car n5) (+ (cadr n5)(* ht 3) ht) ) "")
(command "_.LINE" n5 (list (car n5) (+ (cadr n5)(* ht 1.5) ht) ) "")
)
(cond
((and (<= (car tip-n)(car n5)) (<= (cadr tip-n)(cadr n5)))
(command "_.LINE" tip-n n5 "")
)
((and (< (car tip-n)(car n5)) (> (cadr tip-n)(cadr n5)))
(if (= co-z "Si")
(setq n5 (list(car n5)(+ (cadr n5)(* ht 3) ht)(caddr n5)))
(setq n5 (list(car n5)(+ (cadr n5)(* ht 1.5) ht)(caddr n5)))
)
(command "_.LINE" tip-n n5 "")
)
((and (>= (car tip-n)(car n5)) (> (cadr tip-n)(cadr n5)))
(if (= co-z "Si")
(setq n5 (list(car n5)(+ (cadr n5)(* ht 3) ht)(caddr n5)))
(setq n5 (list(car n5)(+ (cadr n5)(* ht 1.5) ht)(caddr n5)))
)
(command "_.LINE" tip-n n5 "")
)
((and (> (car tip-n)(car n5)) (<= (cadr tip-n)(cadr n5)))
(command "_.LINE" tip-n n5 "")
)
)
)
;-----------------------------------------------------------(princ "\nEscriu coordenades d'un punt. Activar amb ACP")

You might also like