jweber 发表于 2022-7-5 15:48:29

lisp中的“revcloud”命令是

我知道revcloud命令依赖于系统变量和图形的当前注释比例来尝试适当地缩放弧长,但它总是错误的。我编写了一个lisp,使其弧长恒定,但我遇到了一个问题(命令“revcloud”)。
 
 
为什么选择不同?如何从lisp中获取所有选项?
 
这是我的w.i.p.Lisp程序:
 
(defun c:RC1 (/)
(setq TAB (getvar "TILEMODE"))
(cond
   ((= TAB 0)
   (command "revcloud" "a" ".25" ".25")
   (while (> (getvar 'CmdActive) 0) (command pause))
   )
   ((= TAB 1)
   (command "revcloud" "a" "24" "24")
   (while (> (getvar 'CmdActive) 0) (command pause))
   )
)
)

ronjonp 发表于 2022-7-5 16:03:22

这很奇怪。以下是通过lisp获取所有提示的方法:
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "_.revcloud ")
 
如果您使用dimscale或其他工具来设置这些数字,它可能是这样的乘数。。值得深思。
 
(defun c:foo (/ _dimscale doc n)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(defun _dimscale (n)
   (* n
      (cond ;;in viewport
   ((and (zerop (getvar 'tilemode)) (> (getvar 'cvport) 1)) (last (trans '(0 0 1.0) 3 2)))
   ;;in pspace or dimscale is 0
   ((or (= (getvar 'cvport) 1) (zerop (getvar 'dimscale))) 1.)
   ;;in modelspace
   ((getvar 'dimscale))
      )
   )
)
(setq n (vl-princ-to-string (_dimscale 0.25)))
(vla-sendcommand doc (strcat "_.revcloud a " n " " n " "))
(princ)
)
(vl-load-com)

jweber 发表于 2022-7-5 16:13:18

谢谢ronjonp!我以前从未遇到过这种情况,但假设这与autocad最近(2016年左右)使用revcloud命令进行的更新有关。感谢您使用dimscale的解决方法和建议!

Grrr 发表于 2022-7-5 16:33:17

尝试使用initcommandversion。

jweber 发表于 2022-7-5 16:44:23

我甚至没有意识到这是一件事。谢谢你的知识!

ronjonp 发表于 2022-7-5 16:53:29

 
很乐意帮忙
页: [1]
查看完整版本: lisp中的“revcloud”命令是