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

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

Вставка блоков с координатами из файла .TXT

Ответ
Поиск в этой теме
Непрочитано 17.12.2012, 16:16 #1
Вставка блоков с координатами из файла .TXT
Terzi Ilia
 
Регистрация: 18.02.2010
Сообщений: 11

Здравствуйте, форумчане!
Недавно начал изучать лисп. Никак не решался написать на форум, но не нахожу никак решения моей проблемы.

У меня есть .txt в котором указаны координаты блоков которые нужно вставить в DWG.
Привожу пример файла со всеми столбцами, разделенными табами:
Код:
[Выделить все]
DWG		   BLOCK	 X	  Y
AB05A.dwg	   Elec    	790	-20
AB05A.dwg	   Gas    	700	-100
В кратце опишу то, что должна делать программа. Открыть по очереди DWG находящиеся в папке, найти в списке .TXT имя открытого DWG и вставить соответсвующие блоки в DWG и закрыть с сохранением, перейти к следующему файлу.

Я начал писать программу, но заблокоровался на функции "sozdati_spisok_tab", которая должна создать список из файла .ТХТ:

Код:
[Выделить все]
 (defun c:Vstavka_bloka ()
  (setq file_xy (getstring "\nВведите имя файла с кооридинатами X Y: "))
  (if (setq file_xy (findfile file_xy))
    (progn
      (setq lista_dwg 		(sozdati_spisok_tab file_xy 1)
	    spisok_imya_block 	(sozdati_spisok_tab file_xy 2)
	    spisok_coord_X 	(sozdati_spisok_tab file_xy 3)
	    spisok_coord_X 	(sozdati_spisok_tab file_xy 4)
	    otkrytyj_dwg    	(strcase (vl-filename-base  (getvar"dwgname")))
	    tochka0         		(getvar "insbase")
	)
Дальше просто не могу идти, ума не приложу как подбираться к текстовому файлу.

Заранее благодарен!
Просмотров: 3236
 
Непрочитано 17.12.2012, 16:25
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


для работы с файлами смотри функции: findfile, open, read-line, close.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.12.2012, 16:31
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Terzi Ilia Посмотреть сообщение
Дальше просто не могу идти, ума не приложу как подбираться к текстовому файлу.
(open ...) (read-line ....) (close ...)
Хочешь более конкретный ответ - задай конкретный вопрос.
Offtop: опс-долго думал.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.12.2012, 17:02
#4
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Код:
[Выделить все]
 ; Импорт координат	  
(defun c:import_coord (/ file lst handle res i xyz  ixyz  nab ename_attr attr sp_attr)
  (begin_activex)
  (vl-load-com)
  (setvar "dimzin" 0)
  (setq os_m (getvar "osmode"))
  (setvar "osmode" 0)
    (setq file (getfiled "Файл с исходными данными" "" "txt" 4))
               (setq handle (open file "r"))
                (while (setq str (read-line handle))
                  (setq res (cons str res))
                    )
                   (close handle)
                    (setq handle nil)
  (setq i -1)
                        (repeat (length res)
			  (setq i (1+ i))
			  (setq xyz (vl-list->string (subst '32 '44 (vl-string->list (nth i res)))))
			  (setq name (cons (substr xyz 1 (vl-string-position 32 xyz)) name))
			  (setq ixyz (cons  (read (strcat "(" xyz ")" )) ixyz))
			  )
    (vla-insertblock model_space (vlax-3d-point 0.0 0.0 0.0) "test.dwg" 1.0 1.0 1.0 0)
    (setq obj (vlax-ename->vla-object (entlast)))
    (vla-explode obj)
  (setq p -1)
 (repeat (length ixyz)
    (setq p (1+ p))
   (vla-insertblock model_space (vlax-3d-point (cdr (nth p ixyz))) "OTRLF" 1.0 1.0 1.0 0)
;(vl-cmdf "_insert" "OTRLF"  (cdr (nth p ixyz)) "" "" "")
  (setq nab (entlast))
	               (setq ename_attr (entnext nab))
 (while (/= attr "ALTITUDE")
 (setq ename_attr (entnext ename_attr))
    (setq attr (cdr(assoc 2 (entget ename_attr))))
   )
	 (setq sp_attr (entget ename_attr))
  (entmod (subst (cons 1 (rtos (car (reverse(nth p ixyz))) 2 2)) (assoc 1 sp_attr) sp_attr))
   (setq attr nil)
   (entmake (append '((0 . "TEXT")(100 . "AcDbEntity") (67 . 0) (410 . "Model") 
(8 . "имена") (100 . "AcDbText") (40 . 1.0)  
(50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 
0.0) (210 0.0 0.0 1.0) (100 . "AcDbText")(62 . 122)(73 . 0)) (list(cons 1 (nth p name))) (list(cons 10 (mapcar '+ '(0.5 0.5 0.0)   (cdr (nth p ixyz)))))))
      )
  (command "_Undo" "_M")
  (setvar "osmode" os_m)
  
  )
в файле блок который вставляется
содержимое файла .TXT
N,X,Y,Z
Вложения
Тип файла: dwg
DWG 2010
Test.dwg (97.8 Кб, 761 просмотров)

Последний раз редактировалось mamuk, 17.12.2012 в 17:09.
mamuk вне форума  
 
Автор темы   Непрочитано 17.12.2012, 17:24
#5
Terzi Ilia


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


Дима_ ты прав, я виноват. Просто когда писал сообщение оно показалось мне достаточно длинным. Тем не менее я изменил скрипт:

(defun c:Vstavka ()
(if (setq f (open "L:/lib/xy.txt" "r"))
(progn
(while (setq txtline (read-line f))
)
(close f)
)

Правда теперь он читает все из текстового файла. Я же думал разделить все по колоннам и назначить четырем функциям четыре столбца. Как это сделать?

Извините, я не программист, просто читаю то что есть на форуме и вставляю в vlide

Последний раз редактировалось Terzi Ilia, 17.12.2012 в 17:39.
Terzi Ilia вне форума  
 
Непрочитано 17.12.2012, 17:56
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Там где у Вас while написать функии разбора строки (пригодяться substr, strcat и разнообразные vl-string...) и , вставки блока по параметрам полученным из рабора строки (vla-insertblock+ понадобиться еще читать "внешние" файлы чертежей - тоже можно как блоки) - вот и все.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блоков с координатами из файла .TXT

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
MS Word Нужен скрипт для копирования с одновременной заменой части текста Солидворкер Прочее. Программное обеспечение 27 27.11.2012 15:52
Тормозит команда расчленения набора блоков batmax Программирование 4 31.08.2010 17:37
AutoCAD 2008 - вставка блоков из файла в файл Vavan Metallist AutoCAD 14 25.05.2009 19:37