明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3923|回复: 19

[函数] 材料表重量计算

  [复制链接]
发表于 2014-4-10 21:31 | 显示全部楼层 |阅读模式
本帖最后由 lostbalance 于 2016-9-25 20:37 编辑

之前的程序漏了几个调用函数,补充了下。
更新附件的时候,原来的附件被删掉了,新的好像要重新收费。重复消费的短信通知我,我看看怎么退款

=====我=是=分=割=线=====
好老的帖子了,今天有人短消息问我要调用的函数……程序改动好多,调用函数也变动不少,就直接发新版的吧,如果有漏的回帖或者短消息吧。
新版和原版变化不大,主要加了面板功能。
  1. ;|= 材料重量计算
  2. ;|==CalWt
  3. ;|===
  4. gvar: *var-calwt*
  5. ver: [1.0.2] by lostbalance 20160913
  6. ==========|;
  7. (defun c:CalWt(/ shell shellv eha ehav hha hhav pipe plate Lsteel setdcl autocal md th a1 a2 a3 a4 b1 b2 b3 c1 c2 c3 d1 d2 d3 d4)
  8.     ;;=================================计算公式
  9.     (defun shell (a b c md) (* pi (+ a b) b c md 1e-6))
  10.     (defun shellv (a c) (* pi a a c 2.5e-10))
  11.     (defun eha (a b c md) (* pi b (+ (/ (* a a) 3.) (/ (* a b 5.) 6.) (/ (* b b 2.) 3.) (* a c) (* b c)) md 1e-6))
  12.     (defun ehav (a c) (* pi (+ (/ (* a a a) 24.) (* a a c 0.25)) 1e-9))
  13.     (defun hha (a b c md) (* pi (+ (* a a b 0.5) (* a b b) (* b b b (/ 2. 3.)) (* a b c) (* b b c)) md 1e-6))
  14.     (defun hhav (a c) (* pi (+ (* a a a (/ 1. 12.)) (* a a c 0.25)) 1e-9))
  15.     (defun pipe (a b c md) (* pi (- a b) b c md 1e-6))
  16.     (defun plate (a b c md) (* a b c md 1e-6))
  17.     (defun Lsteel ( a b c d md) (* (+ (* a c) (* b c) (* c c -1.) (* a b 0.0025)) d md 1e-6))
  18.     ;;=================================
  19.     ;;面板
  20.     (defun setdcl (/ calw str_lst init_lst infmsg ctl va1 va2 va3 wa1 wa2 wa3 wb wc wd)
  21.         (setq infmsg
  22.             (strcat
  23.                 "材料重量计算(CalWt)"
  24.                 "\nv1.0.1 20160913"
  25.                 "\n\n自动计算可根据标记格式自动计算材料重量。"
  26.                 "\n\n适用的标记格式如下:"
  27.                 "\n    筒体 DN num %%130= num (H= num)"
  28.                 "\n    椭圆形封头 EHA num X num (H= num)"
  29.                 "\n    管 %%C num X num (L= num / L≈ num)"
  30.                 "\n    筒 %%C num X num (L= num / L≈ num)"
  31.                 "\n    节 %%C num X num (L= num / L≈ num)"
  32.                 "\n    板 - num X num  (L= num / L≈ num)"
  33.                 "\n    板 num X num (%%130= num / X num)"
  34.                 "\n    块 num X num (%%130= num / X num)"
  35.                 "\n    板 %%C num %%130= num"
  36.                 "\n    圈 %%C num /%%C num %%130= num"
  37.                 "\n    环 %%C num /%%C num %%130= num"
  38.                 "\n    角钢 ∠ num X num X num (L= num / L≈ num)"
  39.                 "\n    角钢 L num X num X num (L= num / L≈ num)"
  40.                 "\n    角钢法兰 num X num X num (L= num / L≈ num)"
  41.                 "\n    角钢 num X num X num (L= num / L≈ num)"
  42.                 "\n\n注:"
  43.                 "\n    忽略大小写,num代表数字"
  44.                 "\n    括号"()"表示尺寸支持即时输入"
  45.                 "\n    斜杠"/"表示尺寸支持多种格式"
  46.                 "\n\n单位: 长度 <> mm | 容积 <> m3 | 质量 <> kg"
  47.                 "\n\nDeveloper: lostbalance"
  48.                 "\nEmail: lostbalance@foxmail.com"
  49.             )
  50.         )
  51.         ;;计算
  52.         (defun calw (flag / )
  53.             (setq va1 (shellv a1 a3))
  54.             (setq wa1 (shell a1 a2 a3 md))
  55.             (setq va2 (ehav a1 a4))
  56.             (setq wa2 (eha a1 a2 a4 md))
  57.             (setq va3 (hhav a1 a4))
  58.             (setq wa3 (hha a1 a2 a4 md))
  59.             (setq wb (pipe b1 b2 b3 md))
  60.             (setq wc (plate c1 c2 c3 md))
  61.             (setq wd (Lsteel d1 d2 d3 d4 md))
  62.             (if flag (wyb-set-init (list "va1" va1 "wa1" wa1 "va2" va2 "wa2" wa2 "va3" va3 "wa3" wa3 "wb" wb "wc" wc "wd" wd)))
  63.         )
  64.         (calw nil)
  65.         (setq str_lst
  66.             '(
  67.                 ("" "壳体" ":boxed_column{")
  68.                     ":row{"
  69.                         ("" "" ":row{" "left")
  70.                             ("a1" "DN" "real" "(setq a1 (atof $value))(calw t)" "10")
  71.                             ("a2" "δ=" "real" "(setq a2 (atof $value))(calw t)" "10")
  72.                         "}"
  73.                         ("" "" ":row{" "right")
  74.                             ("" "EHA DN<=2000 h=25; DN>2000 h=40" "text")
  75.                         "}"
  76.                     "}"
  77.                     ":row{"
  78.                         ("" "" ":row{" "left")
  79.                             ("a3" "H=" "real" "(setq a3 (atof $value))(calw t)" "10")
  80.                         "}"
  81.                         ("" "" ":row{" "right")
  82.                             ("va1" "筒体  体积   " "real" "" "10")
  83.                             ("wa1" "质量" "real" "" "10")
  84.                             ("oa1" "输出" "button" "(done_dialog 2)" "4")
  85.                         "}"
  86.                     "}"
  87.                     ":row{"
  88.                         ("" "" ":row{" "left")
  89.                             ("a4" "h=" "real" "(setq a4 (atof $value))(calw t)" "10")
  90.                         "}"
  91.                         ("" "" ":row{" "right")
  92.                             ("va2" "椭封EHA 体积" "real" "" "10")
  93.                             ("wa2" "质量" "real" "" "10")
  94.                             ("oa2" "输出" "button" "(done_dialog 3)" "4")
  95.                         "}"
  96.                     "}"
  97.                     ":row{"
  98.                         ("" "" ":row{" "left")
  99.                             ("" "HHA 准半球时h为负值" "text")
  100.                         "}"
  101.                         ("" "" ":row{" "right")
  102.                             ("va3" "球封HHA 体积" "real" "" "10")
  103.                             ("wa3" "质量" "real" "" "10")
  104.                             ("oa3" "输出" "button" "(done_dialog 4)" "4")
  105.                         "}"
  106.                     "}"
  107.                 "}"
  108.                 ("" "接管" ":boxed_row{")
  109.                     ("" "" ":row{" "left")
  110.                         ("b1" "φ" "real" "(setq b1 (atof $value))(calw t)" "10")
  111.                         ("b2" "X " "real" "(setq b2 (atof $value))(calw t)" "10")
  112.                         ("b3" "L=" "real" "(setq b3 (atof $value))(calw t)" "10")
  113.                     "}"
  114.                     ("" "" ":row{" "right")
  115.                         ("wb" "质量" "real" "" "10")
  116.                         ("ob" "输出" "button" "(done_dialog 5)" "4")
  117.                     "}"
  118.                 "}"
  119.                 ("" "钢板" ":boxed_row{")
  120.                     ("" "" ":row{" "left")
  121.                         ("c1" "    " "real" "(setq c1 (atof $value))(calw t)" "10")
  122.                         ("c2" "X " "real" "(setq c2 (atof $value))(calw t)" "10")
  123.                         ("c3" "X " "real" "(setq c3 (atof $value))(calw t)" "10")
  124.                     "}"
  125.                     ("" "" ":row{" "right")
  126.                         ("wc" "质量" "real" "" "10")
  127.                         ("oc" "输出" "button" "(done_dialog 6)" "4")
  128.                     "}"
  129.                 "}"
  130.                 ("" "角钢" ":boxed_row{")
  131.                     ("" "" ":row{" "left")
  132.                         ("d1" "∠" "real" "(setq d1 (atof $value))(calw t)" "10")
  133.                         ("d2" "X " "real" "(setq d2 (atof $value))(calw t)" "10")
  134.                         ("d3" "X " "real" "(setq d3 (atof $value))(calw t)" "10")
  135.                         ("d4" "L=" "real" "(setq d4 (atof $value))(calw t)" "10")
  136.                     "}"
  137.                     ("" "" ":row{" "right")
  138.                         ("wd" "质量" "real" "" "10")
  139.                         ("od" "输出" "button" "(done_dialog 7)" "4")
  140.                     "}"
  141.                 "}"
  142.                 ("" "" ":boxed_row{")
  143.                     ("" "" ":row{" "left")
  144.                         ("md" "密度" "real" "(setq md (atof $value))(calw t)" "10")
  145.                         ("" "g/cm3" "text")
  146.                         ("md1" "7.85" "radio" "(setq md 7.85)(wyb-set-value (list \\"md\\" \\"7.85\\" \\"md1\\" \\"0\\"))(calw t)")
  147.                         ("md2" "7.98" "radio" "(setq md 7.98)(wyb-set-value (list \\"md\\" \\"7.98\\" \\"md2\\" \\"0\\"))(calw t)")
  148.                     "}"
  149.                     ("" "" ":row{" "right")
  150.                         ("th" "字高" "real" "" "10")
  151.                     "}"
  152.                 "}"
  153.                 ":row{"
  154.                     "i"
  155.                     ("ok" "自动计算(&X)" "button" "(done_dialog 1)" "8")
  156.                     "c"
  157.                 "}"
  158.             ;    "iocr"
  159.             )
  160.         )
  161.         (setq init_lst
  162.             (list "md" md "th" th
  163.                 "a1" a1 "a2" a2 "a3" a3 "a4" a4 "va1" va1 "wa1" wa1 "va2" va2 "wa2" wa2 "va3" va3 "wa3" wa3
  164.                 "b1" b1 "b2" b2 "b3" b3 "wb" wb
  165.                 "c1" c1 "c2" c2 "c3" c3 "wc" wc
  166.                 "d1" d1 "d2" d2 "d3" d3 "d4" d4 "wd" wd
  167.                
  168.             )
  169.         )
  170.         (setq ctl (wyb-dcl-init "材料质量计算 by lostbalance" str_lst init_lst))
  171.         (setq *var-calwt* (list md th a1 a2 a3 a4 b1 b2 b3 c1 c2 c3 d1 d2 d3 d4))
  172.         (cond
  173.             ((= ctl 0))
  174.             ((= ctl 1)(autocal))
  175.             ((= ctl 2)(wyb-exportans wa1 th)(redraw)(setdcl))
  176.             ((= ctl 3)(wyb-exportans wa2 th)(redraw)(setdcl))
  177.             ((= ctl 4)(wyb-exportans wa3 th)(redraw)(setdcl))
  178.             ((= ctl 5)(wyb-exportans wb th)(redraw)(setdcl))
  179.             ((= ctl 6)(wyb-exportans wc th)(redraw)(setdcl))
  180.             ((= ctl 7)(wyb-exportans wd th)(redraw)(setdcl))
  181.         )
  182.     )
  183.     ;;自动计算程序
  184.     (defun autocal (/ rule IfNum GetNum str ans)
  185.         ;;自动计算规则
  186.         (defun rule (str / a b c d)
  187.             (cond    ;所有关键词必须大写!
  188.                 (    (IfNum str (list "筒体" "DN" "%%130=") nil)
  189.                     (setq a (GetNum "DN"))
  190.                     (setq b (GetNum "%%130="))
  191.                     (cond
  192.                         ((vl-string-search "H=" str) (setq c (GetNum "H=")))
  193.                         ((setq c (wyb-getdist "\n筒体长度: <3000> " 3000.)))
  194.                     )
  195.                     (setq ans (shell a b c md))
  196.                 )
  197.                 (    (IfNum str (list "椭圆形封头" "EHA" "X") nil)
  198.                     (setq a (GetNum "EHA"))
  199.                     (setq b (GetNum "X"))
  200.                     (cond
  201.                         ((vl-string-search "H=" str) (setq c (GetNum "H=")))
  202.                         ((< a 2000) (setq c 25.))
  203.                         ((setq c 40.))
  204.                     )
  205.                     (setq ans (eha a b c md))
  206.                 )
  207.                 (    (or (IfNum str (list "管" "%%C" "X") nil)
  208.                         (IfNum str (list "筒" "%%C" "X") nil)
  209.                         (IfNum str (list "节" "%%C" "X") nil)
  210.                     )
  211.                     (setq a (GetNum "%%C"))
  212.                     (setq b (GetNum "X"))
  213.                     (cond
  214.                         ((vl-string-search "L=" str) (setq c (GetNum "L=")))
  215.                         ((vl-string-search "L≈" str) (setq c (GetNum "L≈")))
  216.                         ((setq c (wyb-getdist "\n管长: <110> " 110.)))
  217.                     )
  218.                     (setq ans (pipe a b c md))
  219.                 )
  220.                 (    (IfNum str (list "板-" "X") nil)
  221.                     (setq a (GetNum "板-"))
  222.                     (setq b (GetNum "X"))
  223.                     (cond
  224.                         ((vl-string-search "L=" str) (setq c (GetNum "L=")))
  225.                         ((vl-string-search "L≈" str) (setq c (GetNum "L≈")))
  226.                         ((setq c (wyb-getdist "\n第三边长度: <100> " 100.)))
  227.                     )
  228.                     (setq ans (plate a b c md))
  229.                 )
  230.                 (    (IfNum str (list "板" "X") nil)
  231.                     (setq a (GetNum "板"))
  232.                     (setq b (GetNum "X"))
  233.                     (cond
  234.                         ((IfNum str (list "%%130=") nil) (setq c (GetNum "%%130=")))
  235.                         ((IfNum str (list "X") nil) (setq c (GetNum "X")))
  236.                         ((setq c (wyb-getdist "\n第三边长度: <8> " 8.)))
  237.                     )
  238.                     (setq ans (plate a b c md))
  239.                 )
  240.                 (    (IfNum str (list "块" "X") nil)
  241.                     (setq a (GetNum "块"))
  242.                     (setq b (GetNum "X"))
  243.                     (cond
  244.                         ((IfNum str (list "%%130=") nil) (setq c (GetNum "%%130=")))
  245.                         ((IfNum str (list "X") nil) (setq c (GetNum "X")))
  246.                         ((setq c (wyb-getdist "\n第三边长度: <8> " 8.)))
  247.                     )
  248.                     (setq ans (plate a b c md))
  249.                 )
  250.                 (    (IfNum str (list "板" "%%C" "%%130=") (list "/%%C"))
  251.                     (setq a (GetNum "%%C"))
  252.                     (setq b (GetNum "%%130="))
  253.                     (setq ans (pipe a (* a 0.5) b md))
  254.                 )
  255.                 (    (or (IfNum str (list "圈" "%%C" "/%%C" "%%130=") nil)
  256.                         (IfNum str (list "环" "%%C" "/%%C" "%%130=") nil)
  257.                     )
  258.                     (setq a (GetNum "%%C"))
  259.                     (setq b (GetNum "/%%C"))
  260.                     (setq c (GetNum "%%130="))
  261.                     (setq ans (pipe a (* (- a b) 0.5) c md))
  262.                 )
  263.                 (    (IfNum str (list "角钢" "X") nil)
  264.                     (cond
  265.                         ((vl-string-search "角钢∠" str) (setq a (GetNum "角钢∠")))
  266.                         ((vl-string-search "角钢L" str) (setq a (GetNum "角钢L")))
  267.                         ((vl-string-search "角钢法兰" str) (setq a (GetNum "角钢法兰")))
  268.                         ((vl-string-search "角钢" str) (setq a (GetNum "角钢")))
  269.                     )
  270.                     (setq b (GetNum "X"))
  271.                     (if (vl-string-search "X" str) (setq c (GetNum "X")) (setq c b b a))
  272.                     (cond
  273.                         ((vl-string-search "L=" str) (setq d (GetNum "L=")))
  274.                         ((vl-string-search "L≈" str) (setq d (GetNum "L≈")))
  275.                         ((setq d (wyb-getdist "\n长度: <1000> " 1000.)))
  276.                     )
  277.                     (setq ans (Lsteel a b c d md))
  278.                 )
  279.             )
  280.         )
  281.         ;;根据关键词判断数据是否齐全 lst1需要;lst2排除
  282.         (defun IfNum (str lst1 lst2 / str1 i key n)
  283.             (setq n (length lst1))
  284.             (setq i 0 key t)
  285.             (while (and key (< i n))
  286.                 (setq str1 (nth i lst1))
  287.                 (if (vl-string-search str1 str)
  288.                     (setq i (1+ i)
  289.                         str (substr str (+ (vl-string-search str1 str) (1+ (strlen str1))))
  290.                     )
  291.                     (setq key nil)
  292.                 )
  293.             )
  294.             (if lst2
  295.                 (progn
  296.                     (setq n (length lst2) i 0)
  297.                     (while (and key (< i n))
  298.                         (setq str1 (nth i lst2))
  299.                         (if (vl-string-search str1 str)
  300.                             (setq key nil)
  301.                             (setq i (1+ i))
  302.                         )
  303.                     )
  304.                 )
  305.             )
  306.             key
  307.         )
  308.         ;;根据关键词提取其后的数字,同时截去str关键词前的部分
  309.         (defun GetNum (str1 / n a)
  310.             (setq n (1+ (strlen str1)))
  311.             (setq str (substr str (+ (vl-string-search str1 str) n)))
  312.             (setq a (atof str))
  313.         )
  314.         ;;======================
  315.         (while (setq str (wyb-entsel "\n选择材料标记: <退出> " '("TEXT" "MTEXT")))
  316.             (setq str (wyb-get-entdxf 1 (entget (car str))))
  317.             (setq str (strcase (wyb-str-replace " " "" str))) ;;去空格并转大写
  318.             (Rule str)
  319.             (if ans
  320.                 (progn
  321.                     (princ (strcat " 材料重量: " (rtos ans 2 3) " kg"))
  322.                     (wyb-ExportAns ans th)
  323.                     (setq ans nil str nil)
  324.                 )
  325.                 (princ " 不支持该材料标记格式!...")
  326.             )
  327.         )
  328.     )
  329.     ;;=============================
  330.     (if (not (vl-consp *var-calwt*)) (setq *var-calwt* '(7.85 4. 2000. 6. 3000. 25. 60.3 5.6 110. 200. 200. 6. 63. 63. 6. 1000.)))
  331.     (setq md (car *var-calwt*) th (cadr *var-calwt*)
  332.         a1 (caddr *var-calwt*) a2 (cadddr *var-calwt*) a3 (nth 4 *var-calwt*) a4 (nth 5 *var-calwt*)
  333.         b1 (nth 6 *var-calwt*) b2 (nth 7 *var-calwt*) b3 (nth 8 *var-calwt*)
  334.         c1 (nth 9 *var-calwt*) c2 (nth 10 *var-calwt*) c3 (nth 11 *var-calwt*)
  335.         d1 (nth 12 *var-calwt*) d2 (nth 13 *var-calwt*) d3 (nth 14 *var-calwt*) d4 (nth 15 *var-calwt*)
  336.     )
  337.     (wyb-error-init '("cmdecho" 0 "dimzin" 8))
  338.     (setdcl)
  339.     (wyb-error-end)
  340.     (princ)
  341. )


=====我=是=分=割=线=====
这两天编了个材料表重量计算的程序,可以根据特定的关键词自动计算质量。
水平有限,有兴趣的可以优化下。另外,个人觉得可以程序可以改造成多选后,自动根据材料确定密度等参数,操作计算整个数据表,不过我所在的化工专业,材料表的很多材料只有一个名称,反而会影响效率,所以就不在这方面深化了。
另外,源码中涉及的调用函数,根据函数名,论坛里找一下或者自己写下吧,我就不贴了。
ps:公司做好的演示图正好超了4M,就打包了下。。。
  1. ;;CalWt自动计算标准格式的材料质量
  2. ;;by woyb
  3. (defun c:CalWt( / Setup IfNum GetNum txh str md nlst a b c ans)
  4.   ;根据关键词判断数据是否齐全
  5.   (defun IfNum (str lst1 lst2 / str1 i key n)
  6.     (setq n (length lst1))
  7.     (setq i 0 key t)
  8.     (while (and key (< i n))
  9.       (setq str1 (nth i lst1))
  10.       (if (vl-string-search str1 str)
  11.         (progn
  12.           (setq i (1+ i))
  13.           (setq str (substr str (+ (vl-string-search str1 str) (1+ (strlen str1)))))
  14.         )
  15.         (setq key nil)
  16.       )
  17.     )
  18.     (if lst2
  19.       (progn
  20.         (setq n (length lst2))
  21.         (setq i 0)
  22.         (while (and key (< i n))
  23.           (setq str1 (nth i lst2))
  24.           (if (vl-string-search str1 str)
  25.             (setq key nil)
  26.             (setq i (1+ i))
  27.           )
  28.         )
  29.       )
  30.     )
  31.     key
  32.   )
  33.   ;提取关键词后的字符,并转化数字
  34.   (defun GetNum (str1 / n a)
  35.     (setq n (1+ (strlen str1)))
  36.     (setq str (substr str (+ (vl-string-search str1 str) n)))
  37.     (setq a (atof str))
  38.   )
  39.   ;取值函数
  40.   (defun Setup()
  41.     (initget "s d f")
  42.     (setq md (getreal (strcat "\n密度g/cm3 或 设置字高[S] 7.85[D] 7.98[F]: <" (rtos ACW-md)">")))
  43.     (cond
  44.       ((= md "s")
  45.         (setq txh (getreal (strcat "\n写入重量的文字高度: <"(rtos ACW-txh)"> ")))
  46.         (if txh (setq ACW-txh txh) (setq txh ACW-txh))
  47.         (Setup)
  48.       )
  49.       ((= md "d") (setq md 7.85) (setq ACW-md 7.85))
  50.       ((= md "f") (setq md 7.98) (setq ACW-md 7.98))
  51.       (md (setq ACW-md md))
  52.       ((setq md ACW-md))
  53.     )
  54.   )
  55.   (if (not cal) (princ "\ncal..."))
  56.   (princ "\n计算标准标记格式的材料重量: ")
  57.   (WYB-CMD0)
  58.   (setq str (WYB-entsel "\n选择材料标记: " '((0 . "TEXT"))))
  59.   (WYB-CMD1)
  60.   (if (not ACW-md) (setq ACW-md 7.85))
  61.   (if (not ACW-txh) (setq ACW-txh 4 txh 4) (setq txh ACW-txh))
  62.   (setq str (cdr (assoc 1 (entget (car str)))))
  63.   (setq str (WYB-strreplace " " "" str));去空格
  64.   (setq str (strcase str));全部大写
  65.   (cond  ;所有关键词必须大写!
  66.     (  (IfNum str (list "筒体DN" "%%130=" "H=") nil)
  67.       (setq a (GetNum "筒体DN"))
  68.       (setq b (GetNum "%%130="))
  69.       (setq c (GetNum "H="))
  70.       (Setup)
  71.       (setq ans (* (+ (* a b 4.) (* b b 4.)) pi c md 0.00000025))
  72.     )
  73.     (  (IfNum str (list "椭圆形封头EHA" "X") nil)
  74.       (setq a (GetNum "椭圆形封头EHA"))
  75.       (setq b (GetNum "X"))
  76.       (cond
  77.         ((vl-string-search "H=" str) (setq c (GetNum "H=")))
  78.         ((< a 2000) (setq c 25.))
  79.         ((setq c 40.))
  80.       )
  81.       (Setup)
  82.       (setq ans (* (+ (* a a (/ 1. 3.)) (* a b (/ 5. 6.)) (* b b (/ 2. 3.)) (* (+ a b) c)) b md pi 0.000001))
  83.     )
  84.     (  (or (IfNum str (list "管%%C" "X") nil)
  85.         (IfNum str (list "筒%%C" "X") nil)
  86.         (IfNum str (list "节%%C" "X") nil)
  87.       )
  88.       (setq a (GetNum "%%C"))
  89.       (setq b (GetNum "X"))
  90.       (cond
  91.         ((vl-string-search "L=" str) (setq c (GetNum "L=")))
  92.         ((vl-string-search "L≈" str) (setq c (GetNum "L≈")))
  93.         ((setq c (WYB-getreal "\n管长: <110> " 110.)))
  94.       )
  95.       (Setup)
  96.       (setq ans (* (- (* a b 4.) (* b b 4.)) pi c md 0.00000025))
  97.     )
  98.     (  (IfNum str (list "板-" "X") nil)
  99.       (setq a (GetNum "板-"))
  100.       (setq b (GetNum "X"))
  101.       (cond
  102.         ((vl-string-search "L=" str) (setq c (GetNum "L=")))
  103.         ((vl-string-search "L≈" str) (setq c (GetNum "L≈")))
  104.         ((setq c (WYB-getreal "\n第三边长度: <100> " 100.)))
  105.       )
  106.       (Setup)
  107.       (setq ans (* a b c md 0.000001))
  108.     )
  109.     (  (IfNum str (list "板" "X") nil)
  110.       (setq a (GetNum "板"))
  111.       (setq b (GetNum "X"))
  112.       (cond
  113.         ((IfNum str (list "%%130=") nil) (setq c (GetNum "%%130=")))
  114.         ((IfNum str (list "X") nil) (setq c (GetNum "X")))
  115.         ((setq c (WYB-getreal "\n第三边长度: <10> " 10.)))
  116.       )
  117.       (Setup)
  118.       (setq ans (* a b c md 0.000001))
  119.     )
  120.     (  (IfNum str (list "块" "X") nil)
  121.       (setq a (GetNum "块"))
  122.       (setq b (GetNum "X"))
  123.       (cond
  124.         ((IfNum str (list "%%130=") nil) (setq c (GetNum "%%130=")))
  125.         ((IfNum str (list "X") nil) (setq c (GetNum "X")))
  126.         ((setq c (WYB-getreal "\n第三边长度: <10> " 10.)))
  127.       )
  128.       (Setup)
  129.       (setq ans (* a b c md 0.000001))
  130.     )
  131.     (  (IfNum str (list "板" "%%C" "%%130=") (list "/%%C"))
  132.       (setq a (GetNum "%%C"))
  133.       (setq b (GetNum "%%130="))
  134.       (Setup)
  135.       (setq ans (* a a b pi md 0.00000025))
  136.     )
  137.     (  (or (IfNum str (list "圈" "%%C" "/%%C" "%%130=") nil)
  138.         (IfNum str (list "环" "%%C" "/%%C" "%%130=") nil)
  139.       )
  140.       (setq a (GetNum "%%C"))
  141.       (setq b (GetNum "/%%C"))
  142.       (setq c (GetNum "%%130="))
  143.       (Setup)
  144.       (setq ans (* (- (* a a) (* b b)) c pi md 0.00000025))
  145.     )
  146.     (  (IfNum str (list "角钢" "X") nil)
  147.       (cond
  148.         ((vl-string-search "角钢∠" str) (setq a (GetNum "角钢∠")))
  149.         ((vl-string-search "角钢" str) (setq a (GetNum "角钢")))
  150.         ((vl-string-search "角钢法兰" str) (setq a (GetNum "角钢法兰")))
  151.       )
  152.       (setq b (GetNum "X"))
  153.       (if (vl-string-search "X" str) (setq c (GetNum "X")) (setq c b b a))
  154.       (cond
  155.         ((vl-string-search "L=" str) (setq d (GetNum "L=")))
  156.         ((vl-string-search "L≈" str) (setq d (GetNum "L≈")))
  157.         ((setq d (WYB-getreal "\n长度: <1000> " 1000.)))
  158.       )
  159.       (Setup)
  160.       (setq ans (* (- (+ a b) c) c d md 0.000001))
  161.     )
  162.   )
  163.   (if ans
  164.     (progn (WYB-ExportAns ans txh) (princ "\n完成计算!"))
  165.     (princ "\n该材料标记格式未添加至本程序!")
  166.   )
  167.   (princ)
  168. )

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +3 收起 理由
flyfox1047 + 1 赞一个!
Gu_xl + 2 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2017-10-10 20:35 | 显示全部楼层
新鲜8 发表于 2017-10-10 09:45
可以计算槽钢H钢工子钢吗

如果是名称标识中能表示出横截面的长宽厚尺寸的话,在规则中增加相应的计算公式后也是用的。不过,就我个人接触的经验来说,槽钢工字钢类的,如果是标准截面的,都使用的是标准代号。建一个代号和长度质量对应的数据库,也是可行的。
 楼主| 发表于 2016-9-24 22:52 | 显示全部楼层
kexiya123 发表于 2016-9-24 15:49
可是我运行后,calwt error:CAO ZUO ERROE,please try a time。
没反应,咋回事?

我这边试了没什么问题啊。这个提示是怎么出现的?你是不是在旧版的基础上改的?新旧差代码还是有区别的
 楼主| 发表于 2016-9-25 20:39 | 显示全部楼层
hao3ren 发表于 2016-9-25 19:19
命令: CalWt
参数类型错误: VLA-OBJECT nil

又检查了下,好像有几个函数漏了。第一次测试的时候,函数库好像没有清掉,以为齐了。
你再试下看看。
发表于 2014-5-25 00:01 | 显示全部楼层
希望大家编写一个门式钢架里面一块钢板变化尺寸后,直接出重量的程序!
发表于 2014-12-11 13:19 | 显示全部楼层
能不能搞一个自动的材料表
 楼主| 发表于 2016-9-23 22:27 | 显示全部楼层
主题编辑不会顶贴的吗,自己顶一下吧,应该不算挖坟吧
发表于 2016-9-24 15:47 | 显示全部楼层
lostbalance 发表于 2016-9-23 22:27
主题编辑不会顶贴的吗,自己顶一下吧,应该不算挖坟吧

可是我运行后,calwt error:CAO ZUO ERROE,please try a time。
没反应,咋回事?
发表于 2016-9-24 15:49 | 显示全部楼层
lostbalance 发表于 2016-9-23 22:27
主题编辑不会顶贴的吗,自己顶一下吧,应该不算挖坟吧

可是我运行后,calwt error:CAO ZUO ERROE,please try a time。
没反应,咋回事?

评分

参与人数 1明经币 +1 收起 理由
lostbalance + 1 退款

查看全部评分

发表于 2016-9-25 19:19 | 显示全部楼层
命令: CalWt
参数类型错误: VLA-OBJECT nil

评分

参与人数 1明经币 +1 收起 理由
lostbalance + 1 退款

查看全部评分

 楼主| 发表于 2016-9-25 20:40 | 显示全部楼层
kexiya123 发表于 2016-9-24 15:49
可是我运行后,calwt error:CAO ZUO ERROE,please try a time。
没反应,咋回事?

你再试试看。重置了cad,又检查了下,这回应该可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-5 13:42 , Processed in 3.815733 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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