轴力求和程序,待完善
本帖最后由 fcut2004 于 2012-10-10 12:42 编辑参考http://bbs.mjtd.com/thread-93264-1-1.html的讨论,我写了个轴力求和的代码。轴力的数值分别在81 82 图层,下面的代码两个图层一起选择的时候,就没有问题;但是如果只选其中一个图层时,就出错了 “*error* 函数中出错no function definition: &TSTY”。请问是怎么回事呢?
;桩轴力求和
(defun c:dd (/ ss ss1 ss2 n i sum1 sum2)
(defun wmg-ssgetp (ss filter)
(sssetfirst nil ss)
(ssget "p" (list (cons 8 filter)))
) ;wmg-ssgetp 子函数
(setq ss1 nil)
(setq ss2 nil )
(setq ss (ssget '((0 . "TEXT")(8 . "81,82"))));选择对象
(setq ss1(wmg-ssgetpss "82") );调用子函数,创建ss1选择集,如果选择集SS只有81图层,就出错
(setq ss2(wmg-ssgetpss "81") );调用子函数,ss2选择集,如果选择集SS只有82图层,就出错
;下面对ss1操作
(setq n (sslength ss1))
(setq i 0 sum1 0)
(repeat n
(setq string (cdr (assoc 1 (entget (ssname ss1 i)))))
(setq a1 (vl-string-search"," string))
(setq string (substr string 3 (-a1 2)))
(setq sum1 (+ sum1 (atof string)))
(setq i (+ i 1))
)
;下面对ss2操作
(setq i 0 sum2 0 )
(setq n (sslength ss2))
(repeat n
(setq string (cdr (assoc 1 (entget (ssname ss2 i)))))
(setq sum2 (+ sum2 (atof string)))
(setq i (+ i 1))
)
(setq sum1 (+ sum1 sum2))
(setq p1 (getpoint "\n计算结果基点: "))
(command "text" "ml" p1 "150""0" (strcat "\n 轴力和:"(rtos sum1 2 0) "") ""); 轴力结果
)
能不能多写点 代码注释呢 这样方便看 因为做结构在论坛是小部分人 蔡__洛 发表于 2012-10-8 16:35 static/image/common/back.gif
能不能多写点 代码注释呢 这样方便看 因为做结构在论坛是小部分人
上面的注释已经不少了,兄台。这个我有个vlx版本的,刚学lisp,想自己写写。 fcut2004 发表于 2012-10-8 19:13 static/image/common/back.gif
上面的注释已经不少了,兄台。这个我有个vlx版本的,刚学lisp,想自己写写。
vlx版本很多种 也已经出了很久了! 我Q 231682564 我也是初学者 希望多交流! 你这个不需要写,JCCAD 中墙下线设置输出方式为集中荷载 即可得到合力作用位置和大小 chlh_jd 发表于 2012-10-9 23:02 static/image/common/back.gif
你这个不需要写,JCCAD 中墙下线设置输出方式为集中荷载 即可得到合力作用位置和大小
好的,谢谢。这贴主要就是讨论下过滤选择的问题,呵呵。 我看了一下你的图,81图层包括弯矩和轴力,只按图层求和恐怕是不行。弯矩不应该计入轴力里。如果要编完善了,需要判断字符和柱的关系,只对轴力求和。墙的82图层倒是好弄,你的出错我想是因为字符为N=***,M=***,只有数字的字符才能转换为数值。所以需要对字符进行判断、处理。 springwillow 发表于 2012-10-10 09:40 static/image/common/back.gif
我看了一下你的图,81图层包括弯矩和轴力,只按图层求和恐怕是不行。弯矩不应该计入轴力里。如果要编完善了 ...
(setq ss (ssget '((0 . "TEXT")(8 . "81,82"))));选择对象
(setq ss1(wmg-ssgetpss "82") );调用子函数,创建ss1选择集,如果选择集SS只有81图层,就出错
(setq ss2(wmg-ssgetpss "81") );调用子函数,ss2选择集,如果选择集SS只有82图层,就出错
主要是上面三句话的问题 fcut2004 发表于 2012-10-10 12:44 static/image/common/back.gif
(setq ss (ssget '((0 . "TEXT")(8 . "81,82"))));选择对象
(setq ss1(wmg-ssgetpss "82") );调用子函 ...
你这个需要用cond判断一下,看ss选择集中是否有81、82或81和82,三种情况,分情况调用。 结构剪力墙轴力求和,请试用这个
页:
[1]
2