AutoCAD自动标注坐标和坐标输出宏
需求说明
本人在制造业机加工领域工作多年,手动CNC编程时需要显示和输出坐标点,故开发此Lisp的宏。
CAD支持
AutoCAD的各标准版本均可使用此宏(轻化版除外),中望CAD也可以使用。
加载
选择"管理"->"加载应用程序",然后选择本AutoLisp宏并加载。也可以添加到"启动组"中,每次打开AutoCAD即可自定加载。
使用方法
- 输入命令:zb,再输入字号(默认3.5),即可在图上标注X、Y直角坐标;
- 输入命令:jzb,再输入字号(默认3.5),即可在图上标注R、α极坐标;
- 输入命令:zbsc,指定文件,即可将指定点的X、Y坐标输出到文件;
- 输入命令:jzbsc,指定文件,即可将指定点的R、α坐标输出到文件;
- 输入命令:z0,可将非块图形的Z值回零。

将下面的代码保存为zb.lsp,再按上面的方法加载即可使用:
version 3.3 by liuweilhy 2018-10-31
; 坐标标识 X Y
(defun c:zb()
(graphscr)
(setvar "cmdecho" 0)
(setq size (getreal "\n请输入字号<3.5>:"))
(if(null size) (setq size 3.5))
(setq size (* size (getvar "DIMSCALE")))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_x (rtos (car pt1) 2 3))
(setq point_y (rtos (cadr pt1) 2 3))
(setq strxy (strcat "X" point_x " Y" point_y))
(command "_text" pt1 size "0" strxy)
)
(setvar "cmdecho" 1)
(princ)
)
; 坐标输出 X Y
(defun c:zbsc()
(graphscr)
(setvar "cmdecho" 0)
(setq fname (getfiled "写出文件" "" "txt" 1))
(setq file (open fname "A"))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_x (rtos (car pt1) 2 3))
(setq point_y (rtos (cadr pt1) 2 3))
(setq strxy (strcat "X" point_x " Y" point_y))
(command "_point" pt1)
(princ strxy file)
(princ "\n" file)
)
(princ "\n" file)
(close file)
(setvar "cmdecho" 1)
(princ)
)
; 极坐标标识 R A
(defun c:jzb()
(graphscr)
(setvar "cmdecho" 0)
(setq size (getreal "\n请输入字号<3.5>:"))
(if(null size) (setq size 3.5))
(setq size (* size (getvar "DIMSCALE")))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_a (angtos (angle '(0 0) pt1) 0 4))
(setq point_r (rtos (distance '(0 0) pt1) 2 3))
(setq strar (strcat "R" point_r " A" point_a))
(command "_text" pt1 size "0" strar)
)
(setvar "cmdecho" 1)
(princ)
)
; 极坐标标识2 X C
(defun c:jzb2()
(graphscr)
(setvar "cmdecho" 0)
(setq size (getreal "\n请输入字号<3.5>:"))
(if(null size) (setq size 3.5))
(setq size (* size (getvar "DIMSCALE")))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_c (angtos (angle '(0 0) pt1) 0 4))
(setq point_x (rtos (* (distance '(0 0) pt1) 2) 2 3))
(setq strar (strcat "X" point_x " C" point_c))
(command "_text" pt1 size "0" strar)
)
(setvar "cmdecho" 1)
(princ)
)
; 极坐标输出 R A
(defun c:jzbsc()
(graphscr)
(setvar "cmdecho" 0)
(setq fname (getfiled "写出文件" "" "txt" 1))
(setq file (open fname "A"))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_a (angtos (angle '(0 0) pt1) 0 4))
(setq point_r (rtos (distance '(0 0) pt1) 2 3))
(setq strar (strcat "R" point_r " A" point_a))
(command "_point" pt1)
(princ strar file)
(princ "\n" file)
)
(princ "\n" file)
(close file)
(setvar "cmdecho" 1)
(princ)
)
; 极坐标输出2 X C
(defun c:jzbsc2()
(graphscr)
(setvar "cmdecho" 0)
(setq fname (getfiled "写出文件" "" "txt" 1))
(setq file (open fname "A"))
(while (setq pt1 (getpoint "\n请指定点位置:"))
(setq point_c (angtos (angle '(0 0) pt1) 0 4))
(setq point_x (rtos (* (distance '(0 0) pt1) 2) 2 3))
(setq strar (strcat "X" point_x " C" point_c))
(command "_point" pt1)
(princ strar file)
(princ "\n" file)
)
(princ "\n" file)
(close file)
(setvar "cmdecho" 1)
(princ)
)
;Z轴归零
(defun c:z0 ( / #os1 &kw)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq #os1 (getvar "osmode"))
(command "ucs" "")
(if (setq &kw (ssget "x" (list (cons 0 "~INSERT"))));;选择所有对象
(progn
(setvar "osmode" 0)
(princ "\n请等待,正在归零")
(command "MOVE" &kw "" '(0 0 1e99) "" "move" "p" "" '(0 0 -1e99) "")
(princ "\nOK已经归零");;如果有块的话,选择除了块以外的对象z坐标归零
(setvar "osmode" #os1))
)
(setvar "cmdecho" 1)
(princ)
)

浙公网安备 33010602011771号