_

wspolrzedne, automatyczny odczyt

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Re: wspolrzedne, automatyczny odczyt

Postprzez ziele_o2k » lut 12, 2018 10:44

Tak trochę ładniej teraz będzie :)
Kod: Zaznacz cały
(defun c:wsp2csvL ( / _ss _fn _res _tmp)
  (if
    (and
      (and
        (setq _ss (ssget '((0 . "INSERT") (2 . "Blok_otwor"))))
        (setq _fn (getfiled "Utwórz plik do zapisu danych" "" "csv" 1))
        (setq _res '(("X" "Y" "Z")))
      )
    )
    (foreach % (cd:SSX_Convert _ss 0)
      (setq _res
        (cons
          (mapcar
           '(lambda (%1) (cd:CON_Real2Str %1 2 2))
            (trans (cdr (assoc 10 (entget %))) % 1)
          )
          _res
        )
      )
    )
    (princ "\nBrak zbioru wskazań lub nie utworzono pliku do zapisu danych")
  )
  (if _res
    (LM:WriteCSV (reverse _res) _fn)
  )
  (princ)
)

(defun c:wsp2csvG ( / _ss _fn _res _tmp)
  (if
    (and
      (and
        (setq _ss (ssget '((0 . "INSERT") (2 . "Blok_otwor"))))
        (setq _fn (getfiled "Utwórz plik do zapisu danych" "" "csv" 1))
        (setq _res '(("X" "Y" "Z")))
      )
    )
    (foreach % (cd:SSX_Convert _ss 0)
      (setq _res
        (cons
          (mapcar
           '(lambda (%1) (cd:CON_Real2Str %1 2 2))
            (trans (cdr (assoc 10 (entget %))) % 0)
          )
          _res
        )
      )
    )
    (princ "\nBrak zbioru wskazań lub nie utworzono pliku do zapisu danych")
  )
  (if _res
    (LM:WriteCSV (reverse _res) _fn)
  )
  (princ)
)

;; Write CSV  -  Lee Mac
;; Writes a matrix list of cell values to a CSV file.
;; lst - [lst] list of lists, sublist is row of cell values
;; csv - [str] filename of CSV file to write
;; Returns T if successful, else nil
 
(defun LM:writecsv ( lst csv / des sep )
    (if (setq des (open csv "w"))
        (progn
            (setq sep (cond ((vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList")) (",")))
            (foreach row lst (write-line (LM:lst->csv row sep) des))
            (close des)
            t
        )
    )
)
 
;; List -> CSV  -  Lee Mac
;; Concatenates a row of cell values to be written to a CSV file.
;; lst - [lst] list containing row of CSV cell values
;; sep - [str] CSV separator token
 
(defun LM:lst->csv ( lst sep )
    (if (cdr lst)
        (strcat (LM:csv-addquotes (car lst) sep) sep (LM:lst->csv (cdr lst) sep))
        (LM:csv-addquotes (car lst) sep)
    )
)
 
(defun LM:csv-addquotes ( str sep / pos )
    (cond
        (   (wcmatch str (strcat "*[`" sep "\"]*"))
            (setq pos 0)   
            (while (setq pos (vl-string-position 34 str pos))
                (setq str (vl-string-subst "\"\"" "\"" str pos)
                      pos (+ pos 2)
                )
            )
            (strcat "\"" str "\"")
        )
        (   str   )
    )
)
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 678
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Poprzednia strona

Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników