明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6770|回复: 27

如何根据闭合多段线内文字改多段线颜色

[复制链接]
发表于 2014-6-5 21:35:17 | 显示全部楼层 |阅读模式
如何根据闭合多段线内文字改多段线颜色,假如闭合多段线内TEXT包含:填方,就把此闭合多段线改为红色。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-6-5 22:05:39 | 显示全部楼层
本帖最后由 gzxl 于 2014-6-5 22:08 编辑

这个容易呀,明经和晓东都有像此类的源码
比如这里http://www.xdcad.net/FORUM/forum.php?mod=viewthread&tid=668857&extra=
发表于 2014-6-5 22:05:45 | 显示全部楼层
SelectByPolygon 选择多线段内的对象,逐个判断..........
发表于 2014-6-6 11:29:20 | 显示全部楼层
写得很罗嗦,请包涵
  1. (vl-load-com)
  2. (defun c:test1 (/ ss lst lst1 x y a b)
  3.   (setq ss (ssget '((0 . "lwpolyline"))))
  4.   (defun ss->lst (ss / n lst)
  5.     (repeat (setq N (sslength ss))
  6.       (setq LST (cons (ssname SS (setq N (1- N))) LST))
  7.     )
  8.   )
  9.   (setq        lst  (ss->lst ss)
  10.         lst1 (mapcar '(lambda (x)
  11.                         (mapcar        'cdr
  12.                                 (vl-remove-if-not
  13.                                   '(lambda (y) (= 10 (car y)))
  14.                                   (entget x)
  15.                                 )
  16.                         )
  17.                       )
  18.                      lst
  19.              )
  20.   )
  21.   (mapcar '(lambda (x y)
  22.              (if (wcmatch (apply 'strcat x) "*挖方*")
  23.                (vla-put-color y 1)
  24.              )
  25.            )
  26.           (mapcar '(lambda (a)
  27.                      (mapcar '(lambda (b) (cdr (assoc 1 (entget b))))
  28.                              (ss->lst (ssget "cp" a '((0 . "text"))))
  29.                      )
  30.                    )
  31.                   lst1
  32.           )
  33.           (mapcar 'vlax-ename->vla-object lst)
  34.   )
  35. )

点评

先把带"填方*"的文字得到,再看它在哪个多线段中就对多线段进行修改会更好  发表于 2014-6-10 21:12

评分

参与人数 1明经币 +1 金钱 +6 收起 理由
树櫴希德 + 1 + 6 赞一个!

查看全部评分

 楼主| 发表于 2014-6-6 14:13:18 | 显示全部楼层
自古英雄出明经,多才多艺又热心。赞X_ S _S _1
 楼主| 发表于 2014-6-6 18:15:42 | 显示全部楼层
不过美中不足之处就是批量选择时有未包含指定文字多段线就出现:
 楼主| 发表于 2014-6-6 18:17:46 | 显示全部楼层
错误: 参数类型错误: lselsetp nil或者选择对象:(nil nil nil nil nil nil nil nil nil nil nil nil nil)

 楼主| 发表于 2014-6-6 18:25:41 | 显示全部楼层
知道了,把文字改到最小就行了。谢谢
发表于 2014-6-6 22:22:20 | 显示全部楼层
本帖最后由 flytoday 于 2014-6-6 23:29 编辑

(vl-load-com)
(defun c:plwzys (/ ss lst lst1 x y a b)
   (setq strxx (getstring "输入匹配字符:"))   ;输入
  (setq ss (ssget '((0 . "lwpolyline"))))
  (defun ss->lst (ss / n lst)
    (repeat (setq N (sslength ss))
      (setq LST (cons (ssname SS (setq N (1- N))) LST))
    )
  )
  (setq lst  (ss->lst ss)
lst1 (mapcar '(lambda (x)
   (mapcar 'cdr
    (vl-remove-if-not
      '(lambda (y) (= 10 (car y)))
      (entget x)
    )
   )
        )
       lst
      )
  )

  (mapcar '(lambda (x y)
      (if (wcmatch (apply 'strcat x) (strcat "*" strxx "*"))
        (vla-put-color y 5);改颜色
      )
    )
   (mapcar '(lambda (a)
       (mapcar '(lambda (b) (cdr (assoc 1 (entget b))))
        (ss->lst (ssget "cp" a '((0 . "text"))))
       )
     )
    lst1
   )
   (mapcar 'vlax-ename->vla-object lst)
  )
)
中午群内朋友改的这个采用输入比较通用会好点~~~



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-6-7 08:38:05 | 显示全部楼层
热心人好多啊,希望这贴被更多人看到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 08:48 , Processed in 0.222793 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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