Sunteți pe pagina 1din 6

(defun c:cord (/ pct pctu xul yul zul

fisul numefis answeri1 numefisier cale


verif gasithelp i i1
)
;;; conservare variabile originale
(GC)
(verific1)
(verificare)
(setq gasithelp (setfunhelp
"c:cord"
"Q:/00_Schimb/Utile/Lisp/Tot2002.hlp"
"cord"
)
)
(cond ((= gasithelp nil)
(setfunhelp "c:cord" "Tot2002.hlp" "cord")
)
)
(PRINC "\n Pentru informatii apasati tasta F1")
(setq old_dimzin (getvar "dimzin"))
(setq old_cmdecho (getvar "cmdecho"))
(setq old_error *error*)
(setvar "cmdecho" 0)
;;;definirea propriei functii de tratare a erorilor
(defun *error* (msg)
(setvar "cmdecho" old_cmdecho)
(setvar "dimzin" old_dimzin)
(close fisu)
(if
(/= "Function cancelled" msg)
(if
(= msg "quit / exit abort")
(princ)
(princ (strcat "\nError: " msg))
)
(princ)
)
(setq *error* old_error)
(princ)
)
;;; modificarea variabilelor
(setvar "cmdecho" 0)
(setvar "dimzin" 0)
;;; definire fisier
(SETQ numefisier (GETSTRING "\nSPUNE-MI NUMELE FISIERULUI:"))
;;; verificare ca numele fisier sa nu fie nul
(if (= numefisier "")
;;;start if
(PROGN
(SETQ numefisier
(GETSTRING "\nTE ROG SPUNE-MI NUMELE FISIERULUI:")
)
(IF (= numefisier "")
(PROGN
(ALERT "\N NU AI INTRODUS NUMELE FISIERULUI")
(QUIT)
)
)
)
)
;;;end if
(setq cale (getvar "dwgprefix"))
(SETQ VERIF (STRCAT CALE numefisier ".txt"))
;;;verificare daca fisier exista
(IF (FINDFILE VERIF)
;;;start if verificare
(PROGN
(PRINC)
(PRINC "\nACEST NUME DE FISIER A FOST DEJA ATRIBUIT")
(setq answer (getstring "\nContinui fisierul(Y or N):<Y> ")
answer (if (= answer "")
"Y"
(strcase answer)
)
)
)
)
;;;end if verificare
(if (NOT answer)
;;;start if verificare raspuns
;;; daca fisierul nu exista
(progn
(setq fisu (open VERIF "w"))
(write-line
(strcat "Crt" "Nr.pct" "Coordonata x" "Coordonata y" "Cota z")
fisu
)
)
;;; daca fisierul exista
(PROGN
(if (= answer "Y")
;;; daca fisierul exista si se doreste a fi continuat
(progn
(setq fisu (open VERIF "a"))
)
;;; daca fisierul exista si se doreste un alt fisier sau suprascrierea
(progn
(setq numefis (getfiled
"Numele fisierului cu coordonate in care continui:"
VERIF
"txt"
1
)
fisu (open numefis "w")
)
(write-line
(strcat "Crt" "Nr.pct" "Coordonata x" "Coordonata y"
"Cota z")
fisu
)
)
)
)
)
;;;end if verificare raspuns
;;; inceput scrierea primului punct
(setq pctu (getpoint "\nAlege primul punct: ")
i (getint "\nSpune-mi numarul primului punct: ")
)
(setq xul (rtos (car pctu) 2 4)
yul (rtos (cadr pctu) 2 4)
zul (rtos (caddr pctu) 2 4)
i1 (itoa i)
)

(verificarel)
;;;rutina
;;; inceput scriere primul punct
(write-line
(strcat "Pct" i1 xul yul zul)
fisu
)
;;; sfarsit scriere primul punct
(setq pct pctu)
;;; inceput bucla
(while
;;; conditie bucla
(and (/= (setq pctu
(progn
(initget "End")
(getpoint
pct
(strcat "\nAlege punctul nr. " (itoa (1+ i)) "(End): ")
)
)
)
"End"
)
(/= pctu nil)
)
;;; conditie bucla
(setq xul (rtos (car pctu) 2 4)
yul (rtos (cadr pctu) 2 4)
zul (rtos (caddr pctu) 2 4)
i (1+ i)
i1 (itoa i)
)
(VERIFICAREl)
;;;rutina
;;;inceput scriere punct
(write-line
(strcat "Pct" i1 xul yul zul)
fisu
)
;;;sfarsit scriere punct
(setq pct pctu)
)
;;; sfarsit bucla
(close fisu)
;;; restabilirea vechilor variabile
(setvar "dimzin" old_dimzin)
(setq *error* old_error)
(setvar "cmdecho" old_cmdecho)
(GC)
(princ)
(PRINc)
)
;;;rutina pentru verificarea lugimilor nr punct si coordonate x,y,z
(defun VERIFICAREl (/ lungime1 lungime2 lungime3 lungime4)
(setq lungime1 (strlen xul))
(if (= lungime1 0)
(setq xul " ")
)
(if (= lungime1 1)
(setq xul (strcat " " xul))
)
(if (= lungime1 2)
(setq xul (strcat " " xul))
)
(if (= lungime1 3)
(setq xul (strcat " " xul))
)
(if (= lungime1 4)
(setq xul (strcat " " xul))
)
(if (= lungime1 5)
(setq xul (strcat " " xul))
)
(if (= lungime1 6)
(setq xul (strcat " " xul))
)
(if (= lungime1 7)
(setq xul (strcat " " xul))
)
(if (= lungime1 8)
(setq xul (strcat " " xul))
)
(if (= lungime1 9)
(setq xul (strcat " " xul))
)
(if (= lungime1 10)
(setq xul (strcat " " xul))
)
(if (= lungime1 11)
(setq xul (strcat " " xul))
)
(if (= lungime1 12)
(setq xul xul)
)
(setq lungime2 (strlen yul))
(if (= lungime2 0)
(setq yul " ")
)
(if (= lungime2 1)
(setq yul (strcat " " yul))
)
(if (= lungime2 2)
(setq yul (strcat " " yul))
)
(if (= lungime2 3)
(setq yul (strcat " " yul))
)
(if (= lungime2 4)
(setq yul (strcat " " yul))
)
(if (= lungime2 5)
(setq yul (strcat " " yul))
)
(if (= lungime2 6)
(setq yul (strcat " " yul))
)
(if (= lungime2 7)
(setq yul (strcat " " yul))
)
(if (= lungime2 8)
(setq yul (strcat " " yul))
)
(if (= lungime2 9)
(setq yul (strcat " " yul))
)
(if (= lungime2 10)
(setq yul (strcat " " yul))
)
(if (= lungime2 11)
(setq yul (strcat " " yul))
)
(if (= lungime1 12)
(setq yul yul)
)
(setq lungime3 (strlen zul))
(if (= lungime3 0)
(setq zul " ")
)
(if (= lungime3 1)
(setq zul (strcat " " zul))
)
(if (= lungime3 2)
(setq zul (strcat " " zul))
)
(if (= lungime3 3)
(setq zul (strcat " " xul))
)
(if (= lungime3 4)
(setq zul (strcat " " zul))
)
(if (= lungime3 5)
(setq zul (strcat " " zul))
)
(if (= lungime3 6)
(setq zul (strcat " " zul))
)
(if (= lungime3 7)
(setq zul (strcat " " zul))
)
(if (= lungime3 8)
(setq zul zul)
)

(setq lungime4 (strlen i1))


(if (= lungime4 0)
(setq i1 " ")
)
(if (= lungime4 1)
(setq i1 (strcat " " i1))
)
(if (= lungime4 2)
(setq i1 (strcat " " i1))
)
(if (= lungime4 3)
(setq i1 (strcat " " I1))
)
(if (= lungime4 4)
(setq i1 (strcat " " i1))
)
(if (= lungime4 5)
(setq i1 (strcat " " i1))
)
(if (= lungime4 6)
(setq i1 i1)
)

S-ar putea să vă placă și