ADN Club > AutoLisp / VisualLISP и DCL

Как выключить и включить слой?

(1/3) > >>

Anatoly:
Есть имя слоя, надо выключить, потом включить.
Аналогично заморозить/разморозить.
В чертеже, не в видовом экране.

Алексей Кулик:
Ну, не каждый слой можно разморозить - текущий-то точно не получится. А так в чем сложность?

--- Код - Auto/Visual Lisp [Выбрать] ---(vl-load-com) (defun change-layer-lock (doc name status / layer)  ;|doc - документ, в котором выполняется работа. nil -> текущийname - имя слояstatus - заблокировать (t) или разблокировать (nil)*    Примеры вызова:(change-layer-lock nil "SomeLayer" t)(change-layer-lock nil "SomeLayer" nil)|;  (if (not doc)    (setq doc (vla-get-activedocument (vlax-get-acad-object)))  ) ;_ end of if  (if (= (type (setq layer (vl-catch-all-apply (function (lambda () (vla-item (vla-get-layers doc) name))))))         'vla-object      ) ;_ end of =    (vla-put-lock      layer      (if status        :vlax-true        :vlax-false      ) ;_ end of if    ) ;_ end of vla-put-lock  ) ;_ end of if) ;_ end of defun (defun change-layer-freeze (doc name status / layer)  ;|doc - документ, в котором выполняется работа. nil -> текущийname - имя слояstatus - заблокировать (t) или разблокировать (nil)*    Примеры вызова:(change-layer-freeze nil "SomeLayer" t)(change-layer-freeze nil "SomeLayer" nil)|;  (if (not doc)    (setq doc (vla-get-activedocument (vlax-get-acad-object)))  ) ;_ end of if  (if (= (type (setq layer (vl-catch-all-apply (function (lambda () (vla-item (vla-get-layers doc) name))))))         'vla-object      ) ;_ end of =    (vl-catch-all-apply      (function (lambda ()                  (vla-put-freeze                    layer                    (if status                      :vlax-true                      :vlax-false                    ) ;_ end of if                  ) ;_ end of vla-put-freeze                ) ;_ end of lambda      ) ;_ end of function    ) ;_ end of vl-catch-all-apply  ) ;_ end of if) ;_ end of defun

Anatoly:
Спасибо.
Сложность в том, что пишу на VBA, а Lisp использую как дополнение, поэтому не знаток.
А можно про вкл/выкл слой?

Алексей Кулик:
Все то же самое, только заменить vla-put-layerlock на vla-put-layeron.
P.S. Если основной язык VBA, то зачем использовать lisp? И не пора ли переходить на сторону .NET? :)

Anatoly:
Связка Lisp-VBA и наоборот довольно эффективна, у каждого языка свои преимущества.
На VBA быстрее писать и проще отладка (сразу при выполнении) не надо компилировать как на NET.
Если хватает функционала, то самое то.
Если не хватает, то добавляю LISP.
Впрочем дело вкуса.
Спасибо.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии