各位请修改不框选,执行命令读写0层。
(defun c:db()(setvar "cmdecho" 0)
(setq FN (getvar "dwgname")); PCB1234MT.dwg
(setq n 1 k 0)
(While (> n 0)
(setq Tac (vl-string-elt FN k))
(if (and (> Tac 47)(< Tac 58));0是48,9是57
(setq n 0)
(setq k (1+ k))
)
)
(setq FN (substr FN (+ k 1)))
(setq n 1 k 0)
(While (> n 0)
(setq Tac (vl-string-elt FN k))
(if (> Tac 64);65是大写字母A
(setq n 0)
(setq k (1+ k))
)
)
(setq FN (substr FN 1 k))
(setq file2 (strcat "C:\\NC\\" FN "p.NC"))
;(setq file2 (getstring "\n 请输入路径及文件名"))
(setq file3(open file2 "w"))
(if(= file3 nil)
(progn
(alert"路径或文件名错误!")
(exit)
)
)
(princ "请选择要钻孔的圆:")
(setq a (ssget))
(setq n (sslength a))
(setq i 0 m 0 Lzb nil)
(repeat n
(setq en(ssname a i))
(setq endata(entget en))
(setq entype(cdr (assoc 0 endata)))
(if(= entype "CIRCLE")
(progn
(setq ZB (cdr(assoc 10 endata)))
(setq Lzb (cons ZB Lzb))
(setq x(cadr(assoc 10 endata)))
(setq y(caddr(assoc 10 endata)))
(princ "X" file3)
(princ (rtos x 2 3) file3)
(princ "" file3)
(princ "Y" file3)
(princ (rtos y 2 3) file3)
(princ "\n" file3)
(setq m (+ 1 m))
)
)
(setq i (+ 1 i))
)
(princ (strcat "\n共有<" (itoa m) ">孔被选取!"))
(prin1)
(close file3)
(setq R_c (cdr(assoc 40 endata)))
(setq Tzb1(Last Lzb))
(setq Tzb2 (last (reverse Lzb)))
(setq Txzb (- (* 1.5 (car Tzb1)) (* 0.5 (car Tzb2))))
(setq Tyzb (* 0.5 (+ (cadr Tzb2) (cadr Tzb1))))
(setq Tzb (list Txzb Tyzb))
(prin1)
;;;;写字: PCB板钻孔文件为FN;;;;;;;;
(setq Txt (strcat "PCB板钻孔文件为" FN "P.NC"))
(entmake (list
(cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbTexe")
(cons 62 6);颜色粉红
(cons 10 Tzb)
(cons 40 (/ R_c 3));字高2.5
(cons 7"standard")
(cons 1Txt)
)
)
)
看不明白楼主的意思。。。。。 把(setq a (ssget))
改成(setq a (ssget"x"(list (cons 8 “0”) ) ))
是这个意思吗? fl202 发表于 2018-12-7 13:51
把(setq a (ssget))
改成(setq a (ssget"x"(list (cons 8 “0”) ) ))
是这个意思吗?
是这个意思没有0层不提示呢?
页:
[1]