djw 发表于 2022-7-6 10:52:57

有obje的lisp例程

我试图编写一个lisp例程,让一个对象(比如一个螺栓)360度旋转,比如50次,同时移动?当我制作视频动画时,似乎无法获得它。

Freerefill 发表于 2022-7-6 10:59:12

有几种方法可以做到这一点。第一种方法是编写LISP以物理旋转对象,但只有在AutoCAD中进行演示,或者有第三方程序将监视器上的图像记录到视频中时,这才有用。另一个选项显然更复杂,但它允许您直接导出视频。查看AutoCAD中可用的运动路径动画,看看这些动画是否能满足您的需要。

djw 发表于 2022-7-6 11:02:18

谢谢你的回复。。
“第一个是编写LISP以物理旋转对象”,这就是我在AutoCAD 2007中尝试做的,是的,第三方程序将监视器上的图像记录到视频中,运动路径动画。

Freerefill 发表于 2022-7-6 11:03:37

虽然我建议您看看AutoCAD中可用的运动路径动画,因为它们可以提供更好的产品。这样的代码取决于您的系统,并且可能会延迟或加速,这取决于您正在进行的操作。
 

(defun c:rotob( / e p a b c i)
(vl-load-com)
(setvar "cmdecho" 0)
(setq e (vlax-ename->vla-object (car (entsel "\nSelect object: "))))
(setq p (getpoint "\nSelect rotation point: "))
(setq a 5    ; Number of revolutions
   b 5    ; Degrees per increment (must be a factor of 360)
   c 10    ; Delay between incremental rotation
   i 0)    ; Counter
(if (= 0 (rem (setq d (/ 360 b)) 1))
   (while (< i a)
   (repeat d
   (vla-rotate e (vlax-3d-point p) (* (/ pi 180.0) b))
   (vl-cmdf "delay" c "regen")
   )
   (setq i (1+ i))
   )
   )
)

Hippe013 发表于 2022-7-6 11:06:14

嘿,这可能会让你开始!
我不久前写的只是为了好玩。。。

(defun c:spin (/ obj rot rot+)
(setq obj (vlax-ename->vla-object (car (entsel))))
(setq rot (vla-get-rotation obj))
(setq rot+ (/ (* 2 pi) 500))
(repeat 500
   (setq rot (+ rot+ rot))
   (vla-put-rotation obj rot)
   (vla-update obj)
   )
(vlax-release-object obj)
(princ)
)

djw 发表于 2022-7-6 11:09:40

再次感谢。。
好吧,我是lisp写作新手,所以我很慢,我有一个我在视频中尝试做什么的例子,蓝色的螺栓在移动时需要旋转/旋转。
(1) 如何选择螺栓。
(2) 如何一次将lisp应用于一个螺栓。
墨西哥湾漏油、管帽

alanjt 发表于 2022-7-6 11:12:25

这根本不是我想的。
 

djw 发表于 2022-7-6 11:16:15

视频,没有上传。。请参阅PDF
管道固定。pdf

Freerefill 发表于 2022-7-6 11:20:36

那是另一个蜡球。
 
我建议您使用发布的代码,并尝试对其进行调整,使其围绕特定轴旋转(您需要为3D指定此选项)。然后,您应该能够添加额外的数据以获得所需的翻译。一旦您完成了一个对象的代码,您应该能够为其余对象复制它。

Hippe013 发表于 2022-7-6 11:22:09

alanjt:
 
你想上传你的旋转/移动的东西的Lisp程序吗?
页: [1] 2
查看完整版本: 有obje的lisp例程