找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 994|回复: 1

[求助]:有一个门窗表自动生成程序,但有些问题。斑竹能帮忙解决吗?

[复制链接]
发表于 2006-6-6 20:12:36 | 显示全部楼层 |阅读模式

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

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

×
这个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)
        )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-12 10:22:55 | 显示全部楼层
什么东西啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 17:34 , Processed in 0.187262 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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