明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 706|回复: 12

[讨论] 新手求教,请问如何做到按一下a就直接执行某命令,不需要回车

[复制链接]
发表于 2021-6-14 11:55 | 显示全部楼层 |阅读模式
比如我有个操作是按一下a就让刚才画的直线偏移50,再按a回到原位置,应该怎么操作呀……
我自己写出来的是,按一下a还要回车一下,才执行,用起来很不流畅
发表于 2021-6-14 13:39 | 显示全部楼层
码发上来看看
 楼主| 发表于 2021-6-14 14:15 | 显示全部楼层

       
前面的操作是画线。顺便我还没有想好再按a就移动回初始位置该怎么弄
(setq shuru (getstring "\n输入左中右 a左/b中/c右"))
        (cond
          ((= shuru "a")
          
           (command "move" ENT13 ENT24 ZX "" PT1  Pz2 )

          )
发表于 2021-6-14 15:54 | 显示全部楼层
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)
)
 楼主| 发表于 2021-6-14 17:01 | 显示全部楼层
本帖最后由 caocaosasd 于 2021-6-14 17:31 编辑
start4444 发表于 2021-6-14 15:54
grread函数可以实现,论坛有很多相关搜索看看

(defun c:tt5 (/ code d loop ss)

非常感谢大佬的指点!其实我想做一个把刚画出来的两条平行线,按A就偏一下,再按A偏回来这样~这就学习一下!
 楼主| 发表于 2021-6-14 19:58 | 显示全部楼层
本帖最后由 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 的返回值是啥也没明白……
  1. ;;;
  2. (defun C:cxz1 (/ code d loop ss)
  3.   (setq OLD_CMDECHO (getvar "CMDECHO"))
  4.   (setq CL (getvar "clayer"))
  5.   (setq plwidth (getvar "PLINEWID"))
  6.   (setvar "CMDECHO" 0)
  7.   (setvar "EDGEMODE" 1)
  8.   (setvar "PLINEWID" 30)
  9.   (command "-layer" "m" "fjgj" "C" "1" "" "")

  10.   (setq L1 (getpoint))
  11.   (setq L2 (getpoint L1))
  12.   (setq KU (angle L1 L2))
  13.   (setq PT1 (polar L1 (+ KU (* 0.5 pi)) 75))
  14.   (setq PT2 (polar L1 (+ KU (* 1.5 pi)) 75))
  15.   (setq PT3 (polar L2 (+ KU (* 0.5 pi)) 75))
  16.   (setq PT4 (polar L2 (+ KU (* 1.5 pi)) 75))

  17.   (command "_.Pline" "non" L1 "non" L2 "")
  18.   (setq ZX (entlast))
  19.   (command "_.Pline" "non" PT1 "non" PT3 "")
  20.   (setq ENT13 (entlast))
  21.   (command "_.Pline" "non" PT2 "non" PT4 "")
  22.   (setq ENT24 (entlast))

  23.   (setq  loop T
  24.   D 50
  25.   )
  26.   (prompt "\n 偏移(A)/退出(空格)]:")
  27.   (while loop
  28.     (setq code (grread T 8))
  29.     (cond
  30.       ((equal code '(2 97))
  31.        (command  "move"
  32.     ZX
  33.     ENT13
  34.     ENT24
  35.     ""
  36.     "non"
  37.     '(0 0)
  38.     "non"
  39.     (list (setq D (* D -1)) 0)
  40.        )
  41.       )
  42.       ((equal code '(2 32))
  43.        (setq loop nil)
  44.       )
  45.     )
  46.   )

  47.   (setvar "clayer" CL)
  48.   (setvar "CMDECHO" OLD_CMDECHO)
  49.   (setvar "PLINEWID" plwidth)
  50.   (princ)
  51. )
  52. ;;;  



点评

不清楚你三根线要什么效果,函数用法论坛搜一下,很多的  发表于 2021-6-14 20:41
 楼主| 发表于 2021-6-14 21:11 | 显示全部楼层
caocaosasd 发表于 2021-6-14 19:58
大佬可否再帮忙看一下……
我想让新画的三线达到这种效果,自己改了一下发现并不能正常运作,因为确实没 ...

就是刚把线画出来(点完L1,L2两个点以后),然后询问用户是否要偏移,要就按A,按一下就偏移一下,再按一下A又偏移回来,这样的……但是我不知道怎么才能对刚画出来的线进行操作
发表于 2021-6-14 21:25 | 显示全部楼层
caocaosasd 发表于 2021-6-14 21:11
就是刚把线画出来(点完L1,L2两个点以后),然后询问用户是否要偏移,要就按A,按一下就偏移一下,再按一 ...

你那个代码已经实现啦,只是不知道偏移方向是怎么定的
 楼主| 发表于 2021-6-14 23:26 | 显示全部楼层
本帖最后由 caocaosasd 于 2021-6-14 23:31 编辑
start4444 发表于 2021-6-14 21:25
你那个代码已经实现啦,只是不知道偏移方向是怎么定的

其实我抄也没抄明白偏移方向是怎么定的

确实不理解为啥code和 '(2 97)一相等了,就移动;和 '(2 32)相等为啥loop就为nil了
这种也不太明白要怎么查,因为我刚开始学嘛,就只知道vlisp函数说明里,括号括起来的俩数表示一个表,但是这里为啥这么用就不理解了

我希望的偏移方向是垂直于直线的方向,

是不是我command move 的格式有问题呀……command命令常用,但是操作不同的cad命令花样太多了,还没有掌握好

点评

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90839&highlight=grrea  发表于 2021-6-15 09:36
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 06:48 , Processed in 0.388613 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表