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

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

Как удалить блоки из лайаута?

Ответ
Поиск в этой теме
Непрочитано 03.04.2007, 11:10 #1
Как удалить блоки из лайаута?
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,143

Ситуация такая: Есть чертеж с кучей лайаутов по странично около 40шт. в каждом лайауте есть моя электронная подпись (начерченная в полилинии и объедененная в блок)...

Как удалить этот блок из всех лайаутов сразу?

Так как выделить этот блок полностью во всех лайаутах не удается

Спросите для чего это нужно?
Выдаю чртеж в электронной форме заказчику и не хочу чтобы он использовал в дальнейшем мою подпись на других экземплярах

Сохранять в других форматах нельзя только в ДВЖ


Жду креативных ответов... :roll:
__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 4296
 
Непрочитано 03.04.2007, 11:37
#2
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


создай любой другой блок с тем же именем (перепиши), а потом пургенчиком
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 03.04.2007, 11:56
#3
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun c:eraseblk (/ ent adoc name)
  (vl-load-com)
  (if (and (setq ent (car (entsel "\nУкажите блок подписи <Отмена> : ")))
	   (= (cdr (assoc 0 (entget ent))) "INSERT")
	   ) ;_ end of and
    (progn
      (vla-startundomark
	(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
	) ;_ end of vla-StartUndoMark
      (setq name (strcase (cdr (assoc 2 (entget ent)))))
      (vlax-for	blk (vla-get-blocks adoc)
	(if (not (wcmatch (strcase (vla-get-name blk)) "*_SPACE*"))
	  (vlax-for ent	blk
	    (if	(and (= (vla-get-objectname ent) "AcDbBlockReference")
		     (= (strcase (vla-get-name ent)) name)
		     ) ;_ end of and
	      (vl-catch-all-apply '(lambda () (vla-erase ent)))
	      ) ;_ end of if
	    ) ;_ end of vlax-for
	  ) ;_ end of if
	) ;_ end of vlax-for
      (vla-endundomark adoc)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
Слои должны быть разморожены и разблокированы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.04.2007, 18:34
#4
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Цитата:
Сообщение от Кулик Алексей aka kpblc
Код:
[Выделить все]
(defun c:eraseblk (/ ent adoc name)
  (vl-load-com)
  (if (and (setq ent (car (entsel "\nУкажите блок подписи <Отмена> : ")))
	   (= (cdr (assoc 0 (entget ent))) "INSERT")
	   ) ;_ end of and
    (progn
      (vla-startundomark
	(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
	) ;_ end of vla-StartUndoMark
      (setq name (strcase (cdr (assoc 2 (entget ent)))))
      (vlax-for	blk (vla-get-blocks adoc)
	(if (not (wcmatch (strcase (vla-get-name blk)) "*_SPACE*"))
	  (vlax-for ent	blk
	    (if	(and (= (vla-get-objectname ent) "AcDbBlockReference")
		     (= (strcase (vla-get-name ent)) name)
		     ) ;_ end of and
	      (vl-catch-all-apply '(lambda () (vla-erase ent)))
	      ) ;_ end of if
	    ) ;_ end of vlax-for
	  ) ;_ end of if
	) ;_ end of vlax-for
      (vla-endundomark adoc)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
Слои должны быть разморожены и разблокированы.

Как запустить этот макрос?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 03.04.2007, 21:56
#5
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Немного другой вариант. Имя блока подписи жестко прописано в коде (в данном случае - "Подпись"). Сделано так потому, что имя его у меня не меняется, а выбрать его нельзя, так как он входит в состав блока "Штапм".
Чтобы запустить - загрузить dvb-шник из архива, потом - Alt + F8 -> DelPodpis -> Выполнить (или Run, в зависимости от версии)
Код:
[Выделить все]
Sub DelPodpis(Optional WasDel)
    Dim Entry As AcadEntity, bobj As AcadBlockReference
    
    BlockName = "Подпись"
    DelBlock BlockName, CBool(WasDel)

    ThisDrawing.Regen acAllViewports
    
End Sub

Public Function BlockExist(Name) As Boolean
    BlockExist = False
    For Each Block In ThisDrawing.Blocks
        If UCase(Block.Name) = UCase(Name) Then
            BlockExist = True
            Exit For
        End If
    Next
End Function

Public Sub DelBlock(ByVal NameBlock As String, Optional ByRef WasDel As Boolean)
  Dim Entry As AcadEntity, bobj As AcadBlockReference, BlkSpace As AcadBlock
  WasDel = False
  If BlockExist(NameBlock) Then
    For Each BlkSpace In ThisDrawing.Blocks
      For Each Entry In BlkSpace
        If Entry.ObjectName = "AcDbBlockReference" Then
          Set bobj = Entry
          If LCase(bobj.Name) = LCase(NameBlock) Then bobj.Delete
        End If
      Next
    Next
'    ThisDrawing.Regen acAllViewports
    ThisDrawing.Blocks(NameBlock).Delete
    WasDel = True
  End If
End Sub
[ATTACH]1175664819.rar[/ATTACH]
den001 вне форума  
 
Автор темы   Непрочитано 05.04.2007, 23:46
#6
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Блок то нарисованный его с помощью лиспа невозможно удалить, пришлось тупо этот блок заменить другим блоком ПРОСТОЙ ТОЧКОЙ ивсе, не заментно и просто!

Спасибо за ответы, но все должно быть гениально и просто....
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.04.2007, 07:04
#7
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Никак не могу взять в толк, для чего надо делать 40 лейаутов в одном файле. Лучше сделать 40 файлов. Лэйауты хороши для неделимых моделей, вроде этой http://dwg.ru/forum/viewtopic.php?t=12593. Охота пэном гонять модель из конца в конец? Легче сказать Ctrl+Tab. Или разместить на экране пару окон с теми местами, где идет текущая работа.
Vova вне форума  
 
Непрочитано 06.04.2007, 08:28
#8
Кулик Алексей aka kpblc
Moderator

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


Совсем забыл про эту ветку...
> dextron3: посмотри в [url=http://dwg.ru/forum/viewtopic.php?t=10474]FAQ[url] или в dwg.ru/art/8 - там все расписано
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.04.2007, 15:52
#9
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Цитата:
Сообщение от Vova
Никак не могу взять в толк, для чего надо делать 40 лейаутов в одном файле. Лучше сделать 40 файлов. Лэйауты хороши для неделимых моделей, вроде этой http://dwg.ru/forum/viewtopic.php?t=12593. Охота пэном гонять модель из конца в конец? Легче сказать Ctrl+Tab. Или разместить на экране пару окон с теми местами, где идет текущая работа.
А для того что бы потом легче изменения вносить, сразу на одном листе чем потом тыкать и вспоминиатгде в каком листе затронут эти изменения, лучше чтобы один проект был в одном файле, работал на разных фирмах, и все вскоре понимали это
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 01.07.2007, 08:09
#10
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Так ничего не получилось а в автокаде есть своя команда для удаления одинаковых блоков со всего файла?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 01.07.2007, 08:30
#11
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от dextron3
Так ничего не получилось а в автокаде есть своя команда для удаления одинаковых блоков со всего файла?
Такой команды нету.
Так лисп КрЫса вроде рабочий.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 01.07.2007, 09:38
#12
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Цитата:
А для того что бы потом легче изменения вносить, сразу на одном листе чем потом тыкать и вспоминиатгде в каком листе затронут эти изменения, лучше чтобы один проект был в одном файле, работал на разных фирмах, и все вскоре понимали это
Данные о проекте или общие данные для всех листов проекта можно хранить в свойствах подшивки. При правильной организации работы эти данные на листах вообще трогать не будешь, достаточно будет отредактировать совйства подшивки.
Блок можно не удалять впринципе и даже не заменять на другой, а просто отредатировать удалив из него подпись. Изменения затронут весь проект.
Krieger вне форума  
 
Непрочитано 01.07.2007, 20:18
#13
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
А для того что бы потом легче изменения вносить, сразу на одном листе чем потом тыкать и вспоминиатгде в каком листе затронут эти изменения, лучше чтобы один проект был в одном файле, работал на разных фирмах, и все вскоре понимали это
Может быть когда нибудь ты поймешь, что то что понимают все - полная ерунда и глупость. (это касается только класса определенных задач)
Организация процесса проектирования и есть та задача которую все понять не могут.
Sleekka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как удалить блоки из лайаута?

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