正在加载...
0人已收藏
0人已打赏
0人已点赞
分享
全部回复(11 )
主题
回复
粉丝
CAD下载及教程
52.08 万条内容 · 666 人订阅
阅读下一篇
CAD 各个版本之间可以随意转换
遇到了一点小问题
内容不能包含下列词语
回帖成功
经验值 +10
全部回复(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))))
)
回复 举报