帮助-尝试制作functi
我正在努力使我的lisp例程透明化。该例程仅通过将视图窗口调整两个点来调用顶部方向。(defun test (/ cp wcp1 wcp2 ss) ; top orientation
(setq cp (getvar "viewctr"))
(setq wcp1 (list (- (car cp) 5) (- (cadr cp) 5) (caddr cp)))
(setq wcp2 (list (+ (car cp) 5) (+ (cadr cp) 5) (caddr cp)))
(setq ss (ssget "_C" wcp1 wcp2))
(command "_.view" "top")
(command "_.zoom" "O" ss "")
(princ)
)
我发现这个方法可以使它透明
但是经过一些研究,我意识到(如果我错了,请纠正我),只要在例程中调用“命令”调用,这就不可能是透明的。到底有没有可能让它变得透明?如果没有,我如何修改代码以摆脱对该特定代码的“命令”调用?
谢谢你的建议。 你好
在说任何与你的问题相关的话之前。。。你知道t是一个受保护的符号,在vanilla lisp中代表true吗? 是的,我知道,但不管怎样,这没有什么区别。让我们把“t”改为“test”。 你试过了吗
好吧,透明度只适用于命令功能。 是的,我试过了。这没什么区别。整个想法
vlax-add-cmd 是使例程作为标准Autocad命令功能运行。
那么,我应该停止梦想我的函数的透明度吗? https://www.cadtutor.net/forum/topic/6354-is-it-possible/
可能会有帮助
1.将(defun test(/…)重命名为(defun c:test(/…)。。。。
2、用途:
命令:line
命令:(c:测试)
.....
您好,我的建议是使用activeX方法
(vl-load-com)
(setq *acDoc* (vla-get-activedocument (vlax-get-acad-object)))
(defun test (/ wc ss vw)
(if (and (setq wc (mapcar ''((f) (mapcar f (getvar "viewctr") '(5. 5. 0.))) '(- +))
ss (apply 'ssget (cons "_C" wc))
)
(setq vw (vla-get-activeviewport *acdoc*))
)
(progn (vlax-put vw 'direction '(0. 0. 1.))
(vla-put-activeviewport *acdoc* vw)
(apply 'vla-zoomwindow (cons (vlax-get-acad-object) (mapcar 'vlax-3d-point wc)))
)
)
(princ)
)
(vlax-add-cmd "test" 'test "test" 1)
;reference: Dev.Documentation
;ACRX_CMD_MODAL (0) Command cannot be invoked while another command is active.
;ACRX_CMD_TRANSPARENT (1) Command can be invoked while another command is active.
;ACRX_CMD_USEPICKSET (2) When the pickfirst set is retrieved it is cleared within AutoCAD.
; Command will be able to retrieve the pickfirst set. Command cannot retrieve or set grips.
;ACRX_CMD_REDRAW (4)
您是否在发出透明命令时添加了前缀“引号”(撇号)?
或
我记得类似于ortho 45的“透明”,但没有使用“vlax add cmd”,只是通过调用要包含括号的符号的函数
示例:(测试)(dd)等。。
嗯,正如我所想,通过取消“命令”调用,它起到了作用。感谢您提供activeX版本。
不过有一个小问题
最后的
(apply 'vla-zoomwindow (cons (vlax-get-acad-object) (mapcar 'vlax-3d-point wc)))效果不好。它会缩放到另一个区域,比如向上移动。知道吗?
抱歉,最小测试
(setq wc (mapcar ''((f) (mapcar f (getvar "viewctr") '(5. 5. 0.))) '(+ -)))第一个角点应低于上角点,即:将此“(+-)更改为“(+)?
另外,如果你想缩放多个物体?IMO boundingbox函数可能有帮助
只要activeX建议解决了这个问题,其余的就让你自己动手
页:
[1]
2