土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 求一个梁端配筋率判断的LISP程序!

求一个梁端配筋率判断的LISP程序!

发布于:2011-01-07 15:48:07 来自:建筑设计/CAD下载及教程 [复制转发]
就是对PKPM配筋信息WPJ*.T转成CAD以后,运行这个程序可以判断梁端配筋率是否超2%的程序。:在《手把手教你建筑结构设计》(孙海林著)51页的程序,自己照猫画虎写了个,不知道为什么运行不起。求高人发一个能用的,叩谢!!handshake

全部回复(11 )

只看楼主 我来说两句
  • hq4044
    hq4044 沙发

    这个东东还真不好找啊。希望有的人能贡献一下。支持楼主
    2016-03-29 16:55:29

    回复 举报
    赞同0
  • zdliji
    zdliji 板凳
    小弟也是同样的问题,哪位高人帮忙回答下啊!
    附上书中的代码:
    (princ"\n本程序将选择图层21000梁配筋文字!")
    (princ"\n本程序快捷键为Ratio\n")


    (defun C:Ratio()
    ;;生成图层2%高,并将图层颜色改为红色
    (command "layer" "n" "2%高" "")
    (command "layer" "c" 1 "2%高" "")
    (princ"选择目标箍筋值:")
    ;;构造针对TXET的选择集ReinGroup,选择图层21000的所有文字
    (setq ReinGroup(ssget '((0 . "TEXT")(8 . "21000")))) ;构造针对TEXT的选择集


    (setq ti% 0) ;;计数,赋初值为0
    ;;选择集ReinGroup的图元个数
    (setq
    LenRein
    (sslength ReinGroup)
    )
    ;;对ReinGroup所有图元进行判断
    (repeat LenRein
    ;;将ReinGroup第i%图元赋值给ent
    (setq
    ent
    (entget(ssname ReinGroup i%))
    )
    ;;将图元ent的图层赋值给text_layer
    (setq
    text_layer
    (cdr(assoc 8 ent))
    )

    (if(/=ent nil)
    (progn
    ;;获取图元ent的主文字值
    (setq
    str
    (cdr(assoclent))
    )
    ;;获取文字str的第一个字母
    (setqj
    sjtype
    (substr str 11))
    (setq numa() numb() mumc())
    )
    )


    ;;只判断主筋,不判断箍筋和抗扭筋
    (if(and(/= ent nil)(/= jsjtype "G")(/= jsjtype "V"))
    (progn
    (setq strmid str)
    ;;将文字值前面的符号GVTH,以及后面的%号去掉
    ;;利用函数Str_to_Num将strmid转换成数字列表strlist
    (setq strlist(Str_to_Num
    (vl-string-right-trim"(%)"(vl-string-left-trim"GVTH("strmid)))
    )
    ;;数字列表strlist里的数分别赋值给numa numb numc
    (cond
    ((=(length strlist)3)
    (setq numa(car strlist))
    (setq numb(cadr strlist))
    (setq numc(caddr strlist))
    )
    )
    )
    )
    ;;判断numa numb numc是否大于2.0,如果大于2.0,修改图层
    (if(or( > numa 2.0)( > numb 2.0)( > numc 2.0))
    (setq Result_layer "2%高")
    (setq Result_layer txet_layer)
    )
    ;;获取ReinGroup第i%个图元的群码数据
    (setq
    ent
    (entget(ssname ReinGroup i%))
    )
    ;;将新图层替换旧图层
    (setq ent
    (subst(cons 8 Result_layer)(assoc 8 ent)ent)
    )
    ;;删除ReinGroup第i%个图元
    (entmake ent)
    (setq i%(1+i%))
    )
    )

    ;;;将字符串转换成数字列表
    ;;;示例:(Str_to_Num"2.00-0.52-1.82")result(2.00 0.52 1.82)
    (defun Str_to_Num (str/1stn s1 cha 分隔符)
    (setq s1 ""
    n 0
    )
    ;;寻找字符串的分隔符"-"
    (cond ((wcmatch str "*-*") (setq 分隔符 "-"))
    (T (setq 分隔符 "-"))
    )
    ;;将分隔符前的字符串重新赋值给s1
    (repeat (strlen str)
    (setq cha (substr str (setq n (1+n)) 1))
    (if (=分隔符 cha)
    ;;函数atof将s1转换成实数并赋值给数字列表lst
    (setq lst (append lst (list (atof s1)))
    s1 ""
    )
    (setq s1 (strcat s1 cha))
    )
    )
    ;;将字符串的最后一个数字赋值给数字列表lst
    (setq lst (append lst (list (atof s1))))
    )
    2012-03-29 13:39:29

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 666 人订阅

猜你喜欢

阅读下一篇

CAD 版本转换

CAD 各个版本之间可以随意转换

回帖成功

经验值 +10