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

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

Изменение свойств и параметров динамического блока

Ответ
Поиск в этой теме
Непрочитано 09.01.2010, 10:41 #1
Изменение свойств и параметров динамического блока
EfremenkoDO
 
Санкт-Петербург
Регистрация: 24.12.2009
Сообщений: 59

Как изменить какой либо параметр динамического блока через лисп? Допустим угловой параметр поставленный на текст. Читал подземелье Autodsk где говорят о возможности управлять параметрами диамического блока через "комнату" - ACAD_EVALUATION_GRAPH. Проблема состоит в том что в модели я не могу добраться до этого раздела по предложеному пути. У меня стоит AutoCAD 2010 - может это его особенность? Вообщем надеюсь, что кто-то уже пытался что-то подобное провернуть.
Просмотров: 3802
 
Непрочитано 09.01.2010, 16:28
#2
Sleekka

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


конечно пытался, а ты пытался курить поиск?
Функцию написал Алексей Кулик aka Kpblc
Код:
[Выделить все]
(defun _kpblc-block-dyn-change-values (ent              lst
                                       /                prop_lst
                                       _kpblc-conv-vla-to-list
                                       )
                                      ;|
	ent	указатель на вхождение блока
	lst	список вида:
      '((<property> . <value>)
	(<property> . <value>)
	)
*    примеры вызова:
(_kpblc-block-dyn-change-values (car(entsel))'(("dist*" . 162.56) ("ang*" . 5.)))
;; Углы надо задавать в радианах!
(_kpblc-block-dyn-change-values (car (entsel)) '(("type" . "minimum")))
|;

  (defun _kpblc-conv-vla-to-list (value / res)
                                 ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (vlax-safearray->list value)
         ) ;_ end of if
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (vl-load-com)

  (vl-catch-all-apply
    '(lambda ()
       (setq
         ent (cond
               (ent)
               (t (car (entsel "\nУкажите вхождение дин.блока <Отмена> : ")))
               ) ;_ end of cond
         ) ;_ end of setq
       ) ;_ end of lambda
    ) ;_ end of vl-catch-all-apply
  (if (and ent
           (setq ent (cond
                       ((= (type ent) 'ename) (vlax-ename->vla-object ent))
                       ((= (type ent) 'vla-object) ent)
                       (t nil)
                       ) ;_ end of cond
                 ) ;_ end of setq
           (= (strcase (vla-get-objectname ent) t) "acdbblockreference")
           (= (vla-get-isdynamicblock
                (vla-item
                  (vla-get-blocks
                    (vla-get-activedocument (vlax-get-acad-object))
                    ) ;_ end of vla-get-blocks
                  (vla-get-effectivename ent)
                  ) ;_ end of vla-item
                ) ;_ end of vla-get-isdynamicblock
              :vlax-true
              ) ;_ end of =
           ) ;_ end of and
    (progn
      (setq
        prop_lst (vlax-safearray->list
                   (vlax-variant-value (vla-getdynamicblockproperties ent))
                   ) ;_ end of vlax-safearray->list
        ) ;_ end of setq
      (foreach item (mapcar '(lambda (a) (cons (strcase (car a)) (cdr a))) lst)
        (if (setq prop
                   (car
                     (vl-remove-if-not
                       '(lambda (x)
                          (wcmatch (strcase (vla-get-propertyname x)) (car item))
                          ) ;_ end of lambda
                       prop_lst
                       ) ;_ end of vl-remove-if-not
                     ) ;_ end of car
                  ) ;_ end of setq
          ;; Имя совпало
          (vl-catch-all-apply
            '(lambda ()
               (vla-put-value
                 prop
                 (vlax-make-variant
                   (cdr item)
                   (vlax-variant-type (vla-get-value prop))
                   ) ;_ end of vlax-make-variant
                 ) ;_ end of vla-put-value
               (vla-update ent)
               ) ;_ end of lambda
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of if
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  )
Sleekka вне форума  
 
Непрочитано 14.01.2010, 19:02
#3
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Я конечно очень рад, что есть и у меня читатели, только мне не понятно почему ...
Цитата:
... в модели я не могу добраться до этого раздела по предложеному пути...
И какого рода требуются изменения?
Можно менять наименование свойства, устанавливать в конкретном вхождении блока значение свойства, можно даже осуществлять формирование структуры свойства, к примеру, заполнять таблицу lookup.
Можно делать любые настройки динамических свойств по аналогии с теми действиями, которые вы производите когда создаете эти свойства.
Создавать динамические свойства можно только через (command или (vl-cmdf.
И что собственно надо изменять в угловом параметре поставленным на текст?
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение свойств и параметров динамического блока

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение атрибутов динамического блока сразу на нескольких листах в файле чертежа Builder_Drew Динамические блоки 20 17.03.2018 19:54
Ошибка "invalid input" при изменении свойств динамического блока ArvI Программирование 14 17.12.2009 00:31
Изменение свойств атрибута в составе блока rzinnurov AutoCAD 9 24.04.2009 15:17
Изменение параметров дин блока ch-viktor Программирование 5 23.05.2008 21:38
изменение свойств атрибутов блока elena_din AutoCAD 8 12.12.2005 14:16