Раскажите как сделать макрос (Тахеометр-Autocad)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Раскажите как сделать макрос (Тахеометр-Autocad)

Раскажите как сделать макрос (Тахеометр-Autocad)

Ответ
Поиск в этой теме
Непрочитано 29.06.2006, 01:44 #1
Раскажите как сделать макрос (Тахеометр-Autocad)
Valer77
 
Spb
Регистрация: 29.06.2006
Сообщений: 1

Всем привет.
Вопрос: есть файл такого вида
-----------
00011:пример1:

00022:ST1:+00000000.000:+00000000.000:+00000000.000:

00032:1:+00000043.193:-00000001.790:+00000011.599:

00042:2:+00000043.198:-00000001.784:+00000014.684:

00052:3:+00000042.590:-00000005.222:+00000014.695:

00062:4:+00000042.568:-00000005.229:+00000011.579:

00072:5:+00000041.776:-00000009.627:+00000003.700:

---------
как из него макросами или еще какими методами сделать файл следующего содержания:
---------
x1,y1,z1
x2,y2,z2
x3,y3,z3
---------

Пасиб.
Просмотров: 3592
 
Непрочитано 11.07.2006, 08:29
#2
Александр II

инженер
 
Регистрация: 17.05.2006
Дубна
Сообщений: 12


Если тебе графика не нужна сделай это в EXEL. Я сам сталкивался с такой проблемой преобразования текстового формата в табличный другого формата. Использовал EXEL меньше проблем. Или напиши на чем попроще Pascal, Basic и т.д.
Александр II вне форума  
 
Непрочитано 12.07.2006, 15:53
#3
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Я совершенно не знаю что это за тахаометр такой,
но вдруг поможет:
Код:
[Выделить все]
;; преобразование каждой строки в список без разделителей :
(defun conv_tax	(str / elem next pos1 pos2 tmp)
  (while (/= str "")
    (setq pos1 (vl-string-position (ascii ":") str))
    (setq next (substr str (+ 2 pos1)))
    (setq pos2 (vl-string-position (ascii ":") next))
    (setq elem (substr next 1 pos2))
    (setq tmp (cons elem tmp))
    (setq str next)
  )
  (vl-remove "" (reverse tmp))
)
;; обработка всего списка данных :
(defun tax (/ res_list tax_list tmp)
  (setq	tax_list
	 '("00022:ST1:+00000000.000:+00000000.000:+00000000.000:"
	   "00032:1:+00000043.193:-00000001.790:+00000011.599:"
	   "00042:2:+00000043.198:-00000001.784:+00000014.684:"
	   "00052:3:+00000042.590:-00000005.222:+00000014.695:"
	   "00062:4:+00000042.568:-00000005.229:+00000011.579:"
	   "00072:5:+00000041.776:-00000009.627:+00000003.700:")
  )
  (foreach str tax_list
    (setq tmp (conv_tax str))
    (setq res_list (cons tmp res_list))
  )
  (setq res_list (reverse res_list))
)
;; результирующую список можно получить так :
;; (setq result (tax))
;; получим список следующего вида :
;; '(("ST1" "+00000000.000" "+00000000.000" "+00000000.000")
;; ("1" "+00000043.193" "-00000001.790" "+00000011.599")
;; ("2" "+00000043.198" "-00000001.784" "+00000014.684")
;; ("3" "+00000042.590" "-00000005.222" "+00000014.695")
;; ("4" "+00000042.568" "-00000005.229" "+00000011.579")
;; ("5" "+00000041.776" "-00000009.627" "+00000003.700"))

;; такой список совершенно съедобен для Автокада, пример :
;; построим точки по этому списку и подпишем их :
(defun C:demo()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "pdmode" 34)
(setvar "pdsize" 0.25)
(setvar "textsize" 0.5)
(setq result (tax))
(foreach item result
  (setq point (list (atof (cadr item))
		 (atof (caddr item))
		 (atof (cadddr item))
	   )
       text (car item)
       )
  (command "._point" point 
  )
  (command "._text"  "_j" "_BC" point "" "" text 
  )   
)

(setvar "textsize" (getvar "dimtxt"))
(setvar "osmode" 703)
(setvar "cmdecho" 1)
(princ)
  )
(C:demo)
(princ)
; а чего там дальше...сам уж
Fatty

~'J'~
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Раскажите как сделать макрос (Тахеометр-Autocad)