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

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

Как автоматически удалить линии из множества блоков.

Ответ
Поиск в этой теме
Непрочитано 12.03.2021, 15:52
Как автоматически удалить линии из множества блоков.
IStugirev
 
Регистрация: 12.03.2021
Сообщений: 9

Коллеги, добрый день!
Есть ситуация: из Ревита в DWG экспортированы чертежи - планы офиса. На плане офиса размещены блоки столов-рабочих мест. Каждое рабочее имеет свой номер и является отдельным блоком. Внутри каждого из блоков внутри периметра стола выполнена заливка, а по периметру, помимо линий стола, проведены белые линии, принадлежащие слою заливки (их появление связано с экспортом из Ревита). Эти линии не нужны, так как ухудшают видимость блоков и читаемость чертежа.
Вопрос в том, есть ли какой-нибудь способ автоматически удалить эти линии из ВСЕХ блоков чертежа сразу? Делать это вручную - абсолютно нерациональная задача. т.к. столов на плане может быть порядка сотни, заходить внутрь каждого блока и удалять линии - долго и мучительно. Может быть можно как-то удалить все объекты типа "линия", принадлежащие одному слою (в данном случае АР_Офисная мебель_Заливка) из всех блоков?

Миниатюры
Нажмите на изображение для увеличения
Название: РМ автокад план.png
Просмотров: 83
Размер:	173.7 Кб
ID:	235355  Нажмите на изображение для увеличения
Название: Блок Рабочего места.png
Просмотров: 82
Размер:	91.0 Кб
ID:	235358  

Просмотров: 5386
 
Непрочитано 16.03.2021, 13:15
#21
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Линии слоя АР_офисная мебель_Заливка перекрывают контур мебели при печати. В этом проблема?
Решение не самое правильное, но быстрое: увеличить толщину слоя контура мебели (АР_офисная мебель).
AMDen вне форума  
 
Непрочитано 16.03.2021, 14:00
1 | #22
koMon


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


там не только линии, есть ещё и крошечные дуги.

Код:
[Выделить все]
 
;*******************************************************************************************

(vl-load-com)

;*******************************************************************************************

(defun c:Remove_Certain_Entities ( )
	(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	(vlax-for every_db_block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
		(vlax-for block_entry every_db_block
			(cond
				(
					(and
						(or
							(= "AcDbLine" (vla-get-objectname block_entry))
							(= "AcDbArc" (vla-get-objectname block_entry))
						)
						(= "АР_Офисная мебель_Заливка РМ" (vla-get-layer block_entry))
					)
						(vla-delete block_entry)
				)
				(
					t
				)
			)
		)
	)
	(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
	(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
	(princ)
)

;*******************************************************************************************
koMon вне форума  
 
Непрочитано 16.03.2021, 14:26
#23
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,577


Цитата:
Сообщение от IStugirev Посмотреть сообщение
У всех элементов заданы атрибуты (специальным скриптом), поэтому мне их удалять и никак трогать нельзя, поэтому взорвать блок нельзя.
Можно. Команда burst из Express Tools разбивает блоки с сохранением значения аттрибута
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Непрочитано 16.03.2021, 16:19
#24
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


IStugirev
О-о-о знакомые стульчаки и стены...! Родной Architectural Desktop!!! )))
А номера р.м. из секретного скрипта - свойства - PropertySetDefinition (читай атрибуты блока)
Попробуй Object Enabler для него установить, если часто подобные проекты спускают, то пользу извлечёшь!
Вместо мебели просто закрашенных прямоугольников накидали... а туману напустили как будто и правда незнайчё...
Цитата:
Сообщение от CaMoCAD Посмотреть сообщение
Можно. Команда burst из Express Tools разбивает блоки с сохранением значения аттрибута
Да и Барст рулит...

Последний раз редактировалось VitalyAF, 16.03.2021 в 16:32.
VitalyAF вне форума  
 
Автор темы   Непрочитано 16.03.2021, 17:20
#25
IStugirev


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


Цитата:
Сообщение от koMon Посмотреть сообщение
там не только линии, есть ещё и крошечные дуги.

Код:
[Выделить все]
 
;*******************************************************************************************

(vl-load-com)

;*******************************************************************************************

(defun c:Remove_Certain_Entities ( )
	(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	(vlax-for every_db_block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
		(vlax-for block_entry every_db_block
			(cond
				(
					(and
						(or
							(= "AcDbLine" (vla-get-objectname block_entry))
							(= "AcDbArc" (vla-get-objectname block_entry))
						)
						(= "АР_Офисная мебель_Заливка РМ" (vla-get-layer block_entry))
					)
						(vla-delete block_entry)
				)
				(
					t
				)
			)
		)
	)
	(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
	(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
	(princ)
)

;*******************************************************************************************
Спасибо большое за помощь! К сожалению, почему-то код не срабатывает, при применении команды пишется "Regenerating model", но линии остаются. Может быть, что-то делаю не так.
IStugirev вне форума  
 
Непрочитано 17.03.2021, 09:23
#26
koMon


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
но линии остаются
линии остаются, но они вообще-то в другом слое - "АР_Офисная мебель", в то время как лисп удаляет линии/дуги из слоя "АР_Офисная мебель_Заливка РМ".
koMon вне форума  
 
Непрочитано 17.03.2021, 10:07
#27
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Из-за чего шум поднялся, всё смотрится приемлемо с настройками по умолчанию на листе и в модели так же.
Контур стен толстоват, на мой взгляд, т.к. они для данной марки чертежа на важны. И вообще всю архитектуру можно приглушить на 50%. Буря в стакане воды... имхо!
VitalyAF вне форума  
 
Непрочитано 17.03.2021, 12:50
#28
Oleg T


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
К сожалению, почему-то код не срабатывает, при применении команды пишется "Regenerating model", но линии остаются. Может быть, что-то делаю не так.
Как я понимаю, программа дает именно требуемый результат
Миниатюры
Нажмите на изображение для увеличения
Название: Сохраненное изображение 2021-3-17_12-47-53.459.jpg
Просмотров: 14
Размер:	121.6 Кб
ID:	235488  
Вложения
Тип файла: dwg
DWG 2013
Файл с блоками.dwg (293.6 Кб, 2 просмотров)
Oleg T вне форума  
 
Автор темы   Непрочитано 17.03.2021, 16:39
#29
IStugirev


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


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Как я понимаю, программа дает именно требуемый результат
Отлично, результат именно тот, что нужен. Вероятно, я что-то сделал не так при создании и загрузке .lsp файла? Честно говоря, до этого опыта с таким делом не имел. Я скопировал код в Notepad, сохранил его в расширении .lsp и подгрузил через _appload в Автокад. Затем вводил команду Remove_Certain_Entities, но после этого выдавалась надпись Regenerating Model и белые линии оставались
Миниатюры
Нажмите на изображение для увеличения
Название: код.png
Просмотров: 8
Размер:	35.0 Кб
ID:	235507  

Последний раз редактировалось IStugirev, 17.03.2021 в 16:44.
IStugirev вне форума  
 
Непрочитано 18.03.2021, 07:54
#30
Oleg T


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Я скопировал код в Notepad
Как производилось копирование? Лучше делать это не через кнопку "Выделить все" (в этом случае в файле появляются лишние строки), а через кнопки в окошке, которое всплывает в правом верхнем углу.
Миниатюры
Нажмите на изображение для увеличения
Название: Сохраненное изображение 2021-3-18_7-50-16.157.jpg
Просмотров: 8
Размер:	129.1 Кб
ID:	235528  
Oleg T вне форума  
 
Автор темы   Непрочитано 18.03.2021, 14:25
#31
IStugirev


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


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Как производилось копирование? Лучше делать это не через кнопку "Выделить все" (в этом случае в файле появляются лишние строки), а через кнопки в окошке, которое всплывает в правом верхнем углу.
Через "Выделить все", лишние строки потом удалял. Через всплывающее окошко не получается, кстати. а у Вас будет возможность скинуть .lsp файл, чтобы я попробовал? Буду очень благодарен.
IStugirev вне форума  
 
Непрочитано 18.03.2021, 15:47
1 | #32
Oleg T


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Через "Выделить все", лишние строки потом удалял. Через всплывающее окошко не получается, кстати. а у Вас будет возможность скинуть .lsp файл, чтобы я попробовал? Буду очень благодарен.
Пожалуйста. Большое спасибо koMon, сохранил у себя на всякий пожарный
Вложения
Тип файла: lsp Remove_line_bloks.lsp (1,018 байт, 6 просмотров)
Oleg T вне форума  
 
Автор темы   Непрочитано 18.03.2021, 16:55
#33
IStugirev


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


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Пожалуйста. Большое спасибо koMon, сохранил у себя на всякий пожарный
Коллеги, СПАСИБО огромное! Все работает как нужно!
IStugirev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как автоматически удалить линии из множества блоков.

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При замене динамических блоков неправильно отображается поворот блоков Krovlaf Динамические блоки 8 30.05.2019 07:12
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
как с помощью VBA удалить влок из коллекции блоков молод и перспективен Программирование 3 25.07.2009 12:54
Способы обрезания множества линий до линии пересекющей их Takoy AutoCAD 12 02.09.2005 06:49
Загрузка типа линии из макроса Кулик Алексей aka kpblc Программирование 4 24.01.2005 14:57