LISP例程帮助
用户您好,这是我在这里的第一个帖子,但我过去偶尔会来这里解决问题。我现在发现我自己的处境,我不确定我可以解决只是浏览论坛,也许有人在这里可以伸出援手。
自1999年以来,我一直在各种设计工作中使用CAD软件。然而,我从未使用过LISP例程。
我的新工作向我提出了一个令我困惑的要求。我研究得越多,就越困惑。
我一直很喜欢建造自己的电脑,可以处理大量的3D设计和渲染。硬件对我来说是小菜一碟。然而,当我试图研究编写LISP例程的机制时,我的大脑开始受伤。我已经看到了很多不同LISP例程的例子,但看看其中涉及的编码,我会感到惊讶。这是我想做得更好的事情,但我需要一些帮助。
首先。。。。每隔一周我都会在星期二上午召开会议,会议涉及我工作的多个部门。最新的项目涉及在工厂生产车间移动设备。我们必须采取的行动之一是移动货架系统,以容纳更长的产品。通过移动货架,我们最终吃进了行人使用的过道。我们不得不在过道上慢跑,确保叉车仍能进入该区域。因此,我测量并绘制了他们使用的叉车的足迹,并将其放置在过道上。然后我把它复制了好几次,以证明叉车很合适,可以在过道上做一些小转弯。小菜一碟,真的没想过。
然而,我们有一个特殊的要求,动画的叉车块,以显示它移动下来的通道,使轻微的转弯,并继续沿着通道没有问题的设备得到的方式。叉车将侧向行驶,并持有一个16英尺长的托盘,转弯将很紧。
这一切都是二维的。我知道有一些不错的动画软件包,但它们似乎都使用3D模型。这没什么大不了的,但我们不会购买新软件来实现这一点,我们必须将其保持在我们目前使用的AutoCAD 2017中。
有没有办法做他们想做的事情,将其保持在2D中,让整个LISP例程选择叉车块,将其沿通道移动,绕过转弯,并使其看起来像是动画?
我很想学习更多关于编写这些例程的技巧,但编码确实让我困惑。我需要一些东西,可以帮助我打破写这些例程的基础,并理解与所有这些混乱的文本行涉及的结构!
如果它需要一个电话和几节课在电话里,我愿意!如果有人有“LISP例程for Dummies”链接,我也完全支持。我不反对自己学习,但当我举手时,电脑屏幕从来没有回答我的问题!
如果你能提供任何帮助,我们将不胜感激。
提前感谢,
戴夫 这将作为一个非常简单的2D平面来完成你想要的,没有动画,我们用它检查车辆的车道入口,在垂直的意义上,以确保汽车没有底部出来。随着延迟,它显示为动画。
你需要更换Holden。dwg,澳大利亚汽车块,叉车形状为块,这里的关键是插入点是前轮接触地面,轴距是硬编码的,因此您也需要更改。您可以添加一个“延迟”,以便在运行时它看起来像是动画,而不是splat结果。代码是为metric编写的,但您可以快速重新缩放脚部平面图,因为我从未在脚部进行过测试。
好吧,我把它重新定义为一个非常愚蠢的叉车,有一个16英尺宽的物体。图像间距为1.0,我建议编辑我的dwg。制作了一个简单的3d,并有一个思考脚的版本。见红色pline是叉车的路径。
另一种方法是使用自动翻转或CIV3d中内置的车辆检查器,但不知道叉车形状。不知道你怎么才能做出自己的形状。
(Defun draw_vehicle ( )
(SETQ ANGBASEE (GETVAR "ANGBASE"))
(SETQ ANGDIRR (GETVAR "ANGDIR"))
(SETQ LUNITSS (GETVAR "LUNITS"))
(SETQ LUPRECC (GETVAR "LUPREC"))
(SETQ AUNITSS (GETVAR "AUNITS"))
(SETQ AUPRECC (GETVAR "AUPREC"))
(setq oldsnap (getvar "osmode"))
(SETVAR "LUNITS" 2)
(SETVAR "ANGBASE" 0.0)
(SETVAR "ANGDIR" 0)
(SETVAR "LUPREC" 0)
(SETVAR "AUNITS" 3)
(SETVAR "AUPREC" 0)
(setvar "osmode" 0)
(if (tblsearch "Block" "Fork")
(princ "Holden")
(progn
(command "Insert" "p:\\Autodesk\\vba\\holdencar.dwg" "0,0" 1 1 0)
;(command "erase" "last" "")
) ; progn
)
(setq obj (vlax-ename->vla-object (car (entsel "\nPick Pline"))))
(setq interval ( getreal "\nEnter spacing m:"))
(setq cRad 1.5) ; forklift wheel base
(setq startang (* pi 1.5))
(setq endang (/ pi 2.0))
(setq dist 0.0)
(setq len (vla-get-length obj))
(setq stpt (vlax-curve-getpointatdist obj interval))
(setq num (+ 1 (fix ( / len interval))))
(repeat num
(command "arc" "C" stpt (polar stpt endang crad)(polar stpt startang crad))
(setq objarc (vlax-ename->vla-object (entlast)))
(if (= (setq intpt (vlax-invoke obj 'intersectWith objarc acExtendnone)) nil)
(setq intpt (vlax-invoke obj 'intersectWith objarc acExtendThisEntity)) ; needed at start
)
(vla-delete objarc)
(setq ang (angle intpt stpt))
(command "Insert" "Fork" stpt 1 1 ang) ; need ang in radians
(setq stpt (vlax-curve-getpointatdist obj (setq dist (+ dist interval))))
(command "delay" 500) ; change this for speed of drawing
; (command "erase" "L" "") if you want 1 at a time
) ; repeat
(SETVAR "LUNITS" lunitss)
(SETVAR "ANGBASE" angbasee)
(SETVAR "ANGDIR" angdirr)
(SETVAR "LUPREC" luprecc)
(SETVAR "AUNITS" aunitss)
(SETVAR "AUPREC" auprecc)
(princ)
) ; defun
(draw_vehicle)
叉车。图纸
真不错的比加尔!只有一个很小的东西:(command“delay”500)->(command“delay”500)
gr.Rlx 感谢您直接在这里输入,而不是在代码测试中输入。
我的新车沿着生产线行驶。
我附上了一份副本的地区,我的工作。
只是试着让这辆叉车沿着小路走下去,这样它在沿着小路行驶时就不会留下任何过道线的痕迹。。。
叉车路径动画。图纸 不太确定您想要什么,您需要将托盘连接到叉车,修改代码以反映轴距68?设置控制径向移动的两个点,然后绘制一条pline,它应该沿着移动。
需要注意的一件事是,你可以用计算机模拟它,但叉车上的人改变方向的速度也一样快吗?
感谢所有回复和指导。
我们的目标是为叉车制作动画,展示它沿着过道行驶、转弯并继续沿着过道行驶,而不会撞到过道线另一侧的任何东西。
我原本以为我可以想出一个lisp例程,在前进的过程中执行一系列移动命令,再加上轻微的转弯,穿过过道的狗腿。
我最终只是使用MSLIDE制作了一个包含80张幻灯片的脚本。它“工作”,但有点起伏不定,似乎是从网络流量和事实上的工作并没有提供这种东西的高端电脑。如果我让脚本执行几次,缓存似乎会建立起来,并且会稍微平滑一点,无论如何,这对于今天上午的演示来说已经足够了。
我无法理解lisp例程,但我想学习该功能的愿望并没有动摇。
希望它能像写剧本一样简单! 遗憾的是,你没有计算出lisp,因为它绘制的看起来像一个动画,我更改了代码,以使用dwg,如上图所示。添加mslide是非常可行的,在运行时进行渲染将非常有趣。需要一个简单的3d叉车来做到公正。
页:
[1]