qazxswk
发表于 2022-6-21 18:36:26
rocking2008 发表于 2022-6-21 09:27
他的意思应该是设置一个常用值例如20,使用命令后,直接按20进行偏移,同时有一个选项子命令C做为修改这个 ...
是这个意思,不过Bao_lai大神的方案也不错,可能是个人习惯问题吧。
hhh454
发表于 2022-6-22 00:48:27
用dcl记录数值,是不是要简单一点
qazxswk
发表于 2022-6-22 08:25:25
hhh454 发表于 2022-6-22 00:48
用dcl记录数值,是不是要简单一点
做成对话框形式?好像没有必要,就一个值
hhh454
发表于 2022-6-22 09:31:15
对话框取值,好处可以多值一次取,也可以记忆,没有那么多的确定,单个数值也是一样的,可视化也比较直接,不用看左下角
baitang36
发表于 2022-6-22 13:07:14
弄一个全局变量,如果为nil就用默认值。改全局变量值很简单
masterlong
发表于 2022-6-22 13:56:06
ssget换成entsel,就可以加参数了,当然,程序流程大不同
qazxswk
发表于 2022-6-24 07:42:01
baitang36 发表于 2022-6-22 13:07
弄一个全局变量,如果为nil就用默认值。改全局变量值很简单
我原代码中的newdist、dist就是全局变量吧。
qazxswk
发表于 2022-6-24 07:51:19
masterlong 发表于 2022-6-22 13:56
ssget换成entsel,就可以加参数了,当然,程序流程大不同
我写了个用getpoint函数的,这样就强制是要框选了,用entsel,那就是点选了,都没有ssget可框可点方便。
vitalgg
发表于 2022-6-24 19:55:01
本帖最后由 vitalgg 于 2022-6-24 20:02 编辑
grread
https://atlisp.cn/function/example:grread
(defun example:grread (/ flag r)
"grread 编程示例,当按下键盘时,弹窗提示按的什么键,否则显示光标的坐标"
(setq r 100.0)
(setq flag t)
(while flag (setq gr (grread t 16))
"处理输入"
(cond ((= 2 (car gr))
"按下了键盘按键"
(cond ((= "x"
(chr (cadr gr)))
(alert (strcat "按下了"
(chr (cadr gr))))
"设置条件退出循环"
(setq flag nil))
((= "S"
(strcase (chr (cadr gr))))
"以下进行 按了 S的后处理程序"
(setq r (cdr (assoc "半径"
(ui:input "设置"
(list (list "半径"
r)))))))
((= "C"
(strcase (chr (cadr gr))))
"以下进行 按了 C 的后处理程序-画圆"
(entity:make-circle (cadr (grread t 0))
r))
(t (alert (vl-prin1-to-string gr)))))
((= 3 (car gr))
"按下鼠标左键"
(alert "click left"))
((or (= 25 (car gr))
(= 11 (car gr)))
"按下鼠标右键"
(alert "click right"))
((= 5 (car gr))
"移动鼠标"
(princ "当前光标的坐标: ")
(princ gr))
(t "其它情况"
(princ gr)))
(princ "\n输入[ 退出x | 设置s | 画圆c ]"))
(princ))
`中微子
发表于 2023-3-11 11:05:32
初学者,这个看不懂
(setq ss(ssget ":s"))
(vlax-for ss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(mapcar '(lambda (x)(vla-offset ss x))(list newdist (- newdist)) )(vla-delete ss))
这样是偏移线,有大佬解释一下吗?谢谢!
我都用重新生成线来做类似操作,写起来很麻烦。