视口
我要开始为我的视口制作一个图层谁能帮我用lisp程序来;
getvar oldlayer
使层“vport”颜色49不打印
生成视口//
setvar oldlayer 可能是这样:
(defun c:vp (/ oldlay)
(setq oldlay (getvar "clayer"))
(setvar "cmdecho" 0)
(if (/= (getvar "ctab") "Model")
(progn
(if (not (tblsearch "LAYER" "vport"))
(command "-layer" "M" "vport" "C" "49" "vport" "P" "N" "vport" "")
(setvar "clayer" "vport")
) ; end if
(command "-vports"
pause
pause
) ; end command
(setvar "clayer" oldlay)
) ; end progn
(alert "Viewport Cannot be Drawn in Model Space.")
) ; end if
(setvar "cmdecho" 1)
(princ)
) ; end defun
它工作得很好!非常感谢。 有必要吗?
难道你不需要设置一个模板来开始所有的绘图吗? 不幸的是,是的
我是承包商
我使用了许多具有不同启动模板的autocad风格的机器 我想我在这里有点模糊,但是你怎么加载Lisp程序呢?你会把它加载到每个客户的机器上吗?它会活在U盘上吗?
如果你不得不让模板具有可移植性,那么它仍然不是最简单的解决方案吗?
难道不可能在线存储模板,以便在任何有互联网连接的地方都可以轻松访问它吗?
(很抱歉问这么多问题,但建立有效的系统是我最感兴趣的:wink:) 如果我试着将所有的自定义项保持为一种类型,(lisp),那么就更容易记住。
否则,我要查找多个目录和更新文件。
确实,模板可能已经制作了vport层,并且可以绘制视口。但是,如果我想要另一个,我会将vport层置为当前,绘制vport,并将之前绘制的层置为当前。
还有很多我工作的地方已经有了一个模板,有些地方不想碰它。 模板新手的优点,
使用模板(以及已经创建的vport层),您仍然需要记住在绘制端口之前切换到vport层,然后在绘制其他对象之前切换回。这显然需要更多的时间,并且LISP发布更快,因为如果已经创建了vport层,它不会复制vport层。
解决这个问题的另一种方法是使用反应堆——我最近(在ASMI和其他人的帮助下)了解了一些。
下面是一个可以使用模板的反应器。
; Layer Director
(vl-load-com)
(vlr-command-reactor
nil '((:vlr-commandWillstart . startCommand))
) ; end command reactor
(vlr-command-reactor
nil '((:vlr-commandEnded . endcommand))
) ; end command reactor
(vlr-command-reactor
nil '((:vlr-commandCancelled . cancelCommand))
) ; end command reactor
(defun startCommand (calling-reactor startcommandInfo / thecommandstart)
(setq oldlay (getvar "clayer"))
(setq thecommandstart (nth 0 startcommandInfo))
(cond
((= thecommandstart "+VPORTS")
(setvar "clayer" "VPORT")
) ; end condition
) ; end cond
(princ)
) ; end startcommand
(defun endCommand (calling-reactor endcommandInfo / thecommandend)
(setq thecommandend (nth 0 endcommandInfo))
(cond
((= thecommandend "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition
) ; end cond
(princ)
) ; end endCommand
(defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
(setq thecommandcancel (nth 0 cancelcommandInfo))
(cond
((= thecommandcancel "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition
) ; end cond
(princ)
) ; end cancelCommand
页:
[1]