找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 315|回复: 0

[LISP程序]:均布荷载下单双向板计算程序

[复制链接]
发表于 2004-1-18 10:42:10 | 显示全部楼层 |阅读模式

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

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

×
;+-----------------------------+
;+ 均布荷载下双向板的弹性计算  +
;+ 文件名 Ban.lsp              +
;+-----------------------------+
;tab1--四边简支
;tab2--一边固端 三边简支
;tab3--两对边固端 二边简支
;tab4--两邻边固端 二边简支
;tab5--三边固端 一边简支
;tab6--四边固端
;tab6--四边固端
;tab7-四边自由

(vmon)
(setq tab1 (list
               '(0.50 0.0965 0.0174 0 0)
               '(0.55 0.0892 0.0210 0 0)
               '(0.60 0.0820 0.0243 0 0)
               '(0.65 0.0750 0.0273 0 0)
               '(0.70 0.0683 0.0298 0 0)
               '(0.75 0.0619 0.0318 0 0)
               '(0.80 0.0560 0.0334 0 0)
               '(0.85 0.0506 0.0348 0 0)
               '(0.90 0.0456 0.0359 0 0)
               '(0.95 0.0410 0.0365 0 0)
               '(1.00 0.0368 0.0368 0 0)
               '(-0.95 0.0365 0.0410 0 0)
               '(-0.90 0.0359 0.0456 0 0)
               '(-0.85 0.0348 0.0506 0 0)
               '(-0.80 0.0334 0.0560 0 0)
               '(-0.75 0.0318 0.0619 0 0)
               '(-0.70 0.0298 0.0683 0 0)
               '(-0.65 0.0273 0.0750 0 0)
               '(-0.60 0.0243 0.0820 0 0)
               '(-0.55 0.0210 0.0892 0 0)
               '(-0.50 0.0174 0.0965 0 0)
              ) ;list end
      tab2 (list
               '(0.50 0.0584 0.0060 0.1214 0)
               '(0.55 0.0562 0.0083 0.1188 0)
               '(0.60 0.0538 0.0105 0.1159 0)
               '(0.65 0.0512 0.0127 0.1126 0)
               '(0.70 0.0485 0.0149 0.1089 0)
               '(0.75 0.0467 0.0168 0.1050 0)
               '(0.80 0.0428 0.0187 0.1008 0)
               '(0.85 0.0400 0.0205 0.0965 0)
               '(0.90 0.0372 0.0221 0.0922 0)
               '(0.95 0.0345 0.0234 0.0880 0)
               '(1.00 0.0318 0.0243 0.0839 0)
               '(-0.95 0.0327 0.0282 0.0881 0)
               '(-0.90 0.0330 0.0323 0.0924 0)
               '(-0.85 0.0328 0.0369 0.0967 0)
               '(-0.80 0.0324 0.0423 0.1011 0)
               '(-0.75 0.0319 0.0485 0.1055 0)
               '(-0.70 0.0309 0.0553 0.1096 0)
               '(-0.65 0.0292 0.0627 0.1133 0)
               '(-0.60 0.0269 0.0707 0.1165 0)
               '(-0.55 0.0240 0.0792 0.1192 0)
               '(-0.50 0.0204 0.0880 0.1215 0)
              )  ;list end
      tab3 (list
               '(0.50 0.0414 0.0017 0.0845 0)
               '(0.55 0.0408 0.0029 0.0843 0)
               '(0.60 0.0400 0.0043 0.0837 0)
               '(0.65 0.0391 0.0058 0.0828 0)
               '(0.70 0.0380 0.0073 0.0816 0)
               '(0.75 0.0366 0.0088 0.0801 0)
               '(0.80 0.0350 0.0103 0.0784 0)
               '(0.85 0.0335 0.0119 0.0765 0)
               '(0.90 0.0319 0.0134 0.0744 0)
               '(0.95 0.0302 0.0147 0.0722 0)
               '(1.00 0.0285 0.0158 0.0698 0)
               '(-0.95 0.0297 0.0189 0.0745 0)
               '(-0.90 0.0307 0.0225 0.0796 0)
               '(-0.85 0.0314 0.0267 0.0849 0)
               '(-0.80 0.0318 0.0316 0.0902 0)
               '(-0.75 0.0320 0.0374 0.0957 0)
               '(-0.70 0.0319 0.0442 0.1011 0)
               '(-0.65 0.0310 0.0519 0.1063 0)
               '(-0.60 0.0292 0.0604 0.1111 0)
               '(-0.55 0.0266 0.0697 0.1154 0)
               '(-0.50 0.0234 0.0790 0.1191 0)
              ) ;list end
      tab4 (list
               '(0.50 0.0560 0.0079 0.1177 0.0782)
               '(0.55 0.0529 0.0105 0.1136 0.0779)
               '(0.60 0.0496 0.0130 0.1093 0.0776)
               '(0.65 0.0462 0.0153 0.1047 0.0773)
               '(0.70 0.0426 0.0171 0.0996 0.0768)
               '(0.75 0.0390 0.0188 0.0940 0.0759)
               '(0.80 0.0355 0.0203 0.0882 0.0746)
               '(0.85 0.0322 0.0216 0.0825 0.0731)
               '(0.90 0.0291 0.0226 0.0773 0.0714)
               '(0.95 0.0262 0.0232 0.0724 0.0696)
               '(1.00 0.0234 0.0234 0.0677 0.0677)
               '(-0.95 0.0232 0.0262 0.0696 0.0724)
               '(-0.90 0.0226 0.0291 0.0714 0.0773)
               '(-0.85 0.0216 0.0322 0.0731 0.0825)
               '(-0.80 0.0203 0.0355 0.0746 0.0882)
               '(-0.75 0.0188 0.0390 0.0759 0.0940)
               '(-0.70 0.0171 0.0426 0.0768 0.0996)
               '(-0.65 0.0153 0.0462 0.0773 0.1047)
               '(-0.60 0.0130 0.0496 0.0776 0.1093)
               '(-0.55 0.0105 0.0529 0.0779 0.1136)
               '(-0.50 0.0079 0.0560 0.0782 0.1177)
              )   ;list end
      tab5 (list
               '(0.50 0.0409 0.0028 0.0836 0.0563)
               '(0.55 0.0398 0.0041 0.0826 0.0564)
               '(0.60 0.0385 0.0059 0.0813 0.0566)
               '(0.65 0.0370 0.0075 0.0796 0.0569)
               '(0.70 0.0352 0.0091 0.0774 0.0572)
               '(0.75 0.0333 0.0107 0.0748 0.0571)
               '(0.80 0.0313 0.0123 0.0720 0.0568)
               '(0.85 0.0292 0.0138 0.0691 0.0564)
               '(0.90 0.0270 0.0151 0.0660 0.0560)
               '(0.95 0.0249 0.0161 0.0628 0.0556)
               '(1.00 0.0228 0.0167 0.0596 0.0551)
               '(-0.95 0.0230 0.0193 0.0626 0.0599)
               '(-0.90 0.0231 0.0222 0.0655 0.0652)
               '(-0.85 0.0229 0.0254 0.0682 0.0710)
               '(-0.80 0.0224 0.0289 0.0706 0.0773)
               '(-0.75 0.0214 0.0327 0.0727 0.0839)
               '(-0.70 0.0198 0.0368 0.0743 0.0907)
               '(-0.65 0.0177 0.0411 0.0755 0.0978)
               '(-0.60 0.0153 0.0452 0.0765 0.1046)
               '(-0.55 0.0127 0.0492 0.0774 0.1101)
               '(-0.50 0.0098 0.0535 0.0782 0.1140)
              )  ;list end
      tab6 (list
               '(0.50 0.0401 0.0038 0.0826 0.0560)
               '(0.55 0.0385 0.0055 0.0806 0.0561)
               '(0.60 0.0367 0.0076 0.0784 0.0562)
               '(0.65 0.0346 0.0096 0.0759 0.0565)
               '(0.70 0.0322 0.0114 0.0731 0.0568)
               '(0.75 0.0297 0.0129 0.0698 0.0564)
               '(0.80 0.0271 0.0143 0.0661 0.0558)
               '(0.85 0.0246 0.0156 0.0620 0.0550)
               '(0.90 0.0222 0.0167 0.0580 0.0540)
               '(0.95 0.0198 0.0173 0.0543 0.0527)
               '(1.00 0.0176 0.0176 0.0511 0.0511)
               '(-0.95 0.0173 0.0198 0.0527 0.0543)
               '(-0.90 0.0167 0.0222 0.0540 0.0580)
               '(-0.85 0.0156 0.0246 0.0550 0.0620)
               '(-0.80 0.0143 0.0271 0.0558 0.0661)
               '(-0.75 0.0129 0.0297 0.0564 0.0698)
               '(-0.70 0.0114 0.0322 0.0568 0.0731)
               '(-0.65 0.0096 0.0346 0.0565 0.0759)
               '(-0.60 0.0076 0.0367 0.0562 0.0784)
               '(-0.55 0.0055 0.0385 0.0561 0.0806)
               '(-0.50 0.0038 0.0401 0.0560 0.0826)
              )  ;list end
      tab7 (list
               '(0.50 0.0152 0.1218 0.0655 0.1300)
               '(0.55 0.0205 0.1213 0.0731 0.1322)
               '(0.60 0.0270 0.1206 0.0811 0.1345)
               '(0.65 0.0341 0.1198 0.0894 0.1369)
               '(0.70 0.0421 0.1188 0.0979 0.1395)
               '(0.75 0.0510 0.1176 0.1070 0.1425)
               '(0.80 0.0607 0.1161 0.1166 0.1459)
               '(0.85 0.0713 0.1143 0.1267 0.1494)
               '(0.90 0.0821 0.1120 0.1374 0.1532)
               '(0.95 0.0936 0.1091 0.1485 0.1568)
               '(1.00 0.1055 0.1055 0.1604 0.1604)
               '(-0.95 0.1091 0.0936 0.1568 0.1485)
               '(-0.90 0.1120 0.0821 0.1532 0.1374)
               '(-0.85 0.1143 0.0713 0.1494 0.1267)
               '(-0.80 0.1161 0.0607 0.1459 0.1166)
               '(-0.75 0.1176 0.0510 0.1425 0.1070)
               '(-0.70 0.1188 0.0421 0.1395 0.0979)
               '(-0.65 0.1198 0.0341 0.1369 0.0894)
               '(-0.60 0.1206 0.0270 0.1345 0.0811)
               '(-0.55 0.1213 0.0205 0.1322 0.0731)
               '(-0.50 0.1218 0.0152 0.1300 0.0655)
              ) ;list end
) ;setq end

;生成指定长度的空格字符串
(defun space(n / txt)
   (setq txt "")
   (repeat n
      (setq txt (strcat txt " "))
   )  ;repeat end
)  ;defun end

;计算指定长度、精度的字串
(defun rtos1(num n1 n2 n3 / txt txt1)
   (setq txt (rtos num n1 n2)
         txt1 (space (- n3 (strlen txt)))
         txt (strcat txt1 txt)
   ) ;setq end
);defun end

;计算弯矩配筋
(defun cal_rei(M fc h0 / r s t1 t2 as tt w )
  (setq r 0.614
        s 0.426
        t1 (/ 1.0 (* fc h0 h0))
        t2 (* M 1000 t1)
  ) ;setq end
  (if (> t2 s)
    (progn
      (princ "\n 加大截面!")
      (setq as 999999)
    ) ;progn end
    (setq tt (/ (* m 1e3) (* fc h0 h0))
          w (- 1 (sqrt (- 1 (* 2.0 tt))))
          as (/ (* fc 1000 h0 w) 210 )
     ) ;setq end
   ) ;if end
   (setq as (if (< as (* 0.0015 1000 h0)) (* 0.0015 1000 h0 ) as))
) ;defun end

(defun head( )
(textscr)
(princ (strcat (space 30)  "板类型"))
(princ "\n")
(princ (strcat "\n" (space 3)  "***  --表示固结   ---  --表示简支"))
(princ "\n")
(princ (strcat "\n" (space 4)  "----------------"  (space 10)  "----------------"  
                (space 10)  "----------------"))
( repeat 2
  (princ (strcat "\n" (space 4)  "|"  (space 15)  "|"  (space 9)  "*"  (space 15)  
                 "|"  (space 9)  "*"  (space 15)  "*"))
  ) ;repeat end
(princ (strcat "\n" (space 4)  "|"  (space 7)  "N=1"  (space 5)  "|"
                (space 1) "B" (space 7)  "*"  (space 7)  "N=2"  (space 5)
                "|" (space 1)  "B" (space 7)  "*"  (space 7)  "N=3"  
                (space 5)  "*"  (space 1)  "B"))
(repeat 2
    (princ (strcat "\n" (space 4)  "|"  (space 15)  "|"  (space 9)  "*"  
                (space 15)  "|" (space 9)  "*"  (space 15)  "*"))
  ) ;repeat end
(princ (strcat "\n" (space 4)  "----------------"  (space 10)  "----------------"  
                (space 10)  "----------------"))
(princ (strcat "\n" (space 12)  "A"  (space 23)  "A"  (space 23)  "A"))
(princ "\n")
(princ (strcat "\n" (space 4)  "-----------------"  (space 10)  "----------------"  
               (space 10)  "****************"))
(repeat 2
(princ (strcat "\n" (space 4)  "*"  (space 15)  "|"  (space 9)  "*"  
              (space 15) "*"  (space 9)  "*"  (space 15)  "*"))
) ;repeat end
(princ (strcat "\n" (space 4)  "*"  (space 7)  "N=4"  (space 5)  "|"  
             (space 1) "B"  (space 7)  "*"  (space 7)  "N=5"  (space 5)
             "*"  (space 1) "B"  (space 7)  "*"  (space 7)  "N=6"  (space 5)
            "*"  (space 1)  "B"))
(repeat 2
  (princ (strcat "\n" (space 4)  "*"  (space 15)  "|"  (space 9)  "*"  
             (space 15) "*"  (space 9)  "*"  (space 15)  "*"))
  ) ;repeat end
(princ (strcat "\n" (space 4)  "****************"  (space 10)  "****************"  
            (space 10)  "****************"))
(princ (strcat "\n" (space 12)  "A"  (space 23)  "A"  (space 23)  "A"))
(princ "\n N=7:四边自由")
(princ "\n 单向板: 两边简支N=8.1  一边简支一边固定:N=8.2  两边固定:N=8.3")
(princ  "\n p--板上静荷载,q--板上活荷载,h--板厚(m),c--砼标号")
(princ)
);defun end

(defun c:ban( / A B p q h N c g)
  (inivar) ;初始化系统变量
  (load "tab")
  (load "concrete")
  (head) ;打印表头
  (princ "\nA,B,p,q,h,N,c=")  
  (setq scale 1)
  (setq ll (readlh)
        mode (getint "\n按旧规范GB10-89(0)/按新规范GB50010-2002(1)计算配筋:<1>")
        mode (if mode mode 1)
        A (nth 0 ll)
        B (nth 1 ll)
        P (nth 2 ll)
        q (nth 3 ll)
        h (nth 4 ll)
        h0 (- (* 1000 h) 15)
        N (nth 5 ll)
        c (nth 6 ll)
        fc (if (= mode 0) (concrete "fc" c mode)  ;旧规范
                           (* (alfa1 c) (concrete "fc" c mode))  ;新规范
           ) ;if end
        g (+ (* 1.2 p) (* 1.4 q))
        L0 (/ (float A) B)
        L0 (if (> L0 1) (* -1 (/ (float B) A)) L0)
        txt-L0 (strcat "\n" (if (> L0 0) "n=A/B=" "n=B/A=") (rtos L0 2 3))
        i (if (> L0 0) (+ 1  (fix (- (* 20 A (/ 1.0 B)) 10)))
                       (- 20 (fix (- (* 20 B (/ 1.0 A)) 10))))  ;计算查表位置
  ) ;setq end
  (princ "\n计算结果:")
  (princ txt-L0)
  (princ (strcat "\ng=1.2*" (rtos p 2 3) "+1.4*" (rtos q 2 3) "=" (rtos g 2 3)))
  (cond
     ((= N 1) (setq ll_tab tab1))
     ((= N 2) (setq ll_tab tab2))
     ((= N 3) (setq ll_tab tab3))
     ((= N 4) (setq ll_tab tab4))
     ((= N 5) (setq ll_tab tab5))
     ((= N 6) (setq ll_tab tab6))
     ((= N 7) (setq ll_tab tab7))
  ) ;cond end
(if (< N 8)
  (progn ;计算双向板
  (setq sub_tab1 (nth (- i 1) ll_tab)
        sub_tab2 (nth i ll_tab)
        hi (nth 0 sub_tab1)        
        e_MXi (nth 1 sub_tab1)        
        e_Myi (nth 2 sub_tab1)        
        e_Mx0i (nth 3 sub_tab1)        
        e_My0i (nth 4 sub_tab1)        
        hi1 (nth 0 sub_tab2)        
        e_MXi1 (nth 1 sub_tab2)        
        e_Myi1 (nth 2 sub_tab2)        
        e_Mx0i1 (nth 3 sub_tab2)        
        e_My0i1 (nth 4 sub_tab2)        
        e_Mx (+ e_Mxi (* (- L0 hi) (- e_Mxi1 e_Mxi) (/ 1.0 (- hi1 hi))))
        e_My (+ e_Myi (* (- L0 hi) (- e_Myi1 e_Myi) (/ 1.0 (- hi1 hi))))
        e_Mx0 (+ e_Mx0i (* (- L0 hi) (- e_Mx0i1 e_Mx0i) (/ 1.0 (- hi1 hi))))
        e_My0 (+ e_My0i (* (- L0 hi) (- e_My0i1 e_My0i) (/ 1.0 (- hi1 hi))))
        A (if (> A B) B A)
        Mx1 (* e_Mx g A A)
        My1 (* e_My g A A)
        Mx (+ Mx1 (/ My1 5.0))  ;考虑泊松比调整
        My (+ My1 (/ Mx1 5.0))
        Mx0 (* e_Mx0 g A A)
        My0 (* e_My0 g A A)
        as_Mx (cal_rei Mx fc h0)
        as_My (cal_rei My fc h0)
        as_Mx0 (cal_rei Mx0 fc h0)
        as_My0 (cal_rei My0 fc h0)
    ) ;setq end
    ;打印结果
    (princ (strcat "\n" (space 17) "n" (space 8) "Mx" (space 8) "My"
                 (space 7) "Mx0" (space 7) "My0"))
    (princ (strcat "\n      1:" (rtos1 hi 2 3 10) (rtos1 e_Mxi 2 4 10)
                 (rtos1 e_Myi 2 4 10) (rtos1 e_Mx0i 2 4 10)
                 (rtos1 e_My0i 2 4 10)))
    (princ (strcat "\n      2:" (rtos1 hi1 2 3 10) (rtos1 e_Mxi1 2 4 10)
                 (rtos1 e_Myi1 2 4 10) (rtos1 e_Mx0i1 2 4 10)
                 (rtos1 e_My0i1 2 4 10)))
    (princ (strcat "\n插   值:" (rtos1 L0 2 3 10) (rtos1 e_Mx 2 4 10)
                 (rtos1 e_My 2 4 10) (rtos1 e_Mx0 2 4 10)
                 (rtos1 e_My0 2 4 10)))
    (princ (strcat "\n弯   矩:" (space 10) (rtos1 Mx 2 4 10)
                 (rtos1 My 2 4 10) (rtos1 Mx0 2 4 10) (rtos1 My0 2 4 10)))
    (princ (strcat "\n配筋(I):"  (space 10) (rtos1 as_Mx 2 2 10)
                 (rtos1 as_My 2 2 10) (rtos1 as_Mx0 2 2 10)
                 (rtos1 as_My0 2 2 10)))
   );progn end

   (progn ;计算单向板
      (setq L (if (> A B) B A))
      (cond
        ((= n 8.1) (setq Mz (* g L L 0.125) Mb 0))
        ((= n 8.2) (setq Mb (* g L L 0.125) Mz (* g L L (/ 9.0 128))))
        ((= n 8.3) (setq Mz (* g L L (/ 1.0 24)) Mb (* g L L (/ 1.0 12))))
      ) ;cond end
      (setq as_Mz (cal_rei Mz fc h0)
            as_Mb (cal_rei Mb fc h0)
      );setq end
      (princ (strcat "\nMz=" (rtos Mz 2 3) "   as_Mz(I)=" (rtos as_Mz 2 3)))
      (princ (strcat "\nMb=" (rtos Mb 2 3) "   as_Mb(I)=" (rtos as_Mb 2 3)))
    ) ;progn end
   ) ;if end
  (resvar) ;还原系统变量
  (princ)
) ;defun end
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 12:36 , Processed in 0.305243 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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