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

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

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

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

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

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

Просмотров: 5771
 
Непрочитано 12.03.2021, 16:16
| 1 #2
Кулик Алексей aka kpblc
Moderator

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


_.laydel ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.03.2021, 16:59
| 1 #3
VitalyAF


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


Каждое р.м. - блок? Т.е. сотни одинаковых столов в блоках разных имён?
Тогда нафиг расчленить их, и удалить ненужное, а заодно и ревитчика...

Последний раз редактировалось VitalyAF, 12.03.2021 в 18:25.
VitalyAF вне форума  
 
Непрочитано 13.03.2021, 22:32
#4
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


1. Без образца файла сложно сказать.
2. VBA установлен для Автокада ?
maratovich вне форума  
 
Непрочитано 13.03.2021, 23:32
#5
engngr

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


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
Каждое р.м. - блок? Т.е. сотни одинаковых столов в блоках разных имён?
Из ревита экспорт может проходить так, что одинаковых по виду блоков с одним и тем же именем может и не быть. Разбить такие блоки правильнее всего. Ревитчик может быть ни при чем.
engngr вне форума  
 
Непрочитано 14.03.2021, 10:25
#6
Oleg T


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


Цитата:
Сообщение от engngr Посмотреть сообщение
Из ревита экспорт может проходить так, что одинаковых по виду блоков с одним и тем же именем может и не быть. Разбить такие блоки правильнее всего. Ревитчик может быть ни при чем.
Из архикада та же история.
Так _laydel сработает или нет (не могу сейчас проверить)? Если да, это лучшее решение для данного случая.
Правда, если только заливки не нужны )

Последний раз редактировалось Oleg T, 14.03.2021 в 11:41.
Oleg T вне форума  
 
Непрочитано 14.03.2021, 10:32
#7
nickname2019


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


1. Все блоки взорвать.
2. Удалить лишнее через быстрый выбор с фильтрами.
3. Файл почистить
nickname2019 вне форума  
 
Автор темы   Непрочитано 15.03.2021, 12:27
#8
IStugirev


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


Увы, разбить блоки не вариант, они нужны для дальнейшей работы. Заливка тоже нужна, удалить надо только линии. Вообще, как промежуточное решение мне помогла команда CDORDER, я цвет слоя заливки (255) переместил на задний фон, и визуально контур рабочих мест стал черным, а не белым, как раньше. но вот как именно удалить линии - вопрос пока открытый.
IStugirev вне форума  
 
Непрочитано 15.03.2021, 13:25
#9
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,401


1. КМК, проще всего, действительно договориться с ревитчиком. У него это один блок - ну пусть удалит эти линии перед экспортом.
2. Попробовать заменить блоки. Судя по картинке, их там всего два вида (второй - зеркальный).
AlexCondor вне форума  
 
Непрочитано 15.03.2021, 13:36
#10
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Автор, Вы бы файл с этими рабочими местами показали бы, Вам бы быстрее помогли, телепаты то пока с югов не вернулись.
Удалите всю не нужную и "секретную" инфу и выложите файл, так хоть предмет для разговора будет.
Boxa вне форума  
 
Непрочитано 15.03.2021, 13:40
#11
Oleg T


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


Здесь http://www.lee-mac.com/programs.html есть программка удаления объектов из блоков, не входя в редактор.
А так и макрос можно вполне написать под конкретно эту задачу (если есть кому).
Список блоков - поочередное открытие - удаление объектов с выбором по признаку - закрытие с сохранением.
Oleg T вне форума  
 
Непрочитано 15.03.2021, 15:08
#12
VitalyAF


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


С мебелью всегда так - прямое, зеркальное, угол слева, справа, плюс комбинации расположения стульев, сами стулья разные...
короче, не парился никогда , стул - блок, стол - блок и т.д. и комбинируй их как надо, но комбинации никогда в блок не загонял, т.к. их м.б. больше чем исходных блоков, просто смысла нет! Весь этаж с мебелью м.б. блок или ссылка на файл, на практике так удобнее... я не просто т.д., а уверен!
Это в учреждениях, а в гостиницах и прочих частных заведениях и подавно!
Плюс иногда её чуть двигать приходится, что, отдельный блок для этого создавать...
Первый раз открыл Acad и сразу давай фейс править, или лисп ему подавай...
У нас начальник бюро любила в кальках править... мелкую моторику нам вырабатывала и ничё, выжили...

Последний раз редактировалось VitalyAF, 16.03.2021 в 06:04.
VitalyAF вне форума  
 
Непрочитано 15.03.2021, 20:38
#13
koMon


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


Достаточным будет выложить только один блок.
koMon вне форума  
 
Автор темы   Непрочитано 16.03.2021, 11:51
#14
IStugirev


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


Прикладываю файл. У всех элементов заданы атрибуты (специальным скриптом), поэтому мне их удалять и никак трогать нельзя, поэтому взорвать блок нельзя. Все, что нужно - удалить линии из блоков.

----- добавлено через ~33 мин. -----
Цитата:
Сообщение от Oleg T Посмотреть сообщение
Здесь http://www.lee-mac.com/programs.html есть программка удаления объектов из блоков, не входя в редактор.
А так и макрос можно вполне написать под конкретно эту задачу (если есть кому).
Список блоков - поочередное открытие - удаление объектов с выбором по признаку - закрытие с сохранением.
Спасибо! Не подскажете, что конкретно за программа? По списку не удалось найти похожую.
Вложения
Тип файла: dwg
DWG 2010
Файл с блоками.dwg (372.6 Кб, 19 просмотров)
IStugirev вне форума  
 
Непрочитано 16.03.2021, 12:25
#15
Кулик Алексей aka kpblc
Moderator

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


Какие линии-то сносить?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.03.2021, 12:39
#16
IStugirev


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


Белые линии слоя АР_офисная мебель_Заливка из блоков
Миниатюры
Нажмите на изображение для увеличения
Название: Линии.png
Просмотров: 25
Размер:	52.6 Кб
ID:	235450  
IStugirev вне форума  
 
Непрочитано 16.03.2021, 12:43
#17
Oleg T


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Не подскажете, что конкретно за программа? По списку не удалось найти похожую.
Действительно, автор по каким-то причинам удалил.
Есть более ранняя версия, команда Remove
PS
Похоже, здесь не вариант, поскольку заливки на переднем плане
PPS
Хотя приспособиться можно. Блоки переместить в другой слой, отключить отображение заливок, слой АР_Офисная мебель заморозить.
Тогда все работает, но все равно будет достаточно долго (объекты - отрезки, и выбираются по одному)
Вложения
Тип файла: lsp AddObjectsToBlockV1-1.lsp (9.3 Кб, 11 просмотров)

Последний раз редактировалось Oleg T, 16.03.2021 в 12:59.
Oleg T вне форума  
 
Непрочитано 16.03.2021, 12:50
#18
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Белые линии слоя АР_офисная мебель_Заливка из блоков
Белые или с цветом "ПоСлою"? Белые = цвет 7, 255 или RGB?
И чем все-таки не нравится _LayDel с опцией _name, не понимаю
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.03.2021, 13:01
#19
IStugirev


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



Те, что 255
Потому что в таком случае удалится и штриховка сплошная, а это недопустимо. (либо я что-то делаю не так)
IStugirev вне форума  
 
Непрочитано 16.03.2021, 13:11
#20
Oleg T


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


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Те, что 255
Потому что в таком случае удалится и штриховка сплошная, а это недопустимо. (либо я что-то делаю не так)
Можно так:
1. Перенести блоки в другой слой
2. Слой с мебелью заморозить (АР_Офисная мебель)
3. В новом слое создать заливки указанием точки внутри контура
4. Слой АР_Офисная мебель_Заливка РМ удалить
5. Добавить к блокам новые заливки (файл выше, команда ADD2BLOCK)

Я попробовал, работает.
Oleg T вне форума  
 
Непрочитано 16.03.2021, 13:15
#21
AMDen

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


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


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


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

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

(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,599


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


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


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,808


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


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


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


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


Цитата:
Сообщение от 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,456


Цитата:
Сообщение от 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,456


Цитата:
Сообщение от IStugirev Посмотреть сообщение
Через "Выделить все", лишние строки потом удалял. Через всплывающее окошко не получается, кстати. а у Вас будет возможность скинуть .lsp файл, чтобы я попробовал? Буду очень благодарен.
Пожалуйста. Большое спасибо koMon, сохранил у себя на всякий пожарный
Вложения
Тип файла: lsp Remove_line_bloks.lsp (1,018 байт, 7 просмотров)
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