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

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

Возможно ли стереть объекты в модели и на листах одном действием.

Ответ
Поиск в этой теме
Непрочитано 28.02.2012, 17:41 #1
Возможно ли стереть объекты в модели и на листах одном действием.
shartal
 
Регистрация: 12.08.2009
Сообщений: 447

Получить набор объектов в разных пространствах возможно командой SSX, но при указания этого набора на вопрос команды Стереть, получаю ответ, что часть объектов в другом пространстве.
Просмотров: 3924
 
Непрочитано 29.02.2012, 12:12
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Код:
[Выделить все]
 (defun c:test (/ ss)
  (if (setq ss (ssget))
    (mapcar 'entdel
	    (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
    ) ;_ end of mapcar
  ) ;_ end of if
  (princ)
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 29.02.2012, 12:36
#3
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Do$, так удаляться только объекты из пространства модели и одно листа (установленного текущим), на остальных листах объекты остануться.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 29.02.2012, 13:25
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


TararykovDG, Действительно, не знал этого нюанса
Вариант 2
Код:
[Выделить все]
(defun c:test (/ ss)
  (vl-load-com)
  (if (setq ss (ssget))
    (mapcar 'vla-delete
        (mapcar 'vlax-ename->vla-object
	    (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
    )
    )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.02.2012, 13:29
#5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Я проверял так - накидал на листе объектов, select, выбрал их, перешел в модель и запустил лисп. Объекты удалились. Может быть и не для всех вкладок это сработает - надо проверять и тестировать. может вместо entdel использовать vla-delete.
Наверное, если делать основательно, надо взять список объектов набора, разделить объекты по вкладкам и пройтись по ним, программно переключая вкладки и удаляя объекты на них.
Do$ вне форума  
 
Непрочитано 29.02.2012, 14:03
#6
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (vl-load-com)

(defun test (/ adoc)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for blk_def (vla-get-blocks adoc)
    (if (equal (vla-get-islayout blk_def) :vlax-true)
      (vlax-for ent blk_def
        (vl-catch-all-apply
          (function
            (lambda ()
              (vla-delete ent)
              ) ;_ end of LAMBDA
            ) ;_ end of function
          ) ;_ end of vl-catch-all-apply
        ) ;_ end of vlax-for
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Не покатит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.02.2012, 15:49
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Вроде надо удалить только выбранные на разных вкладках объекты, а не все вообще
Do$ вне форума  
 
Непрочитано 29.02.2012, 16:33
#8
Кулик Алексей aka kpblc
Moderator

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


При переходе из пространства в пространство, кажется, "набор" теряется. Или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.02.2012, 16:40
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


какой смысл? не понимаю... все равно по листам как макака скачешь или влом дельку нажать лишний раз?
gomer вне форума  
 
Непрочитано 29.02.2012, 17:06
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
При переходе из пространства в пространство, кажется, "набор" теряется. Или нет?
Теряется, но с помощью опции _p его можно запросить из другого пространства. Или с помощью SSX из Express'ов, как я понял.
Do$ вне форума  
 
Непрочитано 29.02.2012, 18:24
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


vla-delete удаляет отовсюду, только что проверил
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.03.2012, 14:23
#12
shartal


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


В посте 6 убивается все в пространстве без выбора, а вот в посте 4 все хорошо.
Возможно ли выполнить не удаление, а расчленение объектов (таблиц)?

Последний раз редактировалось shartal, 06.03.2012 в 14:30.
shartal вне форума  
 
Непрочитано 07.03.2012, 10:52
#13
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Пробуйте командными методами. Или, при наличии экспрессов, функцией acet-explode, передавая ей Ename объектов по одному.
А что принципиально мешает переключать программно вкладки?
Do$ вне форума  
 
Непрочитано 07.03.2012, 13:01
1 | #14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Таблица представлена неименованным блоком *T### (по аналалогии в размерами *D###). Можно копировать содержимое этого блока в соответствующее пространство.
Код ниже это иллюстрирует
Код:
[Выделить все]
;;; Table Explode Explode table
;;; расчленение таблиц взрыв таблиц
;;;http://forum.dwg.ru/showthread.php?t=79917
(defun tablexplode ( ss / adoc blks u1 objlist e)
  ;;; ss - selection set
  ;;; Use
  ;;; (tablexplode (ssget "_X" (list(cons 0 "ACAD_TABLE"))))
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object))
        blks (vla-get-blocks adoc)
        ) ;_ end of setq
  (vla-startundomark adoc)
  (repeat (setq i (sslength ss))
    (and
      (setq e (ssname ss (setq i (1- i))))
      (setq objlist nil u1 (vla-item blks (cdr(assoc 2 (entget e)))))
      (wcmatch (vla-get-name u1) "`*T*")
      (vlax-for obj u1 (setq objlist (cons obj objlist)))
       (setq n (vla-get-InsertionPoint (vlax-ename->vla-object e)))
        (mapcar '(lambda(item)
                   (vla-move item (vlax-3d-point '(0 0 0)) n)
                   )
                (vlax-safearray->list
                  (vlax-variant-value
                    (vla-copyobjects
                      (vla-get-activedocument (vlax-get-acad-object))
                      (vlax-make-variant
                        (vlax-safearray-fill
                          (vlax-make-safearray
                            vlax-vbobject
                            (cons 0 (1- (length objlist)))
                            ) ;_ end of vlax-make-safearray
                          objlist
                          ) ;_ end of vlax-safearray-fill
                        ) ;_ end of vlax-make-variant
                      ;(vla-get-ModelSpace adoc)
                      (vla-get-block (vla-item (vla-get-layouts adoc) (cdr(assoc 410 (entget e)))))
                      ;;;(vla-get-block (vla-get-ActiveLayout (vla-get-ActiveDocument (vlax-get-acad-object))))
                      )
                    )
                  )
                )
      (vla-delete (vlax-ename->vla-object e))
      )
    )
  )
Вполне возможно, что нужно перед копированием вызывать vla-RecomputeTableBlock, чтобы быть уверенным, что описание блока *T соответствует таблице, или как будут вести себя поля внутри mtexta. Но это уже детали.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Возможно ли стереть объекты в модели и на листах одном действием.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autocad на одном листе линии пунктирные на другом эти же самые прямые в модели пукнтирные как исправить? dextron3 AutoCAD 14 30.11.2014 08:31
Как удержать прежнее начало координат при смене ПСК, работая в одном ИЗОВИДЕ пространства модели BM60 AutoCAD 7 17.08.2009 15:07
Размеры в листах на модели из 3D max lis_3000 AutoCAD 10 09.05.2009 19:40
Деталь в ПМодели на одном слое, а в ПЛиста на другом - такое возможно? BM60 AutoCAD 8 19.12.2008 08:14
Возможно ли использовать модели из 3DS Max в AutoCAD? Jerald AutoCAD 1 26.04.2008 23:26