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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP для замены множества чисел в Autocad из таблицы Excel

LISP для замены множества чисел в Autocad из таблицы Excel

Ответ
Поиск в этой теме
Непрочитано 13.04.2019, 23:30
LISP для замены множества чисел в Autocad из таблицы Excel
gorodetsky18
 
Регистрация: 13.04.2019
Сообщений: 9

Доброго времени суток. Подскажите возможно ли решить следующую задачу:
В dwf файле имеется некоторое количество чисел (_text желтым цветом), которое нужно заменить из файла Excel.
Заранее спасибо!
Просмотров: 5130
 
Непрочитано 14.04.2019, 18:41
#21
Сергей812


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


в общем проще самому посмотреть: на слое "_Р1" (буква русская), примитив текст, цвет желтый = 2. Тогда получаем уникальные числа и только числа.
ТС увидел, что будет завтра лисп - и все, отключился полностью от реальности)
Сергей812 вне форума  
 
Автор темы   Непрочитано 14.04.2019, 18:42
#22
gorodetsky18


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
не повторяющихся где - на слое или во всем чертеже желтый текст уникальный?
во всем чертеже желтый текст уникальный.
gorodetsky18 вне форума  
 
Непрочитано 14.04.2019, 18:46
#23
Сергей812


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


Цитата:
Сообщение от gorodetsky18 Посмотреть сообщение
во всем чертеже желтый текст уникальный.
Пропарсил чертеж - желтый текст без учета слоя:

ОВ1 A-GENM-IDEN
ЭО A-GENM-IDEN
ОВ1 A-GENM-IDEN
ЭО A-GENM-IDEN
СС A-GENM-IDEN
ПД A-GENM-IDEN
ДУ A-GENM-IDEN
ПД A-GENM-IDEN
ВК A-GENM-IDEN
ЭО A-GENM-IDEN
ОВ2 A-GENM-IDEN
ОВ1 A-GENM-IDEN
ОВ2 A-GENM-IDEN
ДУ A-GENM-IDEN
ПД A-GENM-IDEN
первый столбец значение, второй - имя слоя. Где там уникальность в первом столбце?
Сергей812 вне форума  
 
Непрочитано 14.04.2019, 20:06
#24
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от gorodetsky18 Посмотреть сообщение
В dwg файле уникальных номер порядка 500 шт. и каждый из них нужно заменить на значение из excel. 1 на 720, 2 на 2190, 3 на 597 и т.д.
Эх, если бы это были блоки с атрибутами!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2019, 20:20
#25
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,679


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Где там уникальность в первом столбце?
среди жёлтого текста есть числа, вот они-то и будут уникальными порядковыми номерами excel-а, ну или nth списка. как-то так)
koMon вне форума  
 
Автор темы   Непрочитано 14.04.2019, 20:33
#26
gorodetsky18


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Пропарсил чертеж - желтый текст без учета слоя:

ОВ1 A-GENM-IDEN
ЭО A-GENM-IDEN
ОВ1 A-GENM-IDEN
ЭО A-GENM-IDEN
СС A-GENM-IDEN
ПД A-GENM-IDEN
ДУ A-GENM-IDEN
ПД A-GENM-IDEN
ВК A-GENM-IDEN
ЭО A-GENM-IDEN
ОВ2 A-GENM-IDEN
ОВ1 A-GENM-IDEN
ОВ2 A-GENM-IDEN
ДУ A-GENM-IDEN
ПД A-GENM-IDEN
первый столбец значение, второй - имя слоя. Где там уникальность в первом столбце?
Во вложении только _text который нужно заменить

Желтый текст - это порядковый номер замера, который делается лазерным дальномером и записывается сразу в таблицу excel, поэтому там повторных чисел быть не должно.
Вложения
Тип файла: dwg
DWG 2007
Пр_С4-только текст.dwg (123.4 Кб, 20 просмотров)
gorodetsky18 вне форума  
 
Непрочитано 14.04.2019, 20:41
#27
Сергей812


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


Ну так все это расположено на слое "_Р1" (видимо, Размер1), как и писал выше. А заменять любой желтый текст с числом в чертеже - это так, рулетка)
Сергей812 вне форума  
 
Непрочитано 15.04.2019, 10:33
#28
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,679


Код:
[Выделить все]
 
;**********
(vl-load-com)
;**********
(defun c:Replace_text ()
	(setq csv_file_name (getfiled "Выберите файл CSV с чилами для замены" (strcat (vlax-get (vla-get-ActiveDocument (vlax-get-acad-object)) 'Path) "\\") "csv" 16)
		  csv_file_id (open csv_file_name "r")
		  change_index 1
		  changed_count 0
		  replacing_numbers_list '()
	)
	(while (setq current_string (read-line csv_file_id))
		(setq replacing_numbers_list (cons (cons (itoa change_index) current_string) replacing_numbers_list)
			  change_index (1+ change_index)
		)
	)
	(close csv_file_id)
	(vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
	(setq yellow_text_sset (ssget "_x" '((0 . "TEXT") (62 . 2))))
	(while (not (zerop (sslength yellow_text_sset)))
		(setq yellow_text_object (vlax-ename->vla-object (ssname yellow_text_sset 0)))
		(if (null (vlax-ldata-get yellow_text_object "Changed"))
			(if (assoc (vla-get-textstring yellow_text_object) replacing_numbers_list)
				(progn
					(vlax-ldata-put yellow_text_object "Changed" t)
					(vlax-ldata-put yellow_text_object "Org_string" (vla-get-textstring yellow_text_object))
					(vla-put-textstring yellow_text_object (cdr (assoc (vla-get-textstring yellow_text_object) replacing_numbers_list)))
					(setq changed_count (1+ changed_count))
				)
			)
		)
        (setq yellow_text_sset (ssdel (ssname yellow_text_sset 0) yellow_text_sset))
	)
	(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
	(princ (strcat "\nИзменено " (itoa changed_count) " текстов"))
	(princ)
)

Последний раз редактировалось koMon, 15.04.2019 в 11:45.
koMon вне форума  
 
Автор темы   Непрочитано 15.04.2019, 11:59
#29
gorodetsky18


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


Цитата:
Сообщение от koMon Посмотреть сообщение
Код:
[Выделить все]
 
;**********
(vl-load-com)
;**********
(defun c:Replace_text ()
	(setq csv_file_name (getfiled "Выберите файл CSV с чилами для замены" (strcat (vlax-get (vla-get-ActiveDocument (vlax-get-acad-object)) 'Path) "\\") "csv" 16)
		  csv_file_id (open csv_file_name "r")
		  change_index 1
		  changed_count 0
		  replacing_numbers_list '()
	)
	(while (setq current_string (read-line csv_file_id))
		(setq replacing_numbers_list (cons (cons (itoa change_index) current_string) replacing_numbers_list)
			  change_index (1+ change_index)
		)
	)
	(close csv_file_id)
	(vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
	(setq yellow_text_sset (ssget "_x" '((0 . "TEXT") (62 . 2))))
	(while (not (zerop (sslength yellow_text_sset)))
		(setq yellow_text_object (vlax-ename->vla-object (ssname yellow_text_sset 0)))
		(if (null (vlax-ldata-get yellow_text_object "Changed"))
			(if (assoc (vla-get-textstring yellow_text_object) replacing_numbers_list)
				(progn
					(vlax-ldata-put yellow_text_object "Changed" t)
					(vlax-ldata-put yellow_text_object "Org_string" (vla-get-textstring yellow_text_object))
					(vla-put-textstring yellow_text_object (cdr (assoc (vla-get-textstring yellow_text_object) replacing_numbers_list)))
					(setq changed_count (1+ changed_count))
				)
			)
		)
        (setq yellow_text_sset (ssdel (ssname yellow_text_sset 0) yellow_text_sset))
	)
	(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
	(princ (strcat "\nИзменено " (itoa changed_count) " текстов"))
	(princ)
)
Просто Супер!!! Спасибо огромное!
gorodetsky18 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP для замены множества чисел в Autocad из таблицы Excel

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lisp. Работа с таблицами AutoCAD SNIIP LISP 31 28.03.2023 07:31
Связь AutoCad с Excel. Связь "Таблицы свойств блока" в "Редакторе блоков" и базы Excel. Марсель113 LISP 3 18.01.2019 13:29
Достать "формулу" из ячейки таблицы autocad tsetse LISP 43 23.12.2018 08:48
Как перенести координаты из AUTOCAD в Excel и обратно с помощью LISP? aydinkhalil LISP 11 24.12.2014 10:51
Как перенести значения из таблицы Excel в AutoCAD в виде текста? Yur.OK_SPb AutoCAD 22 01.08.2011 16:42