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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Перенос блока в другой слой по значению его атрибута с помощью LISP, возможно?

Перенос блока в другой слой по значению его атрибута с помощью LISP, возможно?

Ответ
Поиск в этой теме
Непрочитано 16.10.2021, 14:19 #1
Перенос блока в другой слой по значению его атрибута с помощью LISP, возможно?
Patrone
 
СноБ
 
Бальшая деревня
Регистрация: 02.12.2009
Сообщений: 51

Всем привет!
Подскажите, пожалуйста, возможно ли по значению атрибута из блока перенести этот блок в другой слой с помощью LISP?
Поменять цвет блока по значению атрибута - тоже интересен вариант - но я так понимаю в автокаде невозможен.
Просмотров: 3327
 
Непрочитано 16.10.2021, 15:24
#2
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,780


Возможно.
Возможно.
engngr вне форума  
 
Непрочитано 16.10.2021, 15:44
1 | #3
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


в Map 3D есть штатный инструмент
trir вне форума  
 
Автор темы   Непрочитано 16.10.2021, 16:35
#4
Patrone

СноБ
 
Регистрация: 02.12.2009
Бальшая деревня
Сообщений: 51


Ребята, а если нет Map 3D, то насколько трудоёмко будет написать такой скрипт для чистого автокада, чтобы сравнить значение атрибутов с одним именем в нескольких блоках, и три сценария предусмотреть:
найти блок с самым маленьким значением этого параметра - и перенести этот блок в слой1/подкрасить
найти блоки с значением параметра из диапазона числового - и перенести их в слой2/подкрасить
найти блок с самым большим значением параметра - и перенести его в слой3/подкрасить
Трудоёмко если с нуля и трудоёмко если на опыте человек?))
Patrone вне форума  
 
Непрочитано 16.10.2021, 16:53
#5
Сергей812


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


трудоемкость повышается на порядок - когда вместо графического представления: исходные данные/условия и что нужно получить - пытаются это руками и текстом рассказать)
Сергей812 вне форума  
 
Непрочитано 16.10.2021, 20:25
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


1. Выгрузить данные в Excel
2. Найти нужное
3. Написать скрипт
trir вне форума  
 
Автор темы   Непрочитано 16.10.2021, 23:40
#7
Patrone

СноБ
 
Регистрация: 02.12.2009
Бальшая деревня
Сообщений: 51


Возможен вариант за вознаграждение сделать такой скрипт?
В каком формате мне нужно сделать исходные данные, алгоритм, чтобы можно было получить ответ по цене?)
(bpmn, ...)
Patrone вне форума  
 
Непрочитано 17.10.2021, 01:13
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


файлик выложи
trir вне форума  
 
Непрочитано 17.10.2021, 15:14
#9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от Patrone Посмотреть сообщение
В каком формате мне нужно сделать исходные данные
DWG, для начала
kp+ вне форума  
 
Непрочитано 17.10.2021, 17:39
#10
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


Да ладно, Excel-то зачем? :-)
Чистого LISP'па вполне хватит...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 17.10.2021, 18:36
#11
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Возможно.
Возможно.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 17.10.2021, 18:50
#12
Patrone

СноБ
 
Регистрация: 02.12.2009
Бальшая деревня
Сообщений: 51


Вот файлик.
Внутри создано три блока.
У каждого одинаковый набор параметров.
Марка
Параметр1
Параметр2.

Например по Параметру1, скриптом выяснить, какой из блоков с минимальным значением Параметр1 и перенести его с Слой1.

Если пообещаю скинуть на пиво... смогу ли увидеть такой скрипт тогда?
Вложения
Тип файла: dwg
DWG 2018
ПереносБлокаВДругойСлойПоПараметр1.dwg (24.0 Кб, 16 просмотров)

Последний раз редактировалось Patrone, 17.10.2021 в 18:59.
Patrone вне форума  
 
Непрочитано 17.10.2021, 19:41
1 | #13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


можно удалить блоки и вставить их из Excel'я как надо
trir вне форума  
 
Автор темы   Непрочитано 17.10.2021, 20:33
#14
Patrone

СноБ
 
Регистрация: 02.12.2009
Бальшая деревня
Сообщений: 51


Цитата:
Сообщение от trir Посмотреть сообщение
можно удалить блоки и вставить их из Excel'я как надо
Эмм, а это как?
Patrone вне форума  
 
Непрочитано 17.10.2021, 21:08
1 | #15
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


в екселе можно написать скрипт вставки блока на нужный слой

(command "clayer" "слой1")
(command "-ВСТАВИТЬ" "Марка" '(100 100 0) 1000 1000 0 "test1" "test2" "test3")

Последний раз редактировалось trir, 17.10.2021 в 21:22.
trir вне форума  
 
Непрочитано 18.10.2021, 22:50
1 | #16
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


"Низким штилем", без защит и проверок
Код:
[Выделить все]
 (defun c:script1 (/
		  search_b_name search_tag
		  ATRS ATT_1 B_A_1 B_A_LIST B_LIST SS VL_B_LIST
		  )
        (setq search_b_name "Марка" search_tag "ПАРАМЕТР1")
  	(setq ss (ssget "_X" (list (cons 0  "INSERT") (cons 2 search_b_name))));;выбор всех нужных блоков
	(setq b_list (ssnamex ss));преобразование набора в список
	(setq ss nil)
	(setq b_list (mapcar 'cadr b_list));выкидывание номеров набора из списка
        (setq vl_b_list (mapcar 'vlax-ename->vla-object b_list));преобразование во VLA-объекты
        (setq b_a_list nil atrs nil b_a_1 nil att_1 nil)
        (foreach x vl_b_list
	  (progn
	    (setq atrs (vlax-invoke x 'Getattributes))
	    (setq att_1 (car (vl-remove-if-not '(lambda (x) (= (vla-get-TagString x) search_tag)) atrs)))
	    (setq b_a_1 (list
				 (cons "b_name" x)
				 (cons "att_v" (atof (vla-get-textstring att_1)))
			       )
            )
            (setq b_a_list (append b_a_list (list b_a_1)))

          )
	)
        (setq b_a_list (vl-sort b_a_list
				(function
				  (lambda (e1 e2)
						     (>
						       (cdr (assoc att_v e1))
						       (cdr (assoc att_v e2))
						     )
	                          )
				)
		       )
	)
        (vla-put-layer (cdr (assoc "b_name" (last b_a_list))) "Слой1") ;блок с мин. "параметром1" - в слой1
	(vla-put-layer (cdr (assoc "b_name" (car b_a_list))) "Слой2") ;блок с макс. "параметром1" - в слой2
)

Последний раз редактировалось kp+, 19.10.2021 в 00:37.
kp+ вне форума  
 
Непрочитано 18.10.2021, 23:45
#17
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


там уже сделали всё
trir вне форума  
 
Автор темы   Непрочитано 19.10.2021, 00:08
#18
Patrone

СноБ
 
Регистрация: 02.12.2009
Бальшая деревня
Сообщений: 51


Цитата:
Сообщение от kp+ Посмотреть сообщение
"Низким штилем", без защит и проверок
Спасибо!
Что заметил, у программистов день поздно заканчивается)
Patrone вне форума  
 
Непрочитано 19.10.2021, 01:06
#19
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Offtop:
Цитата:
Сообщение от Patrone Посмотреть сообщение
Что заметил, у программистов день поздно заканчивается)
Лично я вовсе не программист, рабочим днем, который с 8:00 до 17:00 - обычный инженеГр. А это так, от бессонницы вспомнил старое и мало кому интересное
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Перенос блока в другой слой по значению его атрибута с помощью LISP, возможно?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Создание выноски с атрибутом блока. DmitriyBastr LISP 26 17.01.2023 16:03
Мои динамические блоки [2] Кулик Алексей aka kpblc Динамические блоки 4334 22.04.2019 09:16
Как присвоить полю значение атрибута (вхождение блока)? Arturich AutoCAD 10 10.07.2018 09:46
Программная замена атрибута блока в таблице. Возможно ? baksconstructor Программирование 22 20.04.2017 08:48
Изменение атрибута блока , который находится в блоке (из пространства модели) konservnii LISP 17 28.03.2017 15:22