明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1265|回复: 4

[源码] MOVE动态移动,将一个命令掰开玩儿

[复制链接]
发表于 2023-10-16 09:58:00 | 显示全部楼层 |阅读模式
本帖最后由 dcl1214 于 2023-10-16 11:09 编辑

  1. ;示例1
  2. (setq ent (car (entsel)))
  3. (setq pt (getpoint))
  4. (vl-cmdf "move" ent "")
  5. (while (= 1 (logand 1 (getvar 'cmdactive)))
  6.   (vl-cmdf pt "\\")
  7.   (setq pts (append pts (list (getvar 'lastpoint))))
  8. )
  9. (alert "移动完成")
  10. ;示例二
  11.                                         ;copy  move  addtext  三合一(你想咋玩都行)
  12. (and (setq c (car (entsel "请选择一个圆")))
  13.      (setq obj (vlax-ename->vla-object c))
  14.      (setq pt-C        (vlax-safearray->list
  15.                   (vlax-variant-value (vla-get-center OBJ))
  16.                 )
  17.      )
  18. )
  19. (if (and obj
  20.          pt-C
  21.          (SETQ PT (GETPOINT "请点击鼠标左键开始绘制直线"))
  22.     )
  23.   (progn (setq i 1)
  24.          (vl-cmdf "_.pline" "non" pt)
  25.          (setq e-L (entlast))
  26.          (while        (= 1 (logand 1 (getvar 'cmdactive)))
  27.            (vl-cmdf "\\")
  28.            (if (= 1 (logand 1 (getvar 'cmdactive)))
  29.              (progn
  30.                (setq p (getvar 'lastpoint))
  31.                (setq obj-new (vla-copy obj))
  32.                (vla-move obj-new
  33.                          (vlax-3d-point pt-C)
  34.                          (vlax-3d-point p)
  35.                )
  36.                (vla-AddText
  37.                  (vla-get-modelSpace
  38.                    (vla-get-ActiveDocument (vlax-get-acad-object))
  39.                  )
  40.                  (itoa i)
  41.                  (vlax-3d-Point p)
  42.                  6
  43.                )
  44.                (setq i (1+ i))
  45.              )
  46.            )
  47.          )
  48.   )
  49. )



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-10-16 10:29:02 | 显示全部楼层
(vl-cmdf "move" (Car(entsel)) "" (getpoint) pause)就行,没必要折腾
 楼主| 发表于 2023-10-16 10:33:51 | 显示全部楼层
kozmosovia 发表于 2023-10-16 10:29
(vl-cmdf "move" (Car(entsel)) "" (getpoint) pause)就行,没必要折腾

你没看懂
请看下面代码
(if (SETQ PT(GETPOINT))
  (progn (vl-cmdf "_.pline" "non" pt)
         (setq e-L (entlast))
         (while        (= 1 (logand 1 (getvar 'cmdactive)))
           (vl-cmdf "\\")
         )
  )
)
 楼主| 发表于 2023-10-16 10:35:26 | 显示全部楼层
本帖最后由 dcl1214 于 2023-10-16 10:36 编辑

while里面可以加各种其他代码,这是一种写法,可以让一个命令拆开,并在中间加各种逻辑代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 08:32 , Processed in 0.177781 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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