chleiwu 发表于 2012-12-7 17:54:06

求一个指定文字加减()的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版及其它高手再出手帮忙




夏生生 发表于 2012-12-7 17:54:07

本帖最后由 夏生生 于 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)
)

wowan1314 发表于 2012-12-8 10:48:03

FIND命令就够啦

chleiwu 发表于 2012-12-8 23:02:52

本帖最后由 chleiwu 于 2012-12-8 23:04 编辑

wowan1314 发表于 2012-12-8 10:48 http://bbs.mjtd.com/static/image/common/back.gif
FIND命令就够啦

find无视图层,属于无差别攻击啊
我只要修改集中标注上的架立筋

xiabin68 发表于 2012-12-9 22:38:19

学习了,,,顶起,,,

chleiwu 发表于 2012-12-9 23:02:51

本帖最后由 chleiwu 于 2012-12-10 09:03 编辑

我画图框架梁KL和次梁L的集中标注一般在同一个图层
所以“用图层工具锁非选层把不需要改的图层锁定。然后FIND”这个手段对我来说还是会误判
因为框架梁都是通长筋,不需要加括号,只有次梁是架立筋
每次手工加()还蛮烦得
所以求这个lsp主要还是点选,需要加()的字符是需要记忆功能的
如果框选的话要根据集中标注的L与KL差别来自动判断是否为次梁L
估计很难

阿然 发表于 2012-12-10 22:07:22

主要是判断是否有2个%%132,一级钢应该是%%131吧,如果这个有两个,那就找分号,找到分号位置,判断分号前面的字符是不是)号,如果是就不加括号了,如果不是,就加上括号,是不是这么理解?

xiabin68 发表于 2012-12-11 12:34:14

这要有结构的知识,我还是新手,看不来钢筋的,,,

wau2000022 发表于 2012-12-11 15:09:44

可以联系我QQ:496968041

chleiwu 发表于 2012-12-12 22:04:20

不需要结构知识的吧,反正需要加括号的字符是要人工输入的
页: [1] 2 3 4
查看完整版本: 求一个指定文字加减()的lsp