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

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

LISP. Как определить вставку блока с xclip?

Ответ
Поиск в этой теме
Непрочитано 16.02.2009, 18:24 #1
LISP. Как определить вставку блока с xclip?
Apelsinov
 
Проектировщик ВК. LISP-любитель.
 
Москва
Регистрация: 15.12.2003
Сообщений: 1,186

Есть объект вставки блока, как можно программно определить обработана она xclip или нет? Лучше объектными методами.
Просмотров: 2402
 
Непрочитано 16.02.2009, 18:34
#2
VVA

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


Код:
[Выделить все]
(defun mip:block-GetXclip ( vla-obj / result )
;;Если блок подрезан, возвращает SPATIAL_Filter (можно узнать координаты подрезки ) , иначе nil
;;If the block is clipped, returns SPATIAL filter, differently return nil
;; test
;; (mip:block-GetXclip (vlax-ename->vla-object(car(entsel "\nSelect clipped xref"))))
  
   (vl-catch-all-apply
      '(lambda ( )
           (if
               (and
		 (eq (vla-get-ObjectName vla-obj) "AcDbBlockReference")
                   (eq :vlax-true
                       (vla-get-HasExtensionDictionary vla-obj)
                   )
               )
               (setq result
                   (entget
                       (vlax-vla-object->ename
                           (vla-item
                               (vla-item
                                   (vla-getExtensiondictionary vla-obj)
                                   "ACAD_FILTER"
                               )
                               "SPATIAL"
                           )
                       )
                   )
               )
           )
       )
   )
   result
)
PS Добавлено Если проанализировать 71 группу SPATIAL_Filter то можно узнать, включен или нет показ подрезки.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.02.2009, 12:39
#3
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,186
<phrase 1=


VVA,
есть проблемка небольшая, если у блока был удален xcip, то
Код:
[Выделить все]
(vla-item 
 (vla-getExtensiondictionary vla-obj)
    "ACAD_FILTER"
)
выдает ошибку
Apelsinov вне форума  
 
Непрочитано 18.02.2009, 12:46
#4
VVA

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


Apelsinov, И если его не было то же. Поэтому операция взята в обертку vl-catch-all-apply. Используй не фрагмент кода, а ф-цию целиком
*** ДОБАВЛЕНО
Вот вариант через lisp без vla
Код:
[Выделить все]
(and (setq blk (car(entsel "\nУкажи подрезанный блок")))
     (setq dict (cdr(assoc 360 (entget blk))))
     (if (and
           (setq sp (member '(3 . "ACAD_FILTER") (entget dict)))
           (setq sp (cdr(assoc 360 sp)))
           (setq sp (member '(3 . "SPATIAL")(entget sp)))
           (setq sp (cdr(assoc 360 sp)))
           )
       (progn
         (if (= (cdr(assoc 71 (entget sp))) 1)
           (alert "Блок подрезан\nКонтур включен")
           (alert "Блок подрезан\nКонтур ОТКЛЮЧЕН")
         )
         )
       (alert "Блок не подрезан")
         )
     )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.02.2009 в 13:04.
VVA вне форума  
 
Автор темы   Непрочитано 18.02.2009, 14:03
#5
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,186
<phrase 1=


VVA,
про vl-catch-all-apply это все понятно, просто я думал, что есть возможность отловить ошибку на не нахождение vla-item
Apelsinov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как определить вставку блока с xclip?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить геометрические характеристики сечения в AutoCAD. Ihor AutoCAD 50 10.04.2018 16:54
Как определить модуль упругости осадки? ilya782 Прочее. Архитектура и строительство 10 07.06.2008 15:04
энергоэффективность- как определить договорную стоимость Максим Алексеевич Инженерные сети 1 04.06.2008 20:46
Как изменить свойства атрибутов блока ALFMario AutoCAD 15 25.01.2008 00:42