cg-Cad

Lisp »Tips 'n Tricks »TXT »1 »2 »3

LTXT

;|

  LTXT.LSP Copyright (C) 2004 Claudio Piccini.
  All rights reserved

  www.cg-cad.com

  Salva su file TXT le coordinate x,y,z dei punti
  estremi delle linee presenti su un layer

|;

(defun myerror (s)                  
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  )
 (ripVar)
 (princ)
)

(defun salVar ()
 (setq orto (getvar "orthomode"))
 (setq snapp (getvar "osmode"))
 (setq snm (getvar "snapmode"))
 (setq piano (getvar "clayer"))  
 (setq nomeDir (getvar "dwgprefix"))
)

(defun ripVar ()
 (command "_redraw")
 (setvar "cmdecho" 1)
 (setvar "osmode" snapp)
 (setvar "snapmode" snm)
 (setvar "orthomode" orto)
 (setvar "clayer" piano)
 (setvar "cecolor" "BYLAYER")
 (setq *error* olderr)
 (princ)
)

(defun C:LTXT (/ olderr s1 nEnt nomeLayer 
                 k ent l1 l2 pl1 pl2
                 snapp snm orto piano nomeDir 
                 nomefile f1
 )
 (setq olderr *error* *error* myerror)
 (setvar "cmdecho" 0)
 (salVar)
 (setq nomefile (getstring 50 "\n Nome del file (con estensione .txt): "))
 (if (/= nomefile "")
  (progn
   (setq nomefile (strcat nomeDir nomefile))
   (if (/= (findfile nomefile) nil)
    (progn
     (initget "S s N n")
     (setq ar (getkword "\n Il file esiste gia', sostituire ? (S/N) <S>: "))
     (cond
      ((or (= ar "S")(= ar "s")) (setq ar "S")) 
      ((or (= ar "N")(= ar "n")) (setq ar "N")) 
      (T (setq ar "S"))
     )
     (if (= ar "S")
      (setq f1 (open nomefile "w"))
      (progn
       (setq f1 (open nomefile "a"))
       (princ "\n" f1)
      )
     )
    )
    (setq f1 (open nomefile "w"))
   )
   (command "osnap" "_nea")
   (setq s1 (entsel "\n Seleziona una linea di riferimento:"))
   (setq ent (entget (car s1)))
   (setq nomeLayer (cdr (assoc 8 ent)))
   (setq s1 (ssget "X" (list (cons 8 nomeLayer))))
   (setq nEnt (sslength s1))
   (setq k 0)
   (repeat nEnt
    (setq ent (entget (ssname s1 k)))
    (if (= "LINE" (cdr (assoc 0 ent)))
     (progn
      (setq l1 (assoc 10 ent))
      (setq l2 (assoc 11 ent))
      (setq pl1 (cdr l1))
      (princ pl1 f1)
      (setq pl2 (cdr l2))
      (princ pl2 f1)
      (princ "\n" f1)
     )
    )
    (setq k (+ k 1))
   )
   (close f1)
  )
 )
 (ripVar)
)
;;;eof

Test del lisp

Command: ltxt
Nome del file (con estensione .txt): linee.txt
Seleziona una linea di riferimento: pick su una linea rossa

Command: ltxt
Nome del file (con estensione .txt): linee.txt
Il file esiste gia', sostituire ? (S/N) <S>: n (per aggiungere in coda al file)
Seleziona una linea di riferimento: pick su una linea bianca

Output: linee.txt

(736.034 688.565 0.0)(526.726 482.766 0.0)
(243.742 772.224 0.0)(736.034 688.565 0.0)
(293.976 287.005 0.0)(243.742 772.224 0.0)
(427.933 399.107 0.0)(293.976 287.005 0.0)
(46.156 655.102 0.0)(427.933 399.107 0.0)

(240.85 873.488 0.0)(1052.64 459.276 0.0)
(590.132 353.806 0.0)(1085.27 810.206 0.0)
(626.595 645.288 0.0)(801.236 292.441 0.0)

LTXT.LSP

PTXT

;|

  PTXT.LSP Copyright (C) 2004 Claudio Piccini.
  All rights reserved

  www.cg-cad.com

  Salva su file TXT le coordinate x,y,z dei punti
  presenti su un layer

|;

(defun myerror (s)                  
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  )
 (ripVar)
 (princ)
)

(defun salVar ()
 (setq orto (getvar "orthomode"))
 (setq snapp (getvar "osmode"))
 (setq snm (getvar "snapmode"))
 (setq piano (getvar "clayer"))  
 (setq nomeDir (getvar "dwgprefix"))
)

(defun ripVar ()
 (command "_redraw")
 (setvar "cmdecho" 1)
 (setvar "osmode" snapp)
 (setvar "snapmode" snm)
 (setvar "orthomode" orto)
 (setvar "clayer" piano)
 (setvar "cecolor" "BYLAYER")
 (setq *error* olderr)
 (princ)
)

(defun C:PTXT (/ olderr s1 nEnt nomeLayer 
                 k ent l1 pl1
                 snapp snm orto piano nomeDir 
                 nomefile f1
 )
 (setq olderr *error* *error* myerror)
 (setvar "cmdecho" 0)
 (salVar)
 (setq nomefile (getstring 50 "\n Nome del file (con estensione .txt): "))
 (if (/= nomefile "")
  (progn
   (setq nomefile (strcat nomeDir nomefile))
   (if (/= (findfile nomefile) nil)
    (progn
     (initget "S s N n")
     (setq ar (getkword "\n Il file esiste gia', sostituire ? (S/N) <S>: "))
     (cond
      ((or (= ar "S")(= ar "s")) (setq ar "S")) 
      ((or (= ar "N")(= ar "n")) (setq ar "N")) 
      (T (setq ar "S"))
     )
     (if (= ar "S")
      (setq f1 (open nomefile "w"))
      (progn
       (setq f1 (open nomefile "a"))
       (princ "\n" f1)
      )
     )
    )
    (setq f1 (open nomefile "w"))
   )
   (command "osnap" "_nea")
   (setq s1 (entsel "\n Seleziona un punto di riferimento:"))
   (setq ent (entget (car s1)))
   (setq nomeLayer (cdr (assoc 8 ent)))
   (setq s1 (ssget "X" (list (cons 8 nomeLayer))))
   (setq nEnt (sslength s1))
   (setq k 0)
   (repeat nEnt
    (setq ent (entget (ssname s1 k)))
    (if (= "POINT" (cdr (assoc 0 ent)))
     (progn
      (setq l1 (assoc 10 ent))
      ;(setq l2 (assoc 11 ent))
      (setq pl1 (cdr l1))
      (princ pl1 f1)
      ;(setq pl2 (cdr l2))
      ;(princ pl2 f1)
      (princ "\n" f1)
     )
    )
    (setq k (+ k 1))
   )
   (close f1)
  )
 )
 (ripVar)
)
;;;eof

Output: punti.txt

(731.027 856.219 0.0)
(669.072 879.643 0.0)
(654.002 819.409 0.0)
(632.234 919.799 0.0)
(528.418 886.336 0.0)
(582.0 844.507 0.0)
(503.301 812.716 0.0)

Lisp »Tips 'n Tricks

Ultimo Aggiornamento_Last Update: 11 Dicembre 2004