669423907 发表于 2020-5-6 23:22:19

智能删除,关于误: 参数类型错误: 二维/三维点:


为了方便删除刚生成的对象(有时画了,又不想要),写了一个小程序,多数时候运行顺利,但有时候不行,会提示
错误: 参数类型错误: 二维/三维点: 1078
不知道是什么原因


(defun S删除(/ di dl il)
(setq il 1 di (cadr(grread 3)) dl (cadr(grread 3))) ;光标位置
(while (and il (< (distance di dl) (/(getvar"viewsize") 100)) )
(progn
(setq dl (cadr(grread 3)))
(if (member (car (grread t 15 0)) '(11 25) ) (progn (setq il nil) (diy) ) ) ;右键删除
) )
(defun diy()()(princ))
(setq di nil dl nil il nil)
(princ))





(defun c:13()
(defun diy()(command "erase" (entlast) "")(princ))
(setq ss (entlast))
(command "_dimlinear" "\\" "\\")
(while(=(getvar "cmdactive")1)(command"\\"))
(command "select" ss (entlast) "")
(if (> (sslength (ssget"p")) 1)
(progn (princ"\n 111") (S删除)
) )
(princ))



669423907 发表于 2020-5-7 10:37:17

顶一下,这个通用性和可扩展性都很好的啊,希望路过的大师指点一下

669423907 发表于 2020-5-7 17:26:40

路过的大神帮看看是什么问题啦

taoyi0727 发表于 2020-5-7 17:54:13

没看懂你写的是啥
有动图最好

jun353835273 发表于 2020-5-8 10:03:16

entlast 需要判断一下是否是你想要删除的东西

669423907 发表于 2020-5-8 22:49:59

问题应该是出在 while 中,就是不知道该怎么解决啊
(while (and il (< (distance di dl) (/(getvar"viewsize") 100)) )
(progn
(setq dl (cadr(grread 3)))
(if (member (car (grread t 15 0)) '(11 25) ) (progn (setq il nil) (diy) ) ) ;右键删除
) )

669423907 发表于 2020-5-8 22:53:28

jun353835273 发表于 2020-5-8 10:03
entlast 需要判断一下是否是你想要删除的东西

entlast 是在 diy 里定义的,可以换成任意啊,应该与之无关
(defun c:13()
(defun diy()(princ"\n 哈喽"))
(S删除)
(princ))

669423907 发表于 2020-5-8 22:57:26

taoyi0727 发表于 2020-5-7 17:54
没看懂你写的是啥
有动图最好

在 (while (and il (< (distance di dl) (/(getvar"viewsize") 100)) ) di dl 两点的距离小于屏幕高度的 1/100 的时候,按右键,运行 (diy)

999999 发表于 2020-8-30 00:00:25

虽然有点不明白,,先顶起来再说,或许后面,,就懂了
页: [1]
查看完整版本: 智能删除,关于误: 参数类型错误: 二维/三维点: