CAD 发表于 2022-7-5 15:59:33

Lisp不适用于仅模型la

您好,我有一个lisp,只有在布局谁可以修改它,所以我也可以在模型中运行工作。thxxxxx
在模型中,它说:;错误:错误的参数类型:lselsetp nil
 
 

(Defun c:vplk ()
(setq d (ssget "_x" '((0 . "VIEWPORT"))))
        (vplock d T)(princ))

(Defun c:vpun ()
(setq d (ssget "_x" '((0 . "VIEWPORT"))))
        (vplock d nil)
        (princ)
)

(Defun vplock (sel flg)
        (setq mode (if flg:vlax-true :vlax-false))
(repeat (setq i (sslength sel))
          (vlax-put-property (vlax-ename->vla-object (ssname sel (Setq i (1- i))))
          'DisplayLocked mode)
)
        (princ (strcat "\nViewports " (if flg "" "Un" )"locked"))(princ)
)                                  
(vl-load-com)

marko_ribar 发表于 2022-7-5 16:03:55

好了,你不能锁定/解锁主模型空间视口。。。

CAD 发表于 2022-7-5 16:07:57

不是说,当iam在“模型”选项卡中时,我希望布局选项卡具有视口锁定/解锁功能。lisp仅在iam位于“布局”选项卡中时有效。

Tharwat 发表于 2022-7-5 16:11:35

你好
一个例子。

(defun c:vplk (/ spc)
(setq spc (getvar 'ctab))
(foreach lay (layoutlist)
   (setvar 'ctab lay)
   (vplock (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 lay))) t)
)
(setvar 'ctab spc)
(princ)
)

CAD 发表于 2022-7-5 16:13:10

你好Tharwat,
 
Lisp程序不起作用。

Tharwat 发表于 2022-7-5 16:17:58

 
它在我的Cad 2015上确实有效。
 
命令栏上有错误消息吗?

Roy_043 发表于 2022-7-5 16:20:31

查看OP中的代码,问题应该只发生在没有视口的图形中。
 
要修复它,请尝试:

(defun c:vplk ( / d)
(if (setq d (ssget "_X" '((0 . "VIEWPORT"))))
   (vplock d T)
)
(princ)
)

CAD 发表于 2022-7-5 16:24:09

两个代码均不工作错误代码
 
命令:VPLK
恢复缓存的视口-重新生成布局。
; 错误:无函数定义:VPLOCK
 
我使用的是acad2016,你还可以添加vpunlock功能吗

Tharwat 发表于 2022-7-5 16:27:24

 
您需要加载该函数“VPLOCK”以及我之前发布的代码,因为我以另一种方式重新编写了该函数,您可以用与第一篇文章中发布的相同的方式将其用于两个选项。

CAD 发表于 2022-7-5 16:30:17

 
是的,谢谢你,当我结合它的作品很好!!!
页: [1] 2
查看完整版本: Lisp不适用于仅模型la