乐筑天下

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

[编程交流] 垂直选择和移动对象

[复制链接]

24

主题

93

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-5 16:44:33 | 显示全部楼层 |阅读模式
大家好,
我有一个Lisp,它可以将选定的对象垂直上移100点。
但是,有没有人可以制作一个Lisp,它可以自动选择从单击点向上的所有对象,并将它们向上移动100个点。
如果有人能帮我,我会非常感激的。
 
谢谢
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 17:02:41 | 显示全部楼层
你能举个例子吗
 
使用Tapatalk从我的SM-E700H发送
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:27:39 | 显示全部楼层
您需要为每个对象使用边界框lisp,并查看与点Y相比较低的Y值。
 
  1. (vl-load-com)
  2. (defun al-getboundingbox (obj / )
  3. (setq newbox (vla-GetBoundingBox obj 'minpoint 'maxpoint ))
  4. (setq newy (cadr (vlax-safearray->list minpoint)))
  5. )
  6. (defun c:movey ( / ss)
  7. (setq pt (getpoint "pick point"))
  8. (setq y (cadr pt)) ; y value of point
  9. (setq ss (ssget "x" (list (cons 410 "model"))))
  10. (repeat (setq J (sslength ss))
  11. (setq obj (vlax-ename->vla-object(ssname ss (setq j (- j 1)))))
  12. (al-getboundingbox obj)
  13. (if (> newy Y)
  14. (command "move" (ssname ss j) "" (list 0 0) (list 0 100))
  15. )
  16. )
  17. )
回复

使用道具 举报

24

主题

93

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-5 17:35:25 | 显示全部楼层
嗨,比格尔,
感谢您的回复,这个Lisp要求选择对象,但我希望它能自动选择从点击点向上可用的所有对象。
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:56:26 | 显示全部楼层
这叫做学习编程或自己动手。
 
如果您查看了ssget的lisp帮助,尤其是“X”,您应该会找到答案。
 
代码已更改。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 14:14 , Processed in 0.578918 second(s), 62 queries .

© 2020-2025 乐筑天下

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