- UID
- 432253
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2006-5-3
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这个MCB.LSP程序是朋友帮忙写的。我自己不懂程序。但这个程序如果碰到有汉字的门窗编号统计时不会显示出汉字来。比如人防(或消防)门:正FM1520与反FM1520统计的时候就有问题。这个问题能解决吗?R14版本的,有急需的朋友这个程序可以下载用用,建筑专业一般情况下会节省你许多时间的。
源程序如下:文件名字mcb.lsp
;****************************************
;门窗表
;*****************************
(defun c:mcb ( / s e d l0 l lx mcname mccnt flag p1 p2 p3 p4 p5 p6 cs mmb mmb1)
(setvar "osmode" 0)
(setq yn "y" l0 (list))
(while (= yn "y")
(princ "\n选择范围:")
(setq s(ssget '((0 . "text")(8 . "门窗编号,门窗表"))))
(setq l (list))
(if s (progn
(while (> (sslength s) 0)
(setq d(entget (setq e(ssname s 0))))
(ssdel e s)
(setq mcname (cdr(assoc 1 d)) mccnt 1)
(if (null l)
(progn
(setq l(cons (cons mcname mccnt) l))
)
(progn
(setq flag 0)
(setq lx l)
(while (and (> (length lx) 0) (= flag 0))
(if (= (caar lx) mcname)
(setq flag 1)
(setq lx (cdr lx))
)
)
(if (= flag 1)
(progn
(setq mccnt (1+ (cdr(assoc mcname l))))
(setq l (subst (cons mcname mccnt) (assoc mcname l) l))
)
(setq l(cons (cons mcname mccnt) l))
)
)
)
) ; end of while, list l is done
)) ; end of if
(if (> (length l) 0) (progn
(terpri)
(setq cs(getint "输入层数:<1>" ))
(if (> cs 1) (progn
(setq lx l)
(foreach mmb lx (progn
(setq mmb1(cons (car mmb) (* cs (cdr mmb))))
(setq l(subst mmb1 mmb l))
))
))
)) ; end of if, list l * 层数 is done
; put list l into l0
(if l (progn
(if (null l0) (setq l0 l) (progn
(foreach mmb l (progn
(setq mmb1 (assoc (car mmb) l0))
(if mmb1
(setq l0(subst (cons (car mmb) (+ (cdr mmb) (cdr mmb1))) mmb1 l0))
(setq l0 (cons mmb l0))
) ;end of if
)) ; end of foreach
)) ; end of if
)) ; end of if
(initget "y n")
(setq yn(getkword "继续吗[y/n]? <y>"))
(if (null yn) (setq yn "y"))
) ; end of while
(setq lx l0)
(terpri)
(setq p1(getpoint "点取表格左上角:"))
; (command "layer" "s" "0" "")
(while (> (length lx) 0)
(setq p2(subst (+ (car p1) 3000) (car p1) p1))
(setq p3(subst (- (cadr p1) 700) (cadr p1) p1))
(setq p4(subst (+ (car p3) 3000) (car p3) p3))
(command "line" p1 p2 p4 p3 "c" "")
(setq p5(subst (+ (car p1) 1000) (car p1) p1))
(setq p5(subst (- (cadr p5) 600) (cadr p5) p5))
(command "text" p5 "300" "" (caar lx) "")
(setq p5(subst (+ (car p2) 3000) (car p2) p2))
(setq p6(subst (+ (car p4) 3000) (car p4) p4))
(command "line" p2 p5 p6 p4 "c" "")
(setq p5(subst (+ (car p2) 1000) (car p2) p2))
(setq p5(subst (- (cadr p5) 600) (cadr p5) p5))
(command "text" p5 "300" "" (cdr(car lx)) "")
(setq lx (cdr lx))
(setq p1 p3)
)
) |
|