totzky 发表于 2022-7-6 15:20:28

圆的快捷命令

这是我的代码:
目前,这是出现在我的命令行上的命令:ctd
d: 100
圆指定圆的中心点或:\u Ttr
为圆的第一个切线指定对象上的点:
为圆的第二个切线指定对象上的点:
指定圆半径:50.00000000000000
命令:
命令:
 
如果我在提示下按ESCAPE,
命令:
连续油管钻井
d:
; 错误:错误的参数类型:numberp:nil
 
 
我想要实现的是这样的目标,
命令:ctd
d: 100
圆指定圆的中心点或:\u Ttr
为圆的第一个切线指定对象上的点:
为圆的第二个切线指定对象上的点:
指定圆半径:50.00000000000000
命令:
命令:
 
当我按ENTER键时,
命令:ctd
d: (此时按ENTER键)
圆指定圆的中心点或:\u Ttr
为圆的第一个切线指定对象上的点:
为圆的第二个切线指定对象上的点:
指定圆半径:50.00000000000000
命令:
命令:
 
我该怎么做?

Lee Mac 发表于 2022-7-6 15:26:17

也许是这个?
 

;; Shortcut command for circle
(defun c:ctd (/ a)
   (or (getenv "DIAM") (setenv "DIAM" "0"))
   (if    (setq a (/ (getreal (strcat "\nd<" (getenv "DIAM") ">: ")) 2))
   (setenv "DIAM" (rtos (* 2 a)))
   ) ;_end if
   (command "_circle" "_ttr" pause pause (getenv "DIAM"))
   (princ)
) ;_end defun

totzky 发表于 2022-7-6 15:27:47

谢谢李!这很快。
当我按escape时,如何修复此错误?
 
命令:ctd
d: *取消*
; 错误:功能已取消

Lee Mac 发表于 2022-7-6 15:30:42

我想可能是这样,但它并没有真正绕过它。
 

;; Shortcut command for circle
(defun c:ctd (/ a)
   (defun *error* (msg)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ (strcat "\n" (strcase msg)))
   ) ;_end if
   (princ)
   ) ;_end defun
   (or (getenv "DIAM") (setenv "DIAM" "0"))
   (if    (setq a (/ (getreal (strcat "\nd<" (getenv "DIAM") ">: ")) 2))
   (setenv "DIAM" (rtos (* 2 a)))
   ) ;_end if
   (command "_circle" "_ttr" pause pause (getenv "DIAM"))
   (princ)
) ;_end defun

 
另外,如果我在默认值为的情况下按enter键,它会说,参数不好,数值为零。

Lee Mac 发表于 2022-7-6 15:35:59

对不起,今天时间不多

totzky 发表于 2022-7-6 15:37:02

好的,谢谢,我会等其他人。。。

Lee Mac 发表于 2022-7-6 15:42:02

再看一遍——真是愚蠢的错误。
 
但无法对错误问题进行分类:
 

;; Shortcut command for circle
(defun c:ctd (/ a)
   (defun *error* (msg)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ (strcat "\n" (strcase msg)))
   ) ;_end if
   (princ)
   ) ;_end defun
   (or (getenv "DIAM") (setenv "DIAM" "0"))
   (if    (setq a (getreal (strcat "\nd<" (getenv "DIAM") ">: ")))
   (setenv "DIAM" (rtos a))
   ) ;_end if
   (command "_circle" "_ttr" pause pause (rtos (/ (atof (getenv "DIAM")) 2)))
   (princ)
) ;_end defun

David Bethel 发表于 2022-7-6 15:44:31

托茨基,
 
为了确保命令调用的完整性,您需要在这样的内容上进行大量的补漏白。
 
我采取的方法是在调用CIRCLE之前获取所有值:
 
祝你好运-大卫

totzky 发表于 2022-7-6 15:47:28

测试你的代码David,结果就是这样,
 
命令:ctd
直径:100
选择第一个切点:
选择第一个切点:
选择第一个切点:
选择第一个切点:*取消*(此时我按了ESCAPE)
错误:**函数已取消***

David Bethel 发表于 2022-7-6 15:49:54

我有点迷路了?
 
你选了一个有效的切点吗?
 
-大卫
页: [1] 2
查看完整版本: 圆的快捷命令