新手求教,请问如何做到按一下a就直接执行某命令,不需要回车
比如我有个操作是按一下a就让刚才画的直线偏移50,再按a回到原位置,应该怎么操作呀……我自己写出来的是,按一下a还要回车一下,才执行,用起来很不流畅 码发上来看看 start4444 发表于 2021-6-14 13:39
码发上来看看
前面的操作是画线。顺便我还没有想好再按a就移动回初始位置该怎么弄
(setq shuru (getstring "\n输入左中右 a左/b中/c右"))
(cond
((= shuru "a")
(command "move" ENT13 ENT24 ZX "" PT1Pz2 )
) grread函数可以实现,论坛有很多相关搜索看看
(defun c:tt5 (/ code d loop ss)
(setq ss (ssget) loop T D 50)
(prompt "\n 偏移(A)/退出(空格)]:")
(while loop
(setq code (grread T 8))
(cond
((equal code '(2 97)) (command "move" ss "" "non" '(0 0) "non" (list (setq D (* D -1)) 0)))
((equal code '(2 32)) (setq loop nil))
)
)
(princ)
) 本帖最后由 caocaosasd 于 2021-6-14 17:31 编辑
start4444 发表于 2021-6-14 15:54
grread函数可以实现,论坛有很多相关搜索看看
(defun c:tt5 (/ code d loop ss)
非常感谢大佬的指点!其实我想做一个把刚画出来的两条平行线,按A就偏一下,再按A偏回来这样~这就学习一下! 本帖最后由 caocaosasd 于 2021-6-14 20:01 编辑
start4444 发表于 2021-6-14 15:54
grread函数可以实现,论坛有很多相关搜索看看
(defun c:tt5 (/ code d loop ss)
大佬可否再帮忙看一下……
我想让新画的三线达到这种效果,自己改了一下发现并不能正常运作,因为确实没有看明白代码里的一些内容,比如'(2 97) '(2 32)这种,还有grread T 8 的返回值是啥也没明白……
;;;
(defun C:cxz1 (/ code d loop ss)
(setq OLD_CMDECHO (getvar "CMDECHO"))
(setq CL (getvar "clayer"))
(setq plwidth (getvar "PLINEWID"))
(setvar "CMDECHO" 0)
(setvar "EDGEMODE" 1)
(setvar "PLINEWID" 30)
(command "-layer" "m" "fjgj" "C" "1" "" "")
(setq L1 (getpoint))
(setq L2 (getpoint L1))
(setq KU (angle L1 L2))
(setq PT1 (polar L1 (+ KU (* 0.5 pi)) 75))
(setq PT2 (polar L1 (+ KU (* 1.5 pi)) 75))
(setq PT3 (polar L2 (+ KU (* 0.5 pi)) 75))
(setq PT4 (polar L2 (+ KU (* 1.5 pi)) 75))
(command "_.Pline" "non" L1 "non" L2 "")
(setq ZX (entlast))
(command "_.Pline" "non" PT1 "non" PT3 "")
(setq ENT13 (entlast))
(command "_.Pline" "non" PT2 "non" PT4 "")
(setq ENT24 (entlast))
(setqloop T
D 50
)
(prompt "\n 偏移(A)/退出(空格)]:")
(while loop
(setq code (grread T 8))
(cond
((equal code '(2 97))
(command"move"
ZX
ENT13
ENT24
""
"non"
'(0 0)
"non"
(list (setq D (* D -1)) 0)
)
)
((equal code '(2 32))
(setq loop nil)
)
)
)
(setvar "clayer" CL)
(setvar "CMDECHO" OLD_CMDECHO)
(setvar "PLINEWID" plwidth)
(princ)
)
;;;
caocaosasd 发表于 2021-6-14 19:58
大佬可否再帮忙看一下……
我想让新画的三线达到这种效果,自己改了一下发现并不能正常运作,因为确实没 ...
就是刚把线画出来(点完L1,L2两个点以后),然后询问用户是否要偏移,要就按A,按一下就偏移一下,再按一下A又偏移回来,这样的……但是我不知道怎么才能对刚画出来的线进行操作 caocaosasd 发表于 2021-6-14 21:11
就是刚把线画出来(点完L1,L2两个点以后),然后询问用户是否要偏移,要就按A,按一下就偏移一下,再按一 ...
你那个代码已经实现啦,只是不知道偏移方向是怎么定的 本帖最后由 caocaosasd 于 2021-6-14 23:31 编辑
start4444 发表于 2021-6-14 21:25
你那个代码已经实现啦,只是不知道偏移方向是怎么定的
其实我抄也没抄明白偏移方向是怎么定的
确实不理解为啥code和 '(2 97)一相等了,就移动;和 '(2 32)相等为啥loop就为nil了
这种也不太明白要怎么查,因为我刚开始学嘛,就只知道vlisp函数说明里,括号括起来的俩数表示一个表,但是这里为啥这么用就不理解了
我希望的偏移方向是垂直于直线的方向,
是不是我command move 的格式有问题呀……command命令常用,但是操作不同的cad命令花样太多了,还没有掌握好
页:
[1]
2