lisp正负调换_移动lisp

展开全部

(defun C:ZXD ( / #os1 dis &k1 @p1 @p2 &kw)

(setvar "cmdecho" 0)

(setvar "blipmode" 0)

(setq #os1 (getvar "osmode"))

(setvar "osmode" 0)

(setq dis (getdist "\n请输入在Z轴线移动的距离正负值"))

(if (/= dis nil) (setq &k1 (entsel "\n请选择要移动的参考图层")))

(if (/= &k1 nil)

(progn

(setq @p1 (list 0 0 0)

@p2 (list 0 0 dis)

&k1 (car &k1)

&k1 (entget &k1)

&k1 (cdr (assoc 8 &k1))

)

(princ "\n请选择要移动的范围")

(setq &kw (ssget "X" (list (cons 8 &k1))))

;;如果要自32313133353236313431303231363533e4b893e5b19e31333335323430己选择范围这句话修改为(setq &kw (ssget (list (cons 8 &k1))))

(command "MOVE" &kw "" @p1 "" "MOVE" "p" "" @p2 "")

(princ "\n移动")

(princ &k1)

(princ "图层完成")

)

)

(setvar "osmode" #os1)

(princ)

);;复制到记事本以(ZXD.lsp)命名加载到AutoCAD就可以使用

;;如果要坐标归零的话,要把块除外才可以,或炸开块。

;;;;;;Z坐标归零;;

(defun c:z0 ( / &kw)

(setvar "cmdecho" 0)

(setvar "blipmode" 0)

(princ "\n请等待,正在归零")

(command "ucs" "")

(setq &kw (ssget "x" (list (cons 0 "INSERT"))));;选择所有的块

(if (/= &kw nil)

(command "MOVE" "all" "r" &kw "" '(0 0 1e99) "" "move" "p" "" '(0 0 -1e99) "")

);;如果有块的话,选择除了块以外的对象z坐标归零

(if (= &kw nil)

(command "MOVE" "all" "" '(0 0 1e99) "" "move" "p" "" '(0 0 -1e99) "")

);;如果没有块,那么坐标归零

(princ "\nOK已经归零")

(setvar "cmdecho" 1)

(princ)

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值