找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 626|回复: 0

刘志军的pkpm钢筋号重排序

[复制链接]
发表于 2002-1-24 20:57:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这是刘志军写的一段程序,我帮他改了一下。
程序中的选择集过滤没写全,--
我也不知道pkpm中用的是什么图层,
使用者可以自己加上。
如果用r2k以上,可以用vl-sort来排序。


  1. (defun lup (a / b mn mx)
  2. ;;;对一个数字表排序,重复的忽略
  3.   (setq mn (apply 'min a)
  4.         mn (- mn 1000.)
  5.   )
  6.   (while (> (setq mx (apply 'max a)) mn)
  7.     (setq b (cons mx b)
  8.           a (subst mn mx a)
  9.     )
  10.   )
  11.   b
  12. )
  13. (defun cy_ssgetp(@p @wc @d @filt / s);;SSGETP @WC="W,C" @D=范围
  14.   (if (not @d)(setq @d 0))
  15.   (if @filt
  16.     (if @d
  17.       (setq s(ssget @wc (xd @p @d @d) (xd @p (- @d) (- @d)) @filt))
  18.       (setq s(ssget "p" @p @filt)))
  19.     (if @d
  20.       (setq s(ssget @wc (xd @p @d @d) (xd @p (- @d) (- @d))))
  21.       (setq s(ssget "p" @p)))
  22.   )s
  23. )
  24. (defun pri (a b c / x)
  25.   (princ (strcat b " <"))(princ c)(setq x (a ">:"))
  26.   (if (and x (/= x "")) x c)
  27. )
  28. (defun dxf (#code #list)(cdr (assoc #code #list)))
  29. ;;;===================================================================================
  30. (defun c:txtpx (/ CEN E E1 EN EN1 GETINT IN IN1 N N0 PB1 PB2 R S S1 T1 TXT0)
  31. ;;;;数字序列号重新排序
  32.   (setq txt0 (pri getint "\n输入起始数字:" 1))
  33.   (prompt "\n选择支座钢筋圆圈,对钢筋号统一排序:")
  34.   (setq s (ssget '((0 . "CIRCLE")));;(8 . "支座钢筋标注")))
  35.         in 0 n (sslength s)
  36.         pb1 '() pb2 '())
  37.   (repeat n
  38.     (setq e  (ssname s in)in   (1+ in)
  39.           en  (entget e) cen(dxf 10 en)
  40.           r(dxf 40 en)
  41.           s1(cy_ssgetp cen "c" r '((0 . "TEXT"))));;;加图层
  42.     (if s1
  43.       (setq e1(ssname s1 0)en1(entget e1)
  44.             t1(dxf 1 en1)
  45.             pb1(append pb1 (list (distof t1)))
  46.             pb2(append pb2 (list(list (distof t1) en1))))
  47.     )
  48.   )
  49.   (setq pb1 (lup pb1)
  50.         n0  (length pb1)
  51.   )
  52.   (foreach x pb2
  53.     (setq in  (car x)en  (cadr x)
  54.           n   (length (member in pb1))
  55.           in1 (rtos (+ txt0 (- n0 n)) 2 0)
  56.           en  (subst (cons 1 in1) (assoc 1 en) en)
  57.     )
  58.     (entmod en)
  59.   )(princ)
  60. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 00:15 , Processed in 0.368829 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表