用lisp如何改变两个块之间的距离?
本帖最后由 clh521 于 2012-11-13 12:46 编辑不用move命令,比如左右各一个块,它们之间的距离为100,现在要左右两个块各向相反方向移动50,使其之间距离变成200,用lisp如何实现呢?
1、选择两个块,调用MOVE,左边左移,右边右移。
2、取块插入点,修改块插入点。
3、删除两块,在需要的位置处重新生成两块。
还有个不是LISP的办法。喊徒弟去改图。 先获得两个的插入点 pt1 pt2 InsertionPoint = (1675.12 264.396 0.0)
获得pt1 pt2距离,角度,
然后就是改插入点就行了。
多简单的程序。
,
本帖最后由 clh521 于 2012-11-13 23:27 编辑lisp学的不全面,加上时间久不玩了,现在工作有需要想编个自用的程序,发现竟然忘了好多了,简单的不会编,还是谢谢楼上两位啊
查了一下资料,写出程序如下:
(DEFUN C:tttt ( / cd enbk1 enbk2 enbk1lst enbk2lst bk1pt bk2pt ang1 ang2 new-bk1pt new-bk2pt)
(setq cd (getreal"\n请输入要移动的距离:"))
(setq enbk1 (car (entsel"\n请选择第一个块:")))
(setq enbk2 (car (entsel"\n请选择第二个块:")))
(setq enbk1lst (entget enbk1))
(setq enbk2lst (entget enbk2))
(setq bk1pt (cdr (assoc 10 enbk1lst))
bk2pt (cdr (assoc 10 enbk2lst)))
(setq ang1 (angle bk1pt bk2pt))
(setq ang2 (angle bk2pt bk1pt))
(setq new-bk1pt (polar bk1pt ang2 cd))
(setq new-bk2pt (polar bk2pt ang1 cd))
(setq enbk1lst (subst (cons '10 new-bk1pt) (assoc '10 enbk1lst) enbk1lst))
(entmod enbk1lst)
(setq enbk2lst (subst (cons '10 new-bk2pt) (assoc '10 enbk2lst) enbk2lst))
(entmod enbk2lst)
(princ)
)
这个东西出来了用在哪里呢?
黑洞—杜明智 发表于 2012-11-13 20:50 static/image/common/back.gif
这个东西出来了用在哪里呢?
用在我正在编的某个程序里要调用,当然直接用在画图上就没有用
页:
[1]