找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 635|回复: 9

[编程申请]:钢筋统计

[复制链接]
发表于 2003-8-29 13:24:59 | 显示全部楼层 |阅读模式

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

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

×
*-*b
准备写一个钢筋数量统计的程序,有什么好的建议
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-8-29 13:26:19 | 显示全部楼层

Re: [编程申请]:钢筋统计

最初由 echoroseluo 发布
[B]*-*b
准备写一个钢筋数量统计的程序,有什么好的建议 [/B]


这个程序想实现什么作用,我们现在一般出图都不出钢筋表了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-29 13:41:40 | 显示全部楼层
出钢筋图时,我们还要求做钢筋统计,其实我也不知道有什么用,可能方便计算工程量
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 13:54:12 | 显示全部楼层
我也不知道
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 14:00:42 | 显示全部楼层
我感觉要能够对钢筋进行动态的操作,可能统计出一级钢筋,二级钢筋的数量。能够对钢筋进行标注,能够自动计算钢筋的总长度。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 14:05:35 | 显示全部楼层
最初由 lt_zzy 发布
[B]我感觉要能够对钢筋进行动态的操作,可能统计出一级钢筋,二级钢筋的数量。能够对钢筋进行标注,能够自动计算钢筋的总长度。 [/B]


我在这里好像看到了一个lisp,名字叫:ca.lsp,搜索一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-29 14:11:54 | 显示全部楼层
关键是要能统计出不同直径、形式的钢筋数量和长度,这两样东西统计出来后,钢筋的重量就比较好做了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 14:22:16 | 显示全部楼层
最初由 coolzhb 发布
[B]

我在这里好像看到了一个lisp,名... [/B]

我找到了,但是已经提示附件已经过期了,不知道那一位朋友有。请提示一下,谢谢!



  1. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="700" id="AutoNumber1" height="498">
  2.   <tr>
  3.     <td width="100%" height="489">
  4.       <iframe name="I1" width="100%" height="100%" src="http://www.xdcad.net/forum/showthread.php?s=&postid=10244#post10244">
  5. 浏览器不支持嵌入式框架或配置为不显示嵌入式框架
  6.       </iframe>
  7.     </td>
  8.   </tr>
  9. </table>
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-29 14:46:18 | 显示全部楼层
我有的,贴一个给大家看看!


  1.   [FONT=courier new]
  2. ;;钢筋表计算程序,版本:4.12。
  3. ;;输入直径、单根长、根数。钢筋直径可用"%%c32、%%13132、f32"等形式,长度及根数可输入简单四则运算
  4. ;;符号,如"30*(22+3)、30x3X4"形式,可用"X"或"x"代替"*",但不可用中文符号。
  5. ;;命令:CA -- 计算钢筋表。
  6. ;;命令:DTW -- 由直径计算单位重。
  7. ;;命令:CAT -- 计算钢筋总重。
  8. ;;命令:CAS -- 统计钢筋长度或重量。
  9. ;;自由软件,欢迎复制、修改。作者:南京市市政设计研究院 嵇龙(ll_j@21cn.com)
  10. ;;                                                            025-3283626


  11. (defun newerr(s)
  12.   (if (= s "Function cancelled")
  13.     (progn
  14.       (setq *error* olderr)
  15.       (if oldsnp (setvar "osmode" oldsnp))
  16.       (if oldzin (setvar "dimzin" oldzin))
  17.     )
  18.   )
  19.   (princ)
  20. )

  21. (defun ca_main()
  22.   (princ (strcat "\n\n当前为" ca:row "列模式; 长度单位 " ca:c_m ";列间距 " (rtos ca:h_ 2 1) "; 文本字高 " (rtos ca:hh 2 2) "; 对齐方式 " ca:jm "。\n"))
  23.   (initget 1 "U N C F H J")
  24.   (setq pt1 (getpoint (strcat "列数N/单位U/变更列间距C/自由列间距F/文本字高H/对齐方式J/<给出钢筋总长" ca:jm "对齐点>: ")))
  25.   (cond
  26.     ((= pt1 "U")
  27.      (if (= ca:c_m "cm") (setq ca:c_m "mm" ca:cmm 0.001) (setq ca:c_m "cm" ca:cmm 0.01))
  28.      (ca_main)
  29.     )
  30.     ((= pt1 "N")
  31.      (if (= ca:r_w 3) (setq ca:r_w 2 ca:row "二") (setq ca:r_w 3 ca:row "三"))
  32.      (ca_main)
  33.     )
  34.     ((= pt1 "C")
  35.      (setq c (getdist (strcat "\n给定列间距< " (rtos ca:h_ 2 1)" >: ")))
  36.      (if (/= c nil) (setq ca:h_ c))
  37.      (ca_main)
  38.     )
  39.     ((= pt1 "F")
  40.      (setq n6_ 0)
  41.      (if (= ca:r_w 3)
  42.        (progn
  43.          (initget 1)
  44.          (setq ptx1 (car (getpoint (strcat "\n给出钢筋总长" ca:jm "对齐点: "))))
  45.          (initget 1)
  46.          (setq ptx2 (car (getpoint (strcat "\n给出钢筋单位重" ca:jm "对齐点: "))))
  47.          (initget 1)
  48.          (setq ptx3 (car (getpoint (strcat "\n给出钢筋总重" ca:jm "对齐点: "))))
  49.        )
  50.        (progn
  51.          (initget 1)
  52.          (setq ptx1 (car (getpoint (strcat "\n给出钢筋总长" ca:jm "对齐点: "))))
  53.          (initget 1)
  54.          (setq ptx3 (car (getpoint (strcat "\n给出钢筋总重" ca:jm "对齐点: "))))
  55.        )
  56.      )  
  57.     )
  58.     ((= pt1 "H")
  59.      (setq c (getdist (strcat "\n给定字高< " (rtos ca:hh 2 2)" >: ")))
  60.      (if (/= c nil) (progn (setq ca:hh c) (setvar "textsize" c)))
  61.      (ca_main)
  62.     )
  63.     ((= pt1 "J")
  64.      (setq ca:j_m (rem (1+ ca:j_m) 3))
  65.      (cond
  66.        ((= ca:j_m 0) (setq ca:jm "左"))
  67.        ((= ca:j_m 1) (setq ca:jm "中"))
  68.        ((= ca:j_m 2) (setq ca:jm "右"))
  69.        (t nil)
  70.      )
  71.      (ca_main)
  72.     )
  73.     (t
  74.      (setq n6_ 0)
  75.      (if (= ca:r_w 3)
  76.        (setq ptx1 (car pt1)
  77.              ptx2 (+ ptx1 (* 0.95 ca:h_))
  78.              ptx3 (+ ptx1 (* 2.0 ca:h_))
  79.        )
  80.        (setq ptx1 (car pt1)
  81.              ptx3 (+ ptx1 (* 1.0 ca:h_))
  82.        )
  83.      )  
  84.     )
  85.   )
  86.   (while (> l1 0)
  87.     (ca_smax se1 l1)
  88.     (setq e01 e20 n1 (atof (ca_f (cdr (assoc 1 e01)))) se1 se0)
  89.     (if (not ca:r) (setq ca:r (assoc 50 e01)))
  90.     (ca_smax se2 l1)
  91.     (setq e02 e20 n2 (ca_n (cdr (assoc 1 e02))) se2 se0)
  92.     (ca_smax se3 l1)
  93.     (setq e03 e20 n3 (ca_n (cdr (assoc 1 e03))) se3 se0)
  94.     (setq l1 (sslength se1)
  95.           y  (/ (+ (caddr(ca_trans 10 e01)) (caddr(ca_trans 10 e02))
  96.                    (caddr(ca_trans 10 e03))) 3)
  97.     )
  98.     (setq pt1(list ptx1 y 0)
  99.           pt2(list ptx2 y 0)
  100.           pt3(list ptx3 y 0)
  101.     )
  102.     (setq n4 (rtos (* n3 n2 ca:cmm) 2 2)
  103.           n5 (rtos (* pi n1 n1 0.0019625) 2 3)
  104.           n6 (rtos (* (atof n5) (atof n4)) 2 2)
  105.           n6_(+ n6_ (atof n6))
  106.     )
  107.     (ca_mktext n4 (trans pt1 1 0))
  108.     (if (= ca:r_w 3) (ca_mktext n5 (trans pt2 1 0)))
  109.     (ca_mktext n6 (trans pt3 1 0))
  110.   )
  111. )

  112. (defun ca_prw(/ p_w)
  113.   (setq pt (getpoint (strcat "\n合计钢筋总重" ca:jm "对齐点: ")))
  114.   (if (/= pt nil)
  115.     (ca_mktext (rtos n6_ 2 2) (trans pt 1 0))
  116.     (progn
  117.       (initget "Yes No")
  118.       (setq p_w (getkword "\n取消合计总重? Yes or <No>?"))
  119.       (if (/= p_w "Yes")
  120.         (ca_prw)
  121.       )
  122.     )
  123.   )
  124. )

  125. (defun ca_trans(n ens)
  126.   (cons n (trans (cdr (assoc n ens)) 0 1))
  127. )

  128. (defun ca_f(e1)
  129.   (cond
  130.     ((and (> (ascii e1) 48)(<= (ascii e1) 57)) e1)
  131.     ((= (ascii e1) 37)
  132.      (setq e1(substr e1 3))
  133.      (cond
  134.        ((= (ascii e1) 49) (setq e1 (substr e1 4)))
  135.        (t (setq e1 (substr e1 2)))
  136.      )
  137.     )
  138.     (t (setq e1 (substr e1 2)))
  139.   )
  140.   (eval e1)
  141. )

  142. (defun ca_n(e1 / t1 nt nt1)
  143.   (setq nt "" nt1 "")
  144.   (while (/= e1 "")
  145.     (setq t1 (substr e1 1 1) e1 (substr e1 2))
  146.     (if (or (= t1 ".") (and (>= (ascii t1) 48) (<= (ascii t1) 57)))
  147.       (setq nt1 (strcat nt1 t1))
  148.       (progn
  149.         (if (or (= t1 "x") (= t1 "X")) (setq t1 "*"))
  150.         (cond
  151.           ((= (ascii nt1) 46) (setq nt1 (strcat "0" nt1)))
  152.           ((= (type (read nt1)) 'INT) (setq nt1 (strcat nt1 ".0")))
  153.           (t nil)
  154.         )
  155.         (setq nt (strcat nt nt1 t1) nt1 "")
  156.       )
  157.     )
  158.   )
  159.   (if (/= nt1 "")
  160.     (progn
  161.       (cond
  162.         ((= (ascii nt1) 46) (setq nt1 (strcat "0" nt1)))
  163.         ((= (type (read nt1)) 'INT) (setq nt1 (strcat nt1 ".0")))
  164.         (t nil)
  165.       )
  166.       (setq nt (strcat nt nt1))
  167.     )
  168.     (setq nt (strcat nt nt1))
  169.   )
  170.   (setq e1 (c:cal nt))   
  171. )

  172. (defun ca_smax(se l_ / e10 y0 i e1 e2 yi y0)
  173.   (setq e10 (ssname se 0)
  174.         e20 (entget e10)
  175.         y0 (caddr(assoc 10 e20))
  176.         i 0 se0 (ssadd)
  177.   )
  178.   (if (/= l_ 1)
  179.     (repeat (- l_ 1)
  180.       (setq i  (+ i 1)
  181.             e1 (ssname se i)
  182.             e2 (entget e1)
  183.             yi (caddr(assoc 10 e2))
  184.       )
  185.       (if (> yi y0)
  186.         (progn (ssadd e10 se0) (setq e20 e2 y0 yi e10 e1))
  187.         (ssadd e1 se0)
  188.       )
  189.     )
  190.   )
  191. )

  192. (defun ca_mktext(str pt10 / sty)
  193.   (entmake
  194.     (list
  195.       '(0 . "TEXT")
  196.       (cons 1 str)
  197.       (cons 10 pt10)
  198.       (cons 11 pt10)
  199.       (cons 7 (setq sty (getvar "textstyle")))
  200.       (cons 40 ca:hh)
  201.       ca:r
  202.       (assoc 41 (tblsearch "style" sty))
  203.       (cons 51 (cdr (assoc 50 (tblsearch "style" sty))))
  204.       '(71 . 0)
  205.       (cons 72 ca:j_m)
  206. ;      (cons 73 :j2)
  207.     )
  208.   )
  209. )


  210. (defun ca_dw()
  211.   (princ (strcat "\n当前文本字高 " (rtos ca:hh 2 2) "; 对齐方式 " ca:jm ".\n"))
  212.   (initget 1 "H J")
  213.   (setq pt1 (getpoint (strcat "\n文本字高H/对齐方式J/<给出钢筋" t1 ca:jm "对齐点: >")))
  214.   (cond
  215.     ((= pt1 "H")
  216.      (setq c (getdist (strcat "\n给定字高< " (rtos ca:hh 2 2)" >: ")))
  217.      (if (/= c nil) (progn (setq ca:hh c) (setvar "textsize" c)))
  218.      (ca_dw)
  219.     )
  220.     ((= pt1 "J")
  221.      (setq ca:j_m (rem (1+ ca:j_m) 3))
  222.      (cond
  223.        ((= ca:j_m 0) (setq ca:jm "左"))
  224.        ((= ca:j_m 1) (setq ca:jm "中"))
  225.        ((= ca:j_m 2) (setq ca:jm "右"))
  226.        (t nil)
  227.      )
  228.      (ca_dw)
  229.     )
  230.     (t nil)
  231.   )
  232. )

  233. (defun cas_main        ()
  234.   (princ (strcat "\n\n输出行间距 " (rtos ca:l_ 2 1) ";列间距 " (rtos ca:h_ 2 1)
  235.                  "; 文本字高 " (rtos ca:hh 2 2) "。\n"))
  236.   (initget 1 "L C H")
  237.   (setq        pt1 (getpoint (strcat "行间距L/列间距C/文本字高H/<给出输出基点>: ")))
  238.   (cond
  239.     ((= pt1 "L")
  240.      (setq c (getdist (strcat "\n给定行间距< " (rtos ca:l_ 2 1) " >: ")))
  241.      (if (/= c nil) (setq ca:l_ c))
  242.      (cas_main)
  243.     )
  244.     ((= pt1 "C")
  245.      (setq c (getdist (strcat "\n给定列间距< " (rtos ca:h_ 2 1) " >: ")))
  246.      (if (/= c nil) (setq ca:h_ c))
  247.      (cas_main)
  248.     )
  249.     ((= pt1 "H")
  250.      (setq c (getdist (strcat "\n给定字高< " (rtos ca:hh 2 2) " >: ")))
  251.      (if (/= c nil) (progn (setq ca:hh c) (setvar "textsize" c)))
  252.      (cas_main)
  253.     )
  254.     (t
  255.      (while (> l1 0)
  256.        (ca_smax se1 l1)
  257.        (setq e01 e20
  258.              n1         (ca_f (cdr (assoc 1 e01)))
  259.              se1 se0
  260.        )
  261.        (if (not ca:r)
  262.          (setq ca:r (assoc 50 e01))
  263.        )
  264.        (ca_smax se2 l1)
  265.        (setq e02 e20
  266.              n2         (ca_n (cdr (assoc 1 e02)))
  267.              se2 se0
  268.        )
  269.        (setq l1        (sslength se1)
  270.              l0        (length cas:b)
  271.              i        0
  272.              ii        0
  273.        )
  274.        (if (> l0 0)
  275.          (progn
  276.            (repeat l0
  277.              (setq b0 (nth i cas:b))
  278.              (if (= (car b0) n1)
  279.                (setq n2           (+ n2 (cadr b0))
  280.                      cas:b (subst (list n1 n2) b0 cas:b)
  281.                      i           (1+ i)
  282.                      ii           1
  283.                )
  284.                (setq i (1+ i))
  285.              )
  286.            )
  287.            (if (= ii 0)
  288.              (setq cas:b (reverse (cons (list n1 n2) (reverse cas:b))))
  289.            )
  290.          )
  291.          (setq cas:b (cons (list n1 n2) cas:b))
  292.        )
  293.      )
  294.      (setq l0        (length cas:b)
  295.            i        0
  296.            pt1x        (car pt1)
  297.            pt1y        (cadr pt1)
  298.            pt2x        (+ pt1x ca:h_)
  299.      )
  300.      (repeat l0
  301.        (setq pt1  (list pt1x (- pt1y (* i ca:l_)) 0)
  302.              pt2  (list pt2x (- pt1y (* i ca:l_)) 0)
  303.              n1   (- (apply 'min (mapcar 'atof (mapcar 'car cas:b))) 1)
  304.              n2   (apply 'max (mapcar 'atof (mapcar 'car cas:b)))
  305.              j    (- l0 (length (member n2 (mapcar 'atof (mapcar 'car cas:b)))))
  306.              str1 (car (nth j cas:b))
  307.              str2 (rtos (cadr (nth j cas:b)) 2 2)
  308.              cas:b(subst (cons (rtos n1 2 0) (cadr (nth j cas:b))) (nth j cas:b) cas:b)
  309.              i    (1+ i)
  310.        )
  311.        (ca_mktext str1 (trans pt1 1 0))
  312.        (ca_mktext str2 (trans pt2 1 0))
  313.      )
  314.     )
  315.   )
  316.   (princ)
  317. )

  318. (defun c:dtw(/ se1 se0 l1 pt1 e01 e02 y n1 e20 t1 olderr ca:r n ens oldsnp oldzin)
  319.   (command "color" (getvar "cecolor"))
  320.   (setq olderr *error*)
  321.   (setq oldsnp (getvar "osmode"))
  322.   (setq oldzin (getvar "dimzin"))
  323.   (setvar "osmode" 0)
  324.   (setvar "dimzin" 0)
  325.   (setq *error* newerr)
  326.   (princ "\n拾取钢筋直径:")
  327.   (setq se1 (ssget '((0 . "TEXT"))))
  328.   (if (/= se1 nil)
  329.     (progn
  330.       (setq l1 (sslength se1) t1 "单位重")
  331.       (if (= ca:jm nil) (setq ca:jm "右" ca:j_m 2))
  332.       (if (= ca:hh nil) (setq ca:hh (getvar "textsize")))
  333.       (ca_dw)   
  334.       (while (> l1 0)
  335.         (ca_smax se1 l1)
  336.         (setq e01 e20
  337.               se1 se0
  338.               l1 (sslength se1)
  339.               y  (caddr(ca_trans 10 e01))
  340.               n1 (atof (ca_f (cdr(assoc 1 e01))))
  341.               pt1(list (car pt1) y 0)
  342.               n1 (rtos (* pi n1 n1 0.0019625) 2 3)
  343.         )
  344.         (if (not ca:r) (setq ca:r (assoc 50 e01)))
  345.         (ca_mktext n1 (trans pt1 1 0))
  346.       )
  347.     )
  348.     (princ "\n未选择物体.")
  349.   )
  350.   (if oldsnp (setvar "osmode" oldsnp))
  351.   (if oldzin (setvar "dimzin" oldzin))
  352.   (setq *error* olderr)
  353.   (princ)
  354. )

  355. (defun c:cat(/ se1 l1 pt1 e01 n1 i olderr ca:r oldsnp oldzin)
  356.   (command "color" (getvar "cecolor"))
  357.   (setq olderr *error*)
  358.   (setq oldsnp (getvar "osmode"))
  359.   (setq oldzin (getvar "dimzin"))
  360.   (setvar "osmode" 0)
  361.   (setvar "dimzin" 0)
  362.   (setq *error* newerr)
  363.   (princ "\n拾取钢筋重量:")
  364.   (setq se1 (ssget '((0 . "TEXT"))))
  365.   (if (/= se1 nil)
  366.     (progn
  367.       (setq l1 (sslength se1) t1 "合计总重")
  368.       (if (= ca:jm nil) (setq ca:jm "右" ca:j_m 2))
  369.       (if (= ca:hh nil) (setq ca:hh (getvar "textsize")))
  370.       (ca_dw)   
  371.       (setq i -1 nt 0)
  372.       (repeat l1
  373.         (setq i (+ i 1)
  374.               e01 (entget(ssname se1 i))
  375.               n1 (atof (cdr(assoc 1 e01)))
  376.               nt (+ nt n1)
  377.         )
  378.         (if (not ca:r) (setq ca:r (assoc 50 e01)))
  379.       )
  380.       (ca_mktext (rtos nt 2 2) (trans pt1 1 0))
  381.     )
  382.     (princ "\n未选择物体.")
  383.   )
  384.   (if oldsnp (setvar "osmode" oldsnp))
  385.   (if oldzin (setvar "dimzin" oldzin))
  386.   (setq *error* olderr)
  387.   (princ)
  388. )

  389. (defun c:cas(/ olderr se1 se2 a_ l0 l1 l2 pt1 pt2 pt1x pt2x pt1y cas:b j n1 n2
  390.              c l str1 str2 ii b0 n ca:r ens oldsnp oldzin)
  391.   (command "color" (getvar "cecolor"))
  392.   (setq olderr *error*)
  393.   (setq oldsnp (getvar "osmode"))
  394.   (setq oldzin (getvar "dimzin"))
  395.   (setvar "osmode" 0)
  396.   (setvar "dimzin" 0)
  397.   (setq *error* newerr)
  398.   (prompt "\n拾取钢筋直径: ")
  399.   (setq a_ 2 se1 (ssget '((0 . "TEXT"))))
  400.   (if (/= se1 nil) (progn (setq l1 (sslength se1) a_ 0)) (princ "\n未选择物体."))
  401.   (while (= a_ 0)
  402.     (prompt "\n拾取钢筋总长或总重: ")
  403.     (setq se2 (ssget '((0 . "TEXT"))))
  404.     (if (/= se2 nil) (setq l2 (sslength se2)))
  405.     (if (= l2 l1) (setq a_ 1) (princ "\n选择集长度不同! "))
  406.   )
  407.   (if (= ca:hh nil) (setq ca:hh (getvar "textsize")))
  408.   (if (= ca:h_ nil)
  409.     (progn
  410.       (if (>= ca:hh 1.0)
  411.         (setq ca:h_ (* (expt 10.0 (+ (fix (/ (log ca:hh) (log 10))) 1)) 2.0))
  412.         (setq ca:h_ (* (expt 10.0 (fix (/ (log ca:hh) (log 10)))) 2.0))
  413.       )
  414.     )
  415.   )
  416.   (if (= ca:l_ nil)
  417.     (progn
  418.       (if (>= ca:hh 1.0)
  419.         (setq ca:l_ (* (expt 10.0 (+ (fix (/ (log ca:hh) (log 10))) 1)) 0.8))
  420.         (setq ca:l_ (* (expt 10.0 (fix (/ (log ca:hh) (log 10)))) 0.8))
  421.       )
  422.     )
  423.   )
  424.   (setq cas:b nil ca:j_m 2)
  425.   (if (= a_ 1) (cas_main))
  426.   (if oldsnp (setvar "osmode" oldsnp))
  427.   (if oldzin (setvar "dimzin" oldzin))
  428.   (setq *error* olderr)
  429.   (princ)
  430. )

  431. (defun c:ca(/ se0 se1 se2 se3 l1 l2 l3 a_ e01 e02 e03 n6_ e20 y olderr c oldzin
  432.             pt1 pt2 pt3 ptx1 ptx2 ptx3 n1 n2 n3 n4 n5 n6 n ens ca:r oldsnp)
  433.   (command "color" (getvar "cecolor"))
  434.   (setq olderr *error*)
  435.   (setq oldsnp (getvar "osmode"))
  436.   (setq oldzin (getvar "dimzin"))
  437.   (setvar "osmode" 0)
  438.   (setvar "dimzin" 0)
  439.   (setq *error* newerr)
  440.   (prompt "\n拾取钢筋直径: ")
  441.   (setq a_ 2 se1 (ssget '((0 . "TEXT"))))
  442.   (if (/= se1 nil) (progn (setq l1 (sslength se1) a_ 0)) (princ "\n未选择物体."))
  443.   (while (= a_ 0)
  444.     (prompt "\n拾取钢筋长度: ")
  445.     (setq se2 (ssget '((0 . "TEXT"))))
  446.     (if (/= se2 nil) (setq l2 (sslength se2)))
  447.     (if (= l2 l1) (setq a_ 1) (princ "\n选择集长度不同! "))
  448.   )
  449.   (if (/= se1 nil) (setq a_ 0))
  450.   (while (= a_ 0)
  451.     (prompt "\n拾取钢筋根数: ")
  452.     (setq se3 (ssget '((0 . "TEXT"))))
  453.     (if (/= se3 nil) (setq l3 (sslength se3)))
  454.     (if (= l3 l1) (setq a_ 1) (princ "\n选择集长度不同! "))
  455.   )
  456.   (if (= ca:cmm nil) (setq ca:cmm 0.01 ca:c_m "cm"))
  457.   (if (= ca:r_w nil) (setq ca:r_w 3 ca:row "三"))
  458.   (if (= ca:jm nil) (setq ca:jm "右" ca:j_m 2))
  459.   (if (= ca:hh nil) (setq ca:hh (getvar "textsize")))
  460.   (if (= ca:h_ nil)
  461.     (progn
  462.       (if (>= ca:hh 1.0)
  463.         (setq ca:h_ (* (expt 10.0 (+ (fix (/ (log ca:hh) (log 10))) 1)) 2.0))
  464.         (setq ca:h_ (* (expt 10.0 (fix (/ (log ca:hh) (log 10)))) 2.0))
  465.       )
  466.     )
  467.   )
  468.   (if (= a_ 1) (progn (ca_main) (ca_prw)))
  469.   (if oldsnp (setvar "osmode" oldsnp))
  470.   (if oldzin (setvar "dimzin" oldzin))
  471.   (setq *error* olderr)
  472.   (princ)
  473. )



  474. (if (or (= (type c:cal) 'LIST) (= (type c:cal) 'SUBR)) (arxload "geomcal.arx"))
  475. (princ "\n**钢筋表计算。版本号 4.12,作者:南京市市政设计研究院 嵇龙。**" )
  476. (princ "\n**************************************************************")
  477. (princ "\n CA -- 钢筋表计算。")
  478. (princ " DTW -- 钢筋单位重计算。")
  479. (princ "\n CAT -- 钢筋重量合计。")
  480. (princ " CAS -- 统计钢筋长度或重量。")
  481. (princ)

  482.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-29 16:12:56 | 显示全部楼层
收获颇丰哈,谢谢各位的帮助,我赶紧去试一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 09:54 , Processed in 0.554221 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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