乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 38|回复: 6

[编程交流] 简单移动命令问题

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:26:23 | 显示全部楼层 |阅读模式
我是AutoLISP的初学者,由于某些原因,我无法正确使用这个移动命令。我所要做的就是选择交叉窗口中从(12,0)到(0,4)的所有内容,并将其全部向右移动12英寸。
 
这就是我所拥有的,但当我运行程序时,它只是抓住标题栏,并将其他所有内容保留在原位。
 
(命令“move”“12,0”“0,4”“@”“@12,0”)
 
我需要使用ssget或其他一些选择命令来选择多个实体吗?
 
提前谢谢。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:40:06 | 显示全部楼层
有很多方法可以做到这一点,例如:
 
  1. (setq wpt1 '(12 0)
  2.      wpt2 '(0
  3. 4)      
  4.      disp
  5. 12
  6.      ang 0
  7. movept (mapcar '+ wpt1 (list disp 0));;you can use instead : move pt (list (+
  8. (car wpt1 disp)(cadr wpt1)))
  9.      )
  10. (command
  11. "move" (ssget "w" wpt1 wpt2) "" "_non" wpt1 "_non" movept)

 
这段代码也应该有效
 
  1. (command "_select" "_w" "12,0" "0,4" "" "move" "_p" "" "@" "@12,0")
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:49:39 | 显示全部楼层
另一个
 
  1. (defun c:test (/ ss l sset)(vl-load-com)
  2. (if (setq ss (ssget "_w" '(12. 0. 0.) '(0. 4. 0.)))
  3.    (repeat
  4.      (setq l (sslength ss))
  5.       (setq sset (ssname ss (setq l (1- l))))
  6.       (vla-move (vlax-ename->vla-object sset)
  7.                 (vlax-3d-point 0. 0. 0.)
  8.                 (vlax-3d-point 12. 0. 0.)
  9.       )
  10.    )
  11. )
  12. (princ)
  13. )
Tharwat
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-6 10:02:59 | 显示全部楼层
这不应该是交叉窗的“c”吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:14:27 | 显示全部楼层
我会这样做:
 
  1. (defun c:test ( / ss )
  2. (if (setq ss (ssget "_C" '(12.0 0.0) '(0.0 4.0)))
  3.    (command "_.move" ss "" "_non" '(0. 0. 0.) "_non" '(12. 0. 0.))
  4. )
  5. (princ)
  6. )

 
因为ssget将提供更通用、更可靠的选择。
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:24:56 | 显示全部楼层
哇,我太离谱了。
 
谢谢你的帮助,这些效果很好。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:27:01 | 显示全部楼层
哇哇,如果我添加另一种方法,使5种不同的方式做一个简单的动作,这是否打破了纪录。
 
  1. (defun C:CHX ()
  2. (SETVAR "CMDECHO" 0)
  3. (setq sn (getvar "osmode"))
  4. (command "osnap" "near")
  5. (setq x 0)
  6. (princ "\nalters object in X direction")
  7. (setq ht (getstring "\n What is amount of change: "))
  8. (setq newht (strcat ht ",0"))
  9. (while (= x 0)
  10.    (setq newobj (entsel "\nPoint to object: "))
  11.    (if (/= newobj nil)
  12.    (progn
  13.    (command "move" newobj "" "0,0" newht)
  14.    ))
  15. (if (= newobj nil)(setq x 1))
  16. )
  17. )

 
很抱歉偏离了轨道。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 02:55 , Processed in 0.421601 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表