明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10468|回复: 33

求一个指定文字加减()的lsp

  [复制链接]
发表于 2012-12-7 17:54:06 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 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 编辑

您这个要求相对简单,但是对于不是本专业的人,对您的要求摸不到头脑,个人认为括号应该在输入钢筋的时候就输入进去,不过按您的要求写了一个,看看是否符合

  1. ;;;仅针对集中标注
  2. ;;;对于集中标注来讲三种情况
  3. ;;;一只有面筋,一有分号前面就是架立筋,一有分号前面不是架立筋但必有+号
  4. (defun c:jlj (/ en ent str obj n m)
  5.   (while (setq en (car (entsel)))
  6.     (setq ent (entget en)
  7.    str (cdr (assoc 1 ent))
  8.    obj (vlax-ename->vla-object en)
  9.     )
  10.     (if (and (= "TEXT" (cdr (assoc 0 ent)))
  11.       (vl-string-search "%%13" str)
  12. )
  13.       (if (vl-string-search "(" str)
  14. (progn
  15. (while (vl-string-search "(" str) (setq str (vl-string-subst "" "(" str)))
  16. (while (vl-string-search ")" str) (setq str (vl-string-subst "" ")" str)))
  17. (vla-put-TextString obj str)
  18.   (princ "\n您选择钢筋文字已示架立筋,默认去除,重新选择恢复")
  19. )
  20. (if (setq n (vl-string-search ";" str))
  21.    (if (setq m (vl-string-search "+" str))
  22.      (vla-put-TextString
  23.        obj
  24.        (strcat (substr str 1 (1+ m))
  25.         "("
  26.         (substr str (+ 2 m) (- n m 1))
  27.         ")"
  28.         (substr str (+ 1 n))
  29.        )
  30.      )
  31.      (vla-put-TextString
  32.        obj
  33.        (strcat "(" (substr str 1 n) ")" (substr str (+ 1 n)))
  34.      )
  35.    )
  36.    (vla-put-TextString obj (strcat "(" str ")"))
  37. )
  38.       )
  39.       (princ "\n您选择的不是钢筋文字请重新选择")
  40.     )
  41.   )
  42.   (princ)
  43. )
回复

使用道具 举报

发表于 2012-12-8 10:48:03 | 显示全部楼层
FIND命令就够啦
回复

使用道具 举报

 楼主| 发表于 2012-12-8 23:02:52 | 显示全部楼层
本帖最后由 chleiwu 于 2012-12-8 23:04 编辑
wowan1314 发表于 2012-12-8 10:48
FIND命令就够啦


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

点评

你可用图层工具锁非选层把不需要改的图层锁定。然后FIND.  发表于 2012-12-9 09:44
回复

使用道具 举报

发表于 2012-12-9 22:38:19 | 显示全部楼层
学习了,,,顶起,,,
回复

使用道具 举报

 楼主| 发表于 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吧,如果这个有两个,那就找分号,找到分号位置,判断分号前面的字符是不是)号,如果是就不加括号了,如果不是,就加上括号,是不是这么理解?
回复

使用道具 举报

发表于 2012-12-11 12:34:14 来自手机 | 显示全部楼层
这要有结构的知识,我还是新手,看不来钢筋的,,,
回复

使用道具 举报

发表于 2012-12-11 15:09:44 | 显示全部楼层
可以联系我QQ:496968041
回复

使用道具 举报

 楼主| 发表于 2012-12-12 22:04:20 | 显示全部楼层
不需要结构知识的吧,反正需要加括号的字符是要人工输入的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 03:37 , Processed in 0.257907 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表