你好
我以前有过这个话题,这里的一位同事帮了我。这是一种对齐功能。不幸的是,lisp有一个错误,它并不总是显示出来。让我解释一下:
假设我在平面图中有一张桌子。它的x,y位置是正确的,但在3D中,它悬停在地面上。我想把它放在地板上,而不在x、y方向移动。我输入TZP(使用点沿z方向平移),选择桌子,单击桌腿底部,然后单击房间的任何角落。桌子会掉到地板上。
现在我需要在二楼的同一张桌子。我输入DZP(使用点沿z方向复制),选择桌子,再次单击桌子腿底部,然后单击第二层标高上的任何点。
线索是,我不需要任何两个点,这两个点正好高于对方。这是代码:
- (defun c:TZP ( / a b c s)
- (princ "Select objects: ")
- (setq s (ssget)
- a (getpoint "\nSelect item base point: ")
- b (getpoint "\nSelect target point: ")
- c (list (car a) (cadr a) (caddr b)))
- (vl-cmdf "move" s "" a c)
- )
同样适用于复制或其他轴。据架构师判断,我发现代码相当优雅。
但无论出于何种原因,“桌子”不时会以不可预测的方式在x、y方向移动,但通常会接近所需的位置。随着我使用这个命令的时间越长,情况就越糟,这可能与未清除的赋值变量有关吗?或者对象捕捉未被禁用?
谢谢你的帮助! |