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

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

Лисп на удаление атрибутов и гиперсылок

Ответ
Поиск в этой теме
Непрочитано 21.09.2008, 19:20 #1
Лисп на удаление атрибутов и гиперсылок
Малюк
 
проектировщик
 
Житомир
Регистрация: 03.05.2007
Сообщений: 652

Необходимо электронный чертёж передать заказчику. Чертёж состоит из блоков с атрибутами, в каждый блок вставлена гиперсылка. Необходим лисп на удаление всех атрибутов из блоков и гиперсылок со всех элементов в чертеже (зачем заказчику лишнее знать). Всем кто ответит спасибо.
Просмотров: 2490
 
Непрочитано 21.09.2008, 19:26
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй сначала burst из Express Tools
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.09.2008, 19:31
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй сначала burst из Express Tools
С учетом http://dwg.ru/f/showthread.php?t=24279
По поводу удаления гиперссылок
_-HYPERLINK _R _ALL
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 21.09.2008, 19:33
#4
Малюк

проектировщик
 
Регистрация: 03.05.2007
Житомир
Сообщений: 652


burst - разваливает блоки а надо чтобы они были целыми
Малюк вне форума  
 
Непрочитано 21.09.2008, 21:04
#5
Vova

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


Если есть даже две-три сотни атрибутов то вручную их удалить можно за пол-часа. Можно и таким лиспом http://www.caduser.ru/cgi-bin/f1/board.cgi?t=21807yD заменить все атрибуты, например, на ххх или на -, или на .. Не помню, можно-ли замемить атрибуты на пробел
Vova вне форума  
 
Непрочитано 21.09.2008, 21:35
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Особо не проверял
Код:
[Выделить все]
;;Hyperlink and Attribute Delete
(defun C:HAD ( / tempObjType *error* lst NewBlk)
    (defun *error* (msg)(princ msg)(cts:layer-status-restore)(princ))
(vl-load-com)  
(cts:layer-status-save) (princ "\n ** Start ***")
(vlax-for Blk (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)))
 (if (= (vla-get-IsXref Blk) :vlax-false)
  (vlax-for Obj Blk (setq tempObjType (vla-get-ObjectName Obj))
    (terpri)(princ tempObjType)
    (cond ((vl-position tempObjType '("AcDbAttribute" "AcDbAttributeDefinition"))
	   (vla-delete Obj))
	  ((and (vl-position tempObjType '("AcDbBlockReference"))
		(= (vla-get-HasAttributes obj) :vlax-true)
		(not (vl-position Obj lst))
		)
	   
	   (setq NewBlk (vla-InsertBlock (vla-ObjectIDToObject
	   (vla-get-activedocument (vlax-get-acad-object)) (vla-get-OwnerID Obj))
	       (vla-get-insertionpoint Obj)(vla-get-name Obj)
	       (vla-get-xscalefactor Obj)(vla-get-yscalefactor Obj)
	       (vla-get-zscalefactor Obj)(vla-get-rotation Obj)))
	   (mapcar '(lambda (x y) (vlax-put-property NewBlk x y))
	   '(Linetype LineWeight Color Layer)
	   (mapcar '(lambda (x) (vlax-get-property Obj  x))
	     '(Linetype LineWeight Color Layer)))
	   (vla-delete Obj)
	   (setq lst (cons NewBlk lst) Obj NewBlk)
	   )
	  (t nil)
	  )
    (vlax-for hyp (vla-get-hyperlinks Obj)(vla-delete hyp))
    )
   )
  )
  (cts:layer-status-restore)
  (princ "     ** End ***")(princ)
  )

(defun cts:layer-status-restore ()
    (foreach item *PD_LAYER_LST*
      (if (not (vlax-erased-p (car item)))
        (vl-catch-all-apply
          '(lambda ()
             (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
             (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
             ) ;_ end of lambda
          ) ;_ end of vl-catch-all-apply
        ) ;_ end of if
      ) ;_ end of foreach
    (setq *PD_LAYER_LST* nil)
    ) ;_ end of defun

  (defun cts:layer-status-save ()
    (setq *PD_LAYER_LST* nil)
    (vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
      (setq *PD_LAYER_LST* (cons (list item
                                  (cons "freeze" (vla-get-freeze item))
                                  (cons "lock" (vla-get-lock item))
                                  ) ;_ end of cons
                            *PD_LAYER_LST*
                            ) ;_ end of cons
            ) ;_ end of setq
      (vla-put-lock item :vlax-false)
      (if (= (vla-get-freeze item) :vlax-true)
      (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
      ) ;_ end of vlax-for
    ) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 21.09.2008, 22:26
#7
Малюк

проектировщик
 
Регистрация: 03.05.2007
Житомир
Сообщений: 652


Спасибо всё работает!!!
Малюк вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп на удаление атрибутов и гиперсылок



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Извлечение атрибутов блока и вставка атрибутов в формулу andery AutoCAD 38 15.06.2009 02:39
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Ошибочное масштабирование атрибутов дин.блока при копировании [N.S] AutoCAD 22 27.02.2008 10:58
Помогите переработать Нумератор /Ренумератор атрибутов блоко gizmo_zx Программирование 5 05.08.2007 12:41
Нужен лисп (пронизыватель лайаутов) dextron3 LISP 91 25.07.2007 07:37