| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат привязки текста

Экспорт координат привязки текста

Ответ
Поиск в этой теме
Непрочитано 26.02.2010, 13:03 #1
Экспорт координат привязки текста
uamihanik
 
Регистрация: 26.02.2010
Сообщений: 9

Подскажите, может уже есть у кого-то такая программа, которая делает экспорт координат привязки текста в текстовый файл в таком виде -
x;y;z;содержимое
Просмотров: 3179
 
Непрочитано 26.02.2010, 13:23
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Только текст? А выбранный или весь по файлу? А многострочный текст? А форматирование многострочного текста? А таблицы? А атрибуты? А блоки с атрибутами? А для текстов в выравниванием не влево какую точку брать?
И чем не нравится _.dataextraction?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.02.2010, 14:32
#3
uamihanik


 
Регистрация: 26.02.2010
Сообщений: 9


У меня в AutoCAD 2007 такой функции нет, да и не нужно многое, мне-бы координаты и содержимое обычного текста с выравниванием влево в текстовый файл.
uamihanik вне форума  
 
Непрочитано 26.02.2010, 15:15
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Код:
[Выделить все]
(defun c:txt2file (/ *error* selset file handle)

  (defun *error* (msg)
    (vl-catch-all-apply
      (function
        (lambda ()
          (close handle)
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    (princ msg)
    (princ)
    ) ;_ end of defun

  (if (and (= (type (setq selset (vl-catch-all-apply
                                   (function
                                     (lambda ()
                                       (ssget '((0 . "TEXT")))
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                                   ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (setq file (getfiled "ResFile" "" "txt" 1))
           (/= file "")
           ) ;_ end of and
    (progn
      (setq handle (open file "w"))
      (write-line "x;y;z;contents" handle)
      (foreach item (mapcar
                      (function
                        (lambda (x / pt)
                          (setq pt (trans (cdr (assoc 10 (entget x))) x 0))
                          (mapcar (function vl-princ-to-string) (append pt (list (cdr (assoc 1 (entget x))))))
                          ) ;_ end of lambda
                        ) ;_ end of function
                      ((lambda (/ tab item)
                         (repeat (setq tab  nil
                                       item (sslength selset)
                                       ) ;_ end setq
                           (setq tab (cons (ssname selset (setq item (1- item))) tab))
                           ) ;_ end of repeat
                         ) ;_ end of lambda
                       )
                      ) ;_ end of mapcar
        (write-line
          (strcat (car item) (apply 'strcat (mapcar '(lambda (x) (strcat ";" x)) (cdr item))))
          handle
          ) ;_ end of write-line
        ) ;_ end of foreach
      (close handle)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.02.2010, 15:51
#5
uamihanik


 
Регистрация: 26.02.2010
Сообщений: 9


Спасибо за быстрый ответ, попробовал и вот что получилось

Должно быть по идее так

539365.42;5429783.12;164.91;120

А программа выдала так

539365.0;5.42978e+006;164.907;120

Можно это как-то исправить?
uamihanik вне форума  
 
Непрочитано 26.02.2010, 16:16
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Код:
[Выделить все]
(defun c:txt2file (/ *error* selset file handle)

  (defun *error* (msg)
    (vl-catch-all-apply
      (function
        (lambda ()
          (close handle)
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    (princ msg)
    (princ)
    ) ;_ end of defun

  (if (and (= (type (setq selset (vl-catch-all-apply
                                   (function
                                     (lambda ()
                                       (ssget '((0 . "TEXT")))
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                                   ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (setq file (getfiled "ResFile" "" "txt" 1))
           (/= file "")
           ) ;_ end of and
    (progn
      (setq handle (open file "w"))
      (write-line "x;y;z;contents" handle)
      (foreach item
               (mapcar
                 (function
                   (lambda (x / pt)
                     (setq pt (trans (cdr (assoc 10 (entget x))) x 0))
                     (append
                       (mapcar (function (lambda (x) (rtos x 2))) pt)
                       (list (cdr (assoc 1 (entget x))))
                       ) ;_ end of append
                     ) ;_ end of lambda
                   ) ;_ end of function
                 ((lambda (/ tab item)
                    (repeat (setq tab  nil
                                  item (sslength selset)
                                  ) ;_ end setq
                      (setq
                        tab (cons (ssname selset (setq item (1- item)))
                                  tab
                                  ) ;_ end of cons
                        ) ;_ end of setq
                      ) ;_ end of repeat
                    ) ;_ end of lambda
                  )
                 ) ;_ end of mapcar
        (write-line
          (strcat (car item)
                  (apply 'strcat
                         (mapcar '(lambda (x) (strcat ";" x)) (cdr item))
                         ) ;_ end of apply
                  ) ;_ end of strcat
          handle
          ) ;_ end of write-line
        ) ;_ end of foreach
      (close handle)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
Вроде так. Не проверял - некогда Различия выделены красным
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 26.02.2010 в 23:50.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.02.2010, 17:01
#7
uamihanik


 
Регистрация: 26.02.2010
Сообщений: 9


Теперь выдает файл без координат

x;y;z;contents
uamihanik вне форума  
 
Непрочитано 26.02.2010, 23:51
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Исправил код в #6.
---
Добавлено: для текстов с выравниванием не "BottomLeft" координаты будут возвращаться неверные!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2010, 11:50
#9
uamihanik


 
Регистрация: 26.02.2010
Сообщений: 9


Сейчас работает отлично, спасибо большое
uamihanik вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат привязки текста

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Экспорт координат из dxf в txt eilukha Вертикальные решения на базе AutoCAD 14 26.04.2008 21:53
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
экспорт текста в Word Anton_Uz AutoCAD 9 04.10.2006 14:44