Saqib_theleo 发表于 2022-7-5 16:44:33

垂直选择和移动对象

大家好,
我有一个Lisp,它可以将选定的对象垂直上移100点。
但是,有没有人可以制作一个Lisp,它可以自动选择从单击点向上的所有对象,并将它们向上移动100个点。
如果有人能帮我,我会非常感激的。
 
谢谢

gS7 发表于 2022-7-5 17:02:41

你能举个例子吗
 
使用Tapatalk从我的SM-E700H发送

BIGAL 发表于 2022-7-5 17:27:39

您需要为每个对象使用边界框lisp,并查看与点Y相比较低的Y值。
 

(vl-load-com)

(defun al-getboundingbox (obj / )
(setq newbox (vla-GetBoundingBox obj 'minpoint 'maxpoint ))
(setq newy (cadr (vlax-safearray->list minpoint)))
)

(defun c:movey ( / ss)
(setq pt (getpoint "pick point"))
(setq y (cadr pt)) ; y value of point
(setq ss (ssget "x" (list (cons 410 "model"))))
(repeat (setq J (sslength ss))
(setq obj (vlax-ename->vla-object(ssname ss (setq j (- j 1)))))
(al-getboundingbox obj)
(if (> newy Y)
(command "move" (ssname ss j) "" (list 0 0) (list 0 100))
)
)
)

Saqib_theleo 发表于 2022-7-5 17:35:25

嗨,比格尔,
感谢您的回复,这个Lisp要求选择对象,但我希望它能自动选择从点击点向上可用的所有对象。
 
谢谢

BIGAL 发表于 2022-7-5 17:56:26

这叫做学习编程或自己动手。
 
如果您查看了ssget的lisp帮助,尤其是“X”,您应该会找到答案。
 
代码已更改。
页: [1]
查看完整版本: 垂直选择和移动对象