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)

ACP3

Embed Size (px)

Citation preview

;;;-----------------------------------------------------------;;;-----------------------------------------------------------;;;--------------------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)")/ :")))())(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 :")))()(setq acp_dec dec2))(tipo));-------------------------------------------------------------(defun f_marc ()(if (setq td (getreal (strcat "\nTamany donut- "(rtos td)" /: ")))()(setq td 0))(tipo));-------------------------------------------------------------(defun f_text (/ ht2)(setq ht2 ht) (if (setq ht (getreal (strcat "\nAltura text : ")))() (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- :"))() (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 :")))() (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/ --> "))) (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 :") (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 :")))()(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)) "") (a-l)(setq pte (list (car pte) (- (cadr pte)1i)))(command "_.TEXT" "_j" "_bc" (list(+(car pte)3t) (cadr pte)) ht "" (strcat " 0 -" anb)) (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)4t) (cadr pte)) ht "" (substr au 1 7)) (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)5t) (cadr pte)) ht "" (substr ho 1 7)) (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)))(command "_.TEXT" "_j" "_bc" (list(+(car pte) 1t) (cadr pte)) ht "" "N") (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte) 2t) (cadr pte)) ht "" "X") (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte) 3t) (cadr pte)) ht "" "Y") (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte) 4t) (cadr pte)) ht "" "ANGLE") (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte) 5t) (cadr pte)) ht "" "DISTANCIA")(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)))(command "_.TEXT" "_j" "_bc" (list(+(car pte)1t) (cadr pte)) ht "" "BASE") (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)2t) (cadr pte)) ht "" (rtos(car xyb))) (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)3t) (cadr pte)) ht "" (rtos(cadr xyb))) (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)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" (list(+(car pte)1t) (cadr pte)) ht "" (itoa ctrn2)) (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)2t) (cadr pte)) ht "" (rtos(car (nth ctrn lpun))))(a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)3t) (cadr pte)) ht "" (rtos(cadr(nth ctrn lpun))))(a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)4t) (cadr pte)) ht "" (rtos(nth ctrn lang))) (a-l)(command "_.TEXT" "_j" "_bc" (list(+(car pte)5t) (cadr pte)) ht "" (rtos(nth ctrn ldis))) (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)))(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 nx 2 acp_dec))) (a-l) (command "_.TEXT" n3 ht "" (strcat tey (rtos ny 2 acp_dec))) (a-l) (command "_.TEXT" n4 ht "" (strcat tez (rtos nz 2 acp_dec))) (a-l) ) (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 nx 2 acp_dec))) (a-l) (command "_.TEXT" n3 ht "" (strcat tey (rtos ny 2 acp_dec))) (a-l) (setq nr4 nr3) ) ) (command "_.MOVE" conj "" nr4 pause) (setq n5 (getvar "lastpoint")));-----------------------------------------------------------------(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))) (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)) (