Author Topic: Export selected text to cvs, keeping colum alignment  (Read 1871 times)

0 Members and 1 Guest are viewing this topic.

T.Willey

  • Needs a day job
  • Posts: 5251
Export selected text to cvs, keeping colum alignment
« on: December 18, 2006, 12:48:30 PM »
Okay so after Tim Riley wanted an export text routine, someone at work asked for the same thing, except he wanted to keep the column location, so that means if there are five columns, and one is blank, then a blank should be placed in the csv file.  Here is how I did it, it works for a small amount of text, which worked fine for what I needed it for, but I was wondering if anyone could think of a better way.

Oh yea, forgot to mention that some of the column has two strings for it, one under the other.

Thanks in advance.

Code: [Select]
(defun c:Testing (/ ss Ent EndData CurHt MaxHt PtValList Valx xlist Valy flag EndList Opened Str cnt)

(setq ss (ssget '((0 . "TEXT"))))
(while (setq Ent (ssname ss 0))
 (setq EntData (entget Ent))
 (setq CurHt (value 40 EntData))
 (if (or (not MaxHt) (> CurHt MaxHt))
  (setq MaxHt CurHt)
 )
 (setq PtValList (cons (cons (value 10 EntData) (vl-string-translate "," ";" (value 1 EntData))) PtValList))
 (setq Valx (cadr (assoc 10 EntData)))
 (if (not (vl-position T (mapcar '(lambda (x) (equal Valx x 0.001)) xList)))
  (setq xList (cons Valx xList))
 )
 (ssdel Ent ss)
)
(setq PtValList
 (vl-sort
  PtValList
  '(lambda (a b)
   (if (equal (caar a) (caar b) 0.001)
    (> (cadar a) (cadar b))
    (< (caar a) (caar b))
   )
  )
 )
)
(foreach PtVal PtValList
 (setq flag nil)
 (setq Valy (cadar PtVal))
 (foreach PtyVal EndList
  (if (equal Valy (car PtyVal) (* 2.0 MaxHt))
   (progn
    (foreach PtxVal (cadr PtyVal)
     (if (equal (caar PtVal) (car PtxVal) 0.001)
      (progn
       (setq EndList
        (subst
         (list
          Valy
          (subst
           (cons (caar PtVal) (strcat (cdr PtxVal) " [ " (cdr PtVal) " ]"))
           PtxVal
           (cadr PtyVal)
          )
         )
         PtyVal
         EndList
        )
       )
       (setq flag T)
      )
     )
     (if (not flag)
      (progn
       (setq flag T)
       (setq EndList
        (subst
         (list
          Valy
          (cons
           (cons (caar PtVal) (cdr PtVal))
           (cadr PtyVal)
          )
         )
         PtyVal
         EndList
        )
       )
      )
     )
    )
   )
  )
 )
 (if (not flag)
  (setq EndList
   (cons
    (list
     Valy
     (list
      (cons (caar PtVal) (cdr PtVal))
     )
    )
    EndList
   )
  )
 )
)
(setq EndList (vl-sort EndList '(lambda (a b) (> (car a) (car b)))))
(setq Opened (open "c:/test/ExportedText.csv" "a"))
(foreach PtyVal EndList
 (setq cnt 0)
 (setq Str "")
 (foreach ValxVal (vl-sort (cadr PtyVal) '(lambda (a b) (< (car a) (car b))))
  (while (not (equal (car ValxVal) (nth cnt xList) 0.001))
   (setq Str (strcat Str ","))
   (setq cnt (1+ cnt))
  )
  (setq Str (strcat Str (cdr ValxVal) ","))
  (setq cnt (1+ cnt))
 )
 (write-line Str Opened)
)
(close Opened)
(princ)
)
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.