在园内标序号
www.dimcax.com
在园内标序号
在园内标序号,它可调整两序号的距离,可缺省向上向下序号的字高你根据标尺寸的字高去放大,园内的字自己根据序号的位数自动调整.
(if (not (tblsearch "layer" "3"))
(command "layer" "n" "3" "c" "3" "3" "")
)
(if (not (tblsearch "layer" "2"))
(command "layer" "n" "2" "c" "2" "2" "")
)
(if (not (tblsearch "layer" "6"))
(command "layer" "n" "6" "c" "3" "6" "")
)
(defun c:bxh (/ p1 p2 p3 ang bx1 radi txth) ;标序号
(setq a (getreal "输入放大比例: "))
(setq l (getvar "dimtxt") l (* l a) radi (+ (/ l 2.0) 2) jl (getreal "上下序号的距离: ") g (getstring "缺省向上输入1 向下输入2 ")) ;标尺寸中的字高
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(if (= bx nil) (setq bx 1) )
(while (setq p1 (getpoint "\n请选择起点

回车退出)")); 在零件上选一点
(setvar "osmode" 512)
(terpri)
(if (= g "1")(setq bb "向上")(if (= g "2")(setq bb "向下")))
(prompt (strcat "请输入标号的位置 (回车在上一次标序号" bb (rtos jl 2 2) ")"))
(setq p2 (getpoint p1 )) ; 标注位置处一点
(if (and (= g "2")(= p2 nil))(setq p2 (polar p3 (* pi 1.5) jl))
(if (and (= g "1")(= p2 nil))(setq p2 (polar p3 (* pi 0.5) jl))))
(prompt (strcat "是否要改序号(" (rtos bx 2 0) ")回车不改"))
(setq bx1 (getint "\n请输入序号" ))
(if (= bx1 nil)()(setq bx bx1))
(command "layer" "set" "6" "") ;改到画细线图层
(setq ang1 (angle p1 p2))
(setq p3 (polar p1 ang1 (- (distance p1 p2) radi))) ;; 画圆、线
(setvar "osmode" 0)
(command "circle" p2 radi)
(command "line" p1 p3 "")
(command "layer" "set" "2" "" "text" "j" "m" p2 l 0 bx ) ;写文字;改到写文字图层
(setq bx (+ bx 1))
(prompt (rtos bx 2 0))
(setq p3 p2)
(princ)
)
(setvar "osmode" os)
);-----------------------
(defun c

ll ()
(setq i 1)
(while i
(setq p1 (getpoint "起点:回车退出"))
(if (= p1 nil)(setq i nil)
(progn
(command "pline" p1 )
(while (setq p2 (getpoint p1 "到点:"))
(command p2)
(setq p1 p2)
)
(command "" "")
))
)
)
gbg
什么意思啊,没看懂呢~~~
谢谢老顾大哥
老顾大哥,我刚才试了,不行啊,函数错误,你看一下,
不错不错,很有用
不行呀,出错。