求一个指定文字加减()的lsp
本帖最后由 chleiwu 于 2012-12-16 22:32 编辑在画结构施工图的时候经常要给架立筋加(),
但是网上收集到得程序都是给整个字符加(),
比如2%%13214;4%%13218变成了(2%%13214;4%%13218)----即A;B---->(A;B)
但实际工程需要的是(2%%13214);4%%13218------即A;B---->(A);B
或者2%%13225+2%%13214;4%%13218变成2%%13225+(2%%13214);4%%13218
即A+B;C---->A+(B);C
求一个能满足此功能的lsp,
可能由于行业不同,上述表述不太清楚
所以再详细补充下要求:
首先输入需要加括号的字符串(支持钢筋符号%%130~%%131),输入后即为默认值(执行前可修改)
然后点选(框选)含此字符串的文字,自动给该字符串左右加上括号(点完即可看到加上括号了)
要求选择是可以连续操作的,退出前可以一直选择目标
为防止给不需要加()的配筋误选加了括号,
同时提供删括号功能,即同一字符串如果已有括号则删除此括号
要求可能有点高,故提高悬赏,
求Z版及其它高手再出手帮忙
本帖最后由 夏生生 于 2013-1-12 10:50 编辑
您这个要求相对简单,但是对于不是本专业的人,对您的要求摸不到头脑,个人认为括号应该在输入钢筋的时候就输入进去,不过按您的要求写了一个,看看是否符合
;;;仅针对集中标注
;;;对于集中标注来讲三种情况
;;;一只有面筋,一有分号前面就是架立筋,一有分号前面不是架立筋但必有+号
(defun c:jlj (/ en ent str obj n m)
(while (setq en (car (entsel)))
(setq ent (entget en)
str (cdr (assoc 1 ent))
obj (vlax-ename->vla-object en)
)
(if (and (= "TEXT" (cdr (assoc 0 ent)))
(vl-string-search "%%13" str)
)
(if (vl-string-search "(" str)
(progn
(while (vl-string-search "(" str) (setq str (vl-string-subst "" "(" str)))
(while (vl-string-search ")" str) (setq str (vl-string-subst "" ")" str)))
(vla-put-TextString obj str)
(princ "\n您选择钢筋文字已示架立筋,默认去除,重新选择恢复")
)
(if (setq n (vl-string-search ";" str))
(if (setq m (vl-string-search "+" str))
(vla-put-TextString
obj
(strcat (substr str 1 (1+ m))
"("
(substr str (+ 2 m) (- n m 1))
")"
(substr str (+ 1 n))
)
)
(vla-put-TextString
obj
(strcat "(" (substr str 1 n) ")" (substr str (+ 1 n)))
)
)
(vla-put-TextString obj (strcat "(" str ")"))
)
)
(princ "\n您选择的不是钢筋文字请重新选择")
)
)
(princ)
) FIND命令就够啦 本帖最后由 chleiwu 于 2012-12-8 23:04 编辑
wowan1314 发表于 2012-12-8 10:48 http://bbs.mjtd.com/static/image/common/back.gif
FIND命令就够啦
find无视图层,属于无差别攻击啊
我只要修改集中标注上的架立筋
学习了,,,顶起,,, 本帖最后由 chleiwu 于 2012-12-10 09:03 编辑
我画图框架梁KL和次梁L的集中标注一般在同一个图层
所以“用图层工具锁非选层把不需要改的图层锁定。然后FIND”这个手段对我来说还是会误判
因为框架梁都是通长筋,不需要加括号,只有次梁是架立筋
每次手工加()还蛮烦得
所以求这个lsp主要还是点选,需要加()的字符是需要记忆功能的
如果框选的话要根据集中标注的L与KL差别来自动判断是否为次梁L
估计很难
主要是判断是否有2个%%132,一级钢应该是%%131吧,如果这个有两个,那就找分号,找到分号位置,判断分号前面的字符是不是)号,如果是就不加括号了,如果不是,就加上括号,是不是这么理解? 这要有结构的知识,我还是新手,看不来钢筋的,,, 可以联系我QQ:496968041 不需要结构知识的吧,反正需要加括号的字符是要人工输入的