马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天看到一篇有过梁排号的帖子.想起以前应同事之请曾经写过两个梁排号,梁编号递增修改lsp程序,翻翻以前的目录,找出来给大家看看.因为我不是学结构的,也没有去测试过,依稀记得当时是有用的.有好几个版本,不知哪个是可以正常运行的,所以没有放到我的老巢----程序库板块,而是发到这里. :),如果可用,别忘了告诉我一声.

- (princ "\n ttln----梁编号递增修改v1.0---for结构------lxx.2001.11")
- ;;
- (defun c:ttln ( / n roop ent entl e1 str1 i str2 i2 str3)
- (princ "\nttln----梁编号递增修改v1.0---for结构------lxx.2001.11")
- (princ "\n!只针对前缀 kl xl 的梁编号txt!")
- (setq n (getint "\n起始编号:")
- roop "true"
- i 2)
- (while roop
- (initget "X C R ")
- (setq ent (entsel "\n<X-退出>/C-序号重复/R-重设序号/选择梁编号:"))
- (cond
- ((or (= "x" ent)(= "X" ent)(= "" ent)(= " " ent))
- (setq roop nil)
- );<X-退出>
- ((or (= "C" ent)(= "c" ent))
- (setq n (1- n))
- );C-序号重复
- ((or (= "R" ent)(= "r" ent))
- (princ "\n当前序号:")(princ n)
- (setq n (getint "\n重设当前序号为:"))
- )
- ((= nil ent)(princ "\n没有选中编号,请重新选择:"))
- ((progn
- (setq entl (entget (car ent))
- e1 (cdr(assoc 1 entl))
- str1 (substr e1 1 2)
- )
- (or (wcmatch (strcase str1) "KL*")
- (wcmatch (strcase str1) "XL*")
- )
- );
- (princ "\n当前序号:")(princ n)
- (if (= " " (substr e1 3 1))
- (setq i 3 str1 (strcat str1 " "))
- (setq i 2)
- )
- (setq str2(substr e1 (1+ i))
- str2 (rtos (atoi str2) 2 0)
- i2 (strlen str2)
- str3 (substr e1 (+ i i2 1))
- e1 (strcat str1 (itoa n) str3)
- entl (subst (cons 1 e1) (assoc 1 entl) entl)
- n (1+ n)
- )
- (entmod entl)
- );end case
-
- );end cond
- );end while
- (princ)
- )
-
-

- (princ "\n ttls----梁编号重排v1.0---for结构------lxx.2001.11")
- ;;
- (defun c:ttls ( / kls0 key ss i ent entl e10 e-1 elist la i e1 ent entl str1 n1 str2 str3 roop kls); 起始编号
- (princ "\n ttls----梁编号重排v1.0---for结构------lxx.2001.11")
- (initget "Xl重排 Kl重排")
- (if (not kls)
- (setq kls 1 kls0 kls)
- (setq kls0 kls)
- )
- (setq key (getkword "\nXl重排/Kl重排:")
- roop "true")
- (while roop
- (initget 128)
- (setq kls0 kls)
- (setq kls (getint (strcat "\nX-退出/起始编号<" (rtos kls 2 0) ">:")))
- (if (or (= "X" kls)(= "x" kls)) (quit))
- (if (= nil kls)(setq kls kls0))
- (cond
- ((= "Xl重排" key)
- (setq ss (ssget '((0 . "TEXT") (1 . "XL*"))))
- )
- ((= "Kl重排" key)
- (setq ss (ssget '((0 . "TEXT") (1 . "KL*"))))
- )
- )
- (setq i 0 elist '())
- (repeat (sslength ss)
- (setq ent (ssname ss i)
- entl (entget ent)
- e10 (car (cdr (assoc 10 entl)))
- e-1 (cdr (assoc -1 entl))
- i (1+ i)
- elist (cons (LIST e10 (cdr (assoc 1 entl)) e-1) elist)
- )
- );end repeat
- (setq elist (vl-sort elist (function (lambda (l1 l2) (< (car l1)(car l2)) ))));按照x值排序
- (foreach n elist (sortn))
- (princ "\n本次编号从 ")(princ kls0)(princ " 到 ")(princ (1- kls))
- );end while
- (princ)
- )
- ;重排编号(sortn)
- (defun sortn ()
- (setq e1 (cadr n)
- ent2 (last n)
- entl2 (entget ent2)
- n1 2
- str1 (substr e1 1 n1)
- )
- (if (= " " (substr e1 3 1))
- (setq str1 (strcat str1 " ")
- n1 (1+ n1))
- )
- (setq str2 (substr e1 (1+ n1))
- str2 (rtos (atoi str2) 2 0)
- n2 (strlen str2)
- str3 (substr e1 (+ n1 n2 1))
- str2 (rtos kls 2 0)
- e1 (strcat str1 str2 str3)
- entl2 (subst (cons 1 e1) (assoc 1 entl2) entl2)
- kls (1+ kls)
- )
- (entmod entl2)
- )
附件压缩包里面一共有5个lsp文件,但是功能就两个,如上.因为记不得那个能用了--也许都可以:) .所以一起打包上来. |