求一个梁端配筋率判断的LISP程序!
blueshine_1981
2011年01月07日 15:48:44
只看楼主

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

就是对PKPM配筋信息WPJ*.T转成CAD以后,运行这个程序可以判断梁端配筋率是否超2%的程序。:在《手把手教你建筑结构设计》(孙海林著)51页的程序,自己照猫画虎写了个,不知道为什么运行不起。求高人发一个能用的,叩谢!!handshake
liubinxing
2011年02月21日 23:13:48
2楼
同求啊,哪位有??谢谢了。
回复
结构小妖
2011年02月24日 11:25:06
3楼
呀 ,有这种好东西啊,哪位哥,姐,麻烦上传一个啊,谢谢,等待
回复
cndaoyun
2011年02月24日 13:03:03
4楼
没梁截面怎么知道配筋率?
回复
foyichen
2011年03月04日 10:37:41
5楼
小伙子工具箱有这个
可以的
很不错
回复
yslf2415
2011年03月27日 16:30:18
6楼
回复 1# 的帖子

楼主其实没必要执着于这个程序的问题,在PKPM模型计算分析过程中,可以查看到所有梁的配筋率,我们完全可以通过调整模型,把梁的配筋率控制在合理的范围(比如小于2%),由于受建筑条件限制实在调不了的毕竟是少数,是很容易识别的。
回复
shenlang47
2011年03月27日 17:48:50
7楼
从来不考虑配筋率的飘过!
回复
gxfafa
2011年04月25日 14:34:43
8楼
这个东东还真不好找啊。希望有的人能贡献一下。支持楼主
回复
conan0818
2011年05月01日 10:14:40
9楼
我也照着孙海林那本书上搞了一个,可以用啊,具体每一步都要一样才行
回复
xiaoqi3167
2011年06月05日 12:42:23
10楼
同求ing。。。
回复
zdliji
2012年03月29日 13:39:36
11楼
小弟也是同样的问题,哪位高人帮忙回答下啊!
附上书中的代码:
(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))))
)
回复

相关推荐

APP内打开