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

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

Как в Autocad сделать возможность сразу изменять динамические параметры блока после вставки

Ответ
Поиск в этой теме
Непрочитано 07.08.2019, 01:01 #1
Как в Autocad сделать возможность сразу изменять динамические параметры блока после вставки
Icumrjunkie
 
Регистрация: 21.02.2019
Сообщений: 1

Возник вопрос, как сделать в Autocad возможность сразу изменять динамический параметр блока после вставку? К примеру, мы вставили блок с линейным параметром и сразу вторым кликом указываем, до какой точки растянуть этот параметр. Примерно как в этом видео:
Increase Size Decrease Size Нажмите для просмотра
https://www.youtube.com/watch?v=tMhC2poGtOg
Просмотров: 627
 
Непрочитано 07.08.2019, 07:42
#2
Кулик Алексей aka kpblc
Moderator

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


Штатными средствами - никак.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.08.2019, 10:53
#3
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,032


1. Создавая тему Вы плохо искали по форуму, пару лет назад тема с подобным вопросом уже была и если мой склероз меня не подводит, то и не одна.
2. Штатными никак, но код, который позволяет делать то, что показано Максимом в ролике, выкладывался и обсуждался на форуме. Автор темы вроде бы Ред Нова...
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 05.09.2019, 04:29
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,760


Я пользуюсь кодом от 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
  ) ;_ end of defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Как в Autocad сделать возможность сразу изменять динамические параметры блока после вставки

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCad 2011 тормозит после входа-выхода в редактор блока Sharnir AutoCAD 31 31.08.2018 14:09
Методы вставки блока из внешних программ в чертеж AutoCad 2015. Plutos Программирование 13 23.09.2015 20:25
Поворот и зеркалирование вставляемого блока в Autocad через Delphi kolio Программирование 13 22.05.2014 16:53
AutoCad 2011. Файлы сразу автоматически закрываются после открытия. alexandrius AutoCAD 10 10.10.2011 10:23
Как изменять динамические параметры блока? PanNik Программирование 1 30.03.2011 16:10