马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这是刘志军写的一段程序,我帮他改了一下。
程序中的选择集过滤没写全,--
我也不知道pkpm中用的是什么图层,
使用者可以自己加上。
如果用r2k以上,可以用vl-sort来排序。
- (defun lup (a / b mn mx)
- ;;;对一个数字表排序,重复的忽略
- (setq mn (apply 'min a)
- mn (- mn 1000.)
- )
- (while (> (setq mx (apply 'max a)) mn)
- (setq b (cons mx b)
- a (subst mn mx a)
- )
- )
- b
- )
- (defun cy_ssgetp(@p @wc @d @filt / s);;SSGETP @WC="W,C" @D=范围
- (if (not @d)(setq @d 0))
- (if @filt
- (if @d
- (setq s(ssget @wc (xd @p @d @d) (xd @p (- @d) (- @d)) @filt))
- (setq s(ssget "p" @p @filt)))
- (if @d
- (setq s(ssget @wc (xd @p @d @d) (xd @p (- @d) (- @d))))
- (setq s(ssget "p" @p)))
- )s
- )
- (defun pri (a b c / x)
- (princ (strcat b " <"))(princ c)(setq x (a ">:"))
- (if (and x (/= x "")) x c)
- )
- (defun dxf (#code #list)(cdr (assoc #code #list)))
- ;;;===================================================================================
- (defun c:txtpx (/ CEN E E1 EN EN1 GETINT IN IN1 N N0 PB1 PB2 R S S1 T1 TXT0)
- ;;;;数字序列号重新排序
- (setq txt0 (pri getint "\n输入起始数字:" 1))
- (prompt "\n选择支座钢筋圆圈,对钢筋号统一排序:")
- (setq s (ssget '((0 . "CIRCLE")));;(8 . "支座钢筋标注")))
- in 0 n (sslength s)
- pb1 '() pb2 '())
- (repeat n
- (setq e (ssname s in)in (1+ in)
- en (entget e) cen(dxf 10 en)
- r(dxf 40 en)
- s1(cy_ssgetp cen "c" r '((0 . "TEXT"))));;;加图层
- (if s1
- (setq e1(ssname s1 0)en1(entget e1)
- t1(dxf 1 en1)
- pb1(append pb1 (list (distof t1)))
- pb2(append pb2 (list(list (distof t1) en1))))
- )
- )
- (setq pb1 (lup pb1)
- n0 (length pb1)
- )
- (foreach x pb2
- (setq in (car x)en (cadr x)
- n (length (member in pb1))
- in1 (rtos (+ txt0 (- n0 n)) 2 0)
- en (subst (cons 1 in1) (assoc 1 en) en)
- )
- (entmod en)
- )(princ)
- )
|