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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Не работает команда _overkill с определенным динамическим блоком

Не работает команда _overkill с определенным динамическим блоком

Ответ
Поиск в этой теме
Непрочитано 10.10.2022, 12:45
Не работает команда _overkill с определенным динамическим блоком
psvnadwgru
 
Регистрация: 10.10.2022
Сообщений: 10

Здравствуйте. В файле есть скопированные друг на друга одинаковые динамические блоки с одинаковыми атрибутами. Но команда _overkill не удаляет дубликат. Файл с блоком прилагаю. Помогите решить проблему? AutoCAD 2019 — Русский (Russian). На других объектах команда работает исправно.

Вложения
Тип файла: dwg
DWG 2010
динблок.dwg (222.7 Кб, 10 просмотров)

Просмотров: 1976
 
Непрочитано 11.10.2022, 12:02
#21
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,458


Вообще-то этот случай достаточно распространённый: тексты с одним содержимым и блоки (как у ТС) накладываются друг на друга, визуально не найти.
Для того когда-то и было написано, что Overkill не отрабатывал на 100% и были ошибки в спецификациях.
Собственно, как раз в тему .
Oleg T вне форума  
 
Автор темы   Непрочитано 11.10.2022, 12:17
#22
psvnadwgru


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


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Вообще то для данного конкретного случая всё вообще очень просто, и списки сравнивать не нужно. Вспомнил про свой очень давний лиспик
удаления дублирующихся текстов и блоков по точке вставки.
Изолируем блоки по слою и вперед, всё сработает.
Код:
[Выделить все]
 ;Удаление дублей текстов и блоков с совпадающей точкой вставки
;---------------------------------------------------------------------
(defun c:kill_txt()
	(if (= delta_1 nil)(setq delta_1 1))
	(prompt "\n Погрешность координат точки вставки:    ")
	(prin1 delta_1)
	(setq delta_2 (getint "\nНовое значение погрешности или ENTER:    "))
	(if (= delta_2 nil)
		(setq delta delta_1)
		(setq delta delta_2)
	)
	(setq nab (ssget))
	(setq kol (sslength nab))
	(setq nab1 (ssadd))
	(setq nab2 (ssadd))
	(setq nab3 (ssadd))
	(setq nab4 (ssadd))
	(setq n -1)
	(repeat kol
		(setq n (+ n 1))
		(setq pr (ssname nab n))
		(setq pr_ (cdr(assoc '0(entget pr))))
		(if (= pr_ "TEXT")(ssadd pr nab1))
		(if (= pr_ "INSERT")(ssadd pr nab2))
	)
	(setq kol (sslength nab1))
	(if (/= kol 0)
		(progn
			(setq go_ nil)
			(while (/= go_ 1)
				(setq pr (ssname nab1 0))
				(setq x1 (nth 1(assoc '10(entget pr))))
				(setq y1 (nth 2(assoc '10(entget pr))))
				(setq z1 (nth 3(assoc '10(entget pr))))
				(ssdel pr nab1)
				(setq kol (sslength nab1))
				(if (= kol 0)(setq go_ 1)
					(progn
						(setq n -1)
						(setq go__ nil)
						(repeat kol
							(setq n (+ n 1))
							(setq pr (ssname nab1 n))
							(setq dx (abs(- x1(nth 1(assoc '10(entget pr))))))
							(setq dy (abs(- y1(nth 2(assoc '10(entget pr))))))
							(setq dz (abs(- z1(nth 3(assoc '10(entget pr))))))
							(if (<= dx delta)(if (<= dy delta)(if (<= dz delta)(ssadd pr nab3))))
						)
					)
				)
			)
		)
	)
	(setq kol (sslength nab2))
	(if (/= kol 0)
		(progn
			(setq go_ nil)
			(while (/= go_ 1)
				(setq pr (ssname nab2 0))
				(setq x1 (nth 1(assoc '10(entget pr))))
				(setq y1 (nth 2(assoc '10(entget pr))))
				(setq z1 (nth 3(assoc '10(entget pr))))
				(ssdel pr nab2)
				(setq kol (sslength nab2))
				(if (= kol 0)(setq go_ 1)
					(progn
						(setq n -1)
						(setq go__ nil)
						(repeat kol
							(setq n (+ n 1))
							(setq pr (ssname nab2 n))
							(setq dx (abs(- x1(nth 1(assoc '10(entget pr))))))
							(setq dy (abs(- y1(nth 2(assoc '10(entget pr))))))
							(setq dz (abs(- z1(nth 3(assoc '10(entget pr))))))
							(if (<= dx delta)(if (<= dy delta)(if (<= dz delta)(ssadd pr nab3))))
						)
					)
				)
			)
		)
	)
	(command "_erase" nab3 "")
	(setq kol (sslength nab3))
	(prompt "\n Удалено дубликатов текстов и блоков     ")
	(prin1 kol)
	(princ)
)
А как пользоваться этим кодом? Куда его вставлять?
psvnadwgru вне форума  
 
Непрочитано 11.10.2022, 12:50
1 | #23
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,458


https://dwg.ru/pub/9
Кстати, если автокад русский, то _erase надо поменять на ._erase
Oleg T вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Не работает команда _overkill с определенным динамическим блоком

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает команда block edit в autocad hha AutoCAD 0 21.02.2017 09:13
Проблема с динамическим блоком при регенерации модели Scorpio_1986 Динамические блоки 4 26.11.2012 08:21
При включенном F8 (орто) не работает команда "перенести" по горизонтали. ПОчему?? sizhik AutoCAD 7 23.04.2012 13:57
Не работает команда SHELL Torino AutoCAD 3 12.02.2009 21:08
не работает команда mtedit Nikolays AutoCAD 8 21.11.2007 09:46