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

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

Программно в Vlisp удалить пустые растры

Ответ
Поиск в этой теме
Непрочитано 12.12.2008, 11:28 #1
Программно в Vlisp удалить пустые растры
elena_k
 
Регистрация: 15.02.2008
Сообщений: 32

Подскажите пожалуйста, как в Vlisp отличить и затем удалить пустые растровые изображения. На прикрепленном чертеже, кроме одного видимого растра, есть еще 39 (если через свойства искать, или выбрать (ssget "_x" '((0 . "IMAGE"))) ). Может быть можно выбрать только видимые?, но свойства (cdr (asoc 280 (entget (ssname ss_image k_image)))) у невидимых дает ошибку. Что-то я не так делаю. Подскажите пожалуйста, а то таких чертежей наплодилось очень много. Заранее благодарна.

Вложения
Тип файла: dwg
DWG 2004
пустые растры.dwg (120.7 Кб, 351 просмотров)

Просмотров: 1703
 
Непрочитано 12.12.2008, 11:59
#2
Sleekka

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


может быть поможет команда tfames из Express, она кстати в открытом коде.
Sleekka вне форума  
 
Непрочитано 12.12.2008, 11:59
#3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,170


Например, так: http://forum.dwg.ru/showthread.php?t=4983
kp+ вне форума  
 
Автор темы   Непрочитано 12.12.2008, 12:22
#4
elena_k


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


Спасибо за советы, пока не получилось, буду разбираться.
elena_k вне форума  
 
Непрочитано 12.12.2008, 12:30
#5
VVA

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


elena_k, ImgDet не удаляет?
Здесь важно чтобы растры были вставлены в этот чертеж, а не пришли вместе с xref'ами. Иначе нужно открывать ссылки и делать ImgDet там
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.12.2008, 12:31
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Код:
[Выделить все]
(vlax-for fam_item (vla-get-ModelSpace
		     (vla-get-ActiveDocument (vlax-get-acad-object))
		   )
  (if
    (and
      (= (vla-get-ObjectName fam_item) "AcDbRasterImage")
      (vl-catch-all-error-p
	(vl-catch-all-apply '(lambda (x) (vla-get-ImageFile x)) (list fam_item))
      )
    )
     (vla-Delete fam_item)
  )
)
Добавлено:
Цитата:
Сообщение от elena_k Посмотреть сообщение
Подскажите пожалуйста, как в Vlisp отличить и затем удалить пустые растровые изображения...
Удалить см. код выше, а отличить - см. фрагмент кода:
Код:
[Выделить все]
(vl-catch-all-error-p
	(vl-catch-all-apply '(lambda (x) (vla-get-ImageFile x)) (list fam_item))
)
возвращает t, если растр пустой

Последний раз редактировалось Makswell, 12.12.2008 в 12:46.
Makswell вне форума  
 
Непрочитано 12.12.2008, 12:36
#7
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


>elena_k
Цитата:
но свойства (cdr (asoc 280 (entget (ssname ss_image k_image)))) у невидимых дает ошибку
Попробуй так
Код:
[Выделить все]
(defun test (/ ss_image)
  (if (setq ss_image (ssget "_x" '((0 . "IMAGE"))))
    (mapcar
      '(lambda (x)
  (if (not (entget (cdr (assoc 340 (entget x)))))
    (vl-cmdf "_erase" x "")
  ) ;_ end of if
       ) ;_ end of lambda
      (vl-remove-if
 'listp
 (mapcar 'cadr
  (ssnamex ss_image)
 ) ;_ end of mapcar
      ) ;_ end of vl-remove-if
    ) ;_ end of mapcar
  ) ;_ end of if
  (princ)
) ;_ end of defun
CB вне форума  
 
Непрочитано 12.12.2008, 12:49
#8
VVA

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


VVA, В посте #5 идет речь о неиспользуемых растрах. Т.е. тех, которые были вставлены, потом удалены, и в Диспетчере изображений имеют статус "неиспользуемое"
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 12.12.2008, 13:48
#9
elena_k


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


VVA, ImgDet не удаляет, и растраы пришли с элементами TurboCad-a
elena_k вне форума  
 
Автор темы   Непрочитано 12.12.2008, 14:21
#10
elena_k


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


СВ, Спасибо огромное, все замечательно. Все получилось!!!
elena_k вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Программно в Vlisp удалить пустые растры



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно удалить Стиль Текста Led AutoCAD 2 12.01.2004 14:35