⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 da123.lsp

📁 在cad里写的标注辅助
💻 LSP
字号:
(defun begin ( );;调用函数begin程序作绘图前的一般设定
(setq oderr *error*) ;;保存原来的*error*
(setq *error* YL_err) ;;将*error*用自己的错误处理函数替代
(setq odltp (getvar "celtype"))   ;;记录当前线型设置
(setq odclr (getvar "cecolor"))   ;;记录当前颜色设置
(setq odosm (getvar "osmode"))    ;;记录当前捕捉方式
(setq odlay (getvar "clayer"))    ;;记录当前层
(setq odsty (getvar "textstyle")) ;;记录当前文本样式
(setq odtsz (getvar "textsize"))  ;;记录当前文本高度
(setq odbpm (getvar "blipmode"))  ;;记录当前控制点标记是否可见
(setq odzin (getvar "dimzin"))    ;;记录主单位值消零处理方式
(setq odcmd (getvar "cmdecho"))   ;;记录命令行回显方式
(setvar "celtype" "bylayer")      ;;设置线形随层
(setvar "cecolor" "bylayer")      ;;设置颜色随层
(setvar "cmdecho" 0)              ;;设置命令行不回显
(setvar "blipmode" 0)             ;;不显示控制点标记
(setvar "dimzin" 8)               ;;对主单位值后续零作消零处理,因为DIMZIN 对 AutoLISP rtos 和 angtos 函数执行实数向字符串转换操作有影响。 
)

(defun END ( );;绘图后还原设定
(setvar "celtype" odltp) 
(setvar "cecolor" odclr)
(setvar "osmode" odosm)
(setvar "textstyle" odsty)
(setvar "textsize" odtsz)
(setvar "blipmode" odbpm)
(setvar "dimzin" odzin) ;;恢复主单位值消零处理方式
(command "layer" "s" odlay "")
(setvar "cmdecho" odcmd)
(setq *error* oderr) ;;恢复原来的*error*
(princ)
)

(defun z_err (msg);;调用函数z_err恢复程序开始前的设置
(princ (strcat "\n错误:" msg "\n")) ;;打印错误原因
(end) ;;调用函数end恢复程序开始前的设置
(setq *error* oderr) ;;恢复原来的*error*
(princ)
)
************************************************************************


(defun daa ( )

(begin)

(command "DIMALIGNED"  pause pause pause)

(setvar "OSMODE" 0);;关闭捕捉模式

(setq DIM (ENTLAST))
(SETQ pt1 (CDR (ASSOC 13 (ENTGET dim))));;取得标注定义点1
(SETQ pt4 (CDR (ASSOC 14 (ENTGET dim))));;取得标注定义点2
(SETQ pt0 (CDR (ASSOC 10 (ENTGET dim))));;取得标注定义点3
(SETQ DIML (CDR (ASSOC 42 (ENTGET dim))));;取得标注对齐点
(SETQ TXTH (getvar "DIMTXT"))
(SETQ DIMS (getvar "DIMSCALE"))

(ENTDEL DIM)

(SETQ x1 (CAR pt1));;取得定义点1x坐标
(SETQ y1 (CAR (CDR pt1)));;取得定义点1y坐标
(SETQ x4 (CAR pt4));;取得定义点2x坐标
(SETQ y4 (CAR (CDR pt4)));;取得定义点2y坐标
(SETQ x0 (CAR pt0));;取得定义点2x坐标
(SETQ y0 (CAR (CDR pt0)));;取得定义点2y坐标

(setq DX2 (abs (/ (* (- y4 y1) (* (* TXTH DIMS) n)) DIML)))
(setq DY2 (abs (/ (* (- x4 x1) (* (* TXTH DIMS) n)) DIML)))

(if (and (/= x1 x4) (/= y1 y4))
(PROGN
(setq yl (+ (/ (* (- x0 x1) (- y4 y1)) (- x4 x1)) y1))
(setq xl (+ (/ (* (- y0 y1) (- x4 x1)) (- y4 y1)) x1))

(if (and (> x0 xl) (> y0 yl))
(setq pt5 (list (+ X1 DX2) (+ Y1 DY2)))
);end if

(if (and (< x0 xl) (> y0 yl))
(setq pt5 (list (- X1 DX2) (+ Y1 DY2)))
);end if

(if (and (< x0 xl) (< y0 yl))
(setq pt5 (list (- X1 DX2) (- Y1 DY2)))
);end if

(if (and (> x0 xl) (< y0 yl))
(setq pt5 (list (+ X1 DX2) (- Y1 DY2)))
);end if

(command "dimaligned" PT1 PT4 PT5)
);end progn
);end if



(if (or (= x1 x4) (= y1 y4))

(PROGN

(if (and (= x1 x4) (> x0 x1))
(setq pt5 (list (+ X1 (* (* TXTH DIMS) n)) y0))
);end if

(if (and (= x1 x4) (< x0 x1))
(setq pt5 (list (- X1 (* (* TXTH DIMS) n)) y0))
);end if

(if (and (> y0 y4) (= y1 y4))
(setq pt5 (list x0 (+ Y1 (* (* TXTH DIMS) n))))
);end if

(if (and (< y0 y4) (= y1 y4))
(setq pt5 (list x0 (- Y1 (* (* TXTH DIMS) n))))
);end if

(command "dimaligned" PT1 PT4 PT5)



(setq ss (ssadd));;设定一个空的图元集合SS
(if (= ss nil)
(princ ok)
)

);end progn
);end if

(end)

)


(defun c:da1 ( )
(setq n 2.5)
(daa)
)

(defun c:da2 ( )
(setq n 4.5)
(daa)
)

(defun c:da3 ( )
(setq n 6.5)
(daa)
)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -