找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: cz78873559

[求助] 多边形与文字的处理

[复制链接]
发表于 2013-5-29 08:42:53 | 显示全部楼层
把这一句(while (setq e (ssname ss i))单独提出来,会不会更好点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 10:07:22 | 显示全部楼层
我想实现的是:判断多边形内是否有文字,如果没有文字多边形则变绿色,如果文字没有多边形则变绿色。
如果文字有压线的情况则把多边形和文字变为白色。这要怎么改呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 10:10:43 | 显示全部楼层
把(while (setq e (ssname ss i)提出来。速度会快点么?因为一张图一般情况都有1000个多边形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-29 11:19:16 | 显示全部楼层
会快点的,论坛里说了while里面不要有太多代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 11:49:06 | 显示全部楼层
谢谢你的提醒。我再思索下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-5-29 13:55:09 | 显示全部楼层
cz78873559 发表于 2013-5-29 10:07
我想实现的是:判断多边形内是否有文字,如果没有文字多边形则变绿色,如果文字没有多边形则变绿色。
如果 ...

文字在多边形内,SSGET 用 WP
文字在多边形上,SSGET用 F 顶点表
上面两种情况以外,文字在多边形外

两个分支以上的,用函数cond,如下:

你用
  1.   (cond
  2.       ((ssget "wp" pts '((0 . "TEXT")))
  3.            内
  4.       )
  5.       ((ssget "f" pts '((0 . "TEXT")))
  6.            上
  7.      )
  8.      (t
  9.            外
  10.      )
  11.    )

        
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 14:28:42 | 显示全部楼层
谢谢楼上的提醒!我去修改
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 15:22:55 | 显示全部楼层
麻烦楼上的能把代码给我改了吗?我套用分支总是出错。我想实现的是:判断多边形内是否有文字,1、如果没有文字多边形则变绿色,2、如果文字没有多边形则变绿色。
3、如果文字有压线的情况则把多边形和文字变为白色。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-29 17:01:19 | 显示全部楼层
cz78873559 发表于 2013-5-29 15:22
麻烦楼上的能把代码给我改了吗?我套用分支总是出错。我想实现的是:判断多边形内是否有文字,1、如果没有 ...

晕,按添加代码 <> 每次窗口都跑到顶上去了,不知怎么弄?

是不是这样?
  1. (defun c:tt ( / e elst ent i pts ss ss1 x)
  2.   (setvar 'cmdecho 0)
  3.   (prompt "请选择需要比较的多边形!")
  4.   (if (setq ss (ssget '((0 . "*POLYLINE")))) ; 选择多边形
  5.     (progn
  6.       (setq i 0)
  7.       (while (setq ent (ssname ss i))
  8.         (setq elst (cons ent elst))
  9.         (setq i (1+ i))
  10.       )
  11.       (mapcar
  12.         '(lambda (e)
  13.           (if
  14.             (setq pts
  15.               (mapcar 'cdr
  16.                 (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget e))
  17.               )
  18.             )
  19.             (cond
  20.               ((ssget "wp" pts '((0 . "TEXT")))
  21.                 (command "change" e "" "p" "C" "180" "")
  22.               )
  23.               ((ssget "f" pts '((0 . "TEXT")))
  24.                 (command "change" e "" "p" "C" "7" "")
  25.               )
  26.               (t
  27.                 (command "change" e "" "p" "C" "200" "")
  28.               )
  29.             )
  30.           )
  31.         )
  32.         elst
  33.       )
  34.     )
  35.   )
  36.   (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-5-29 17:30:42 | 显示全部楼层
QiaoCheng 发表于 2013-5-29 17:01
晕,按添加代码  每次窗口都跑到顶上去了,不知怎么弄?

是不是这样?

看代码写的挺漂亮啊,你测试成了吗?

贴代码你可以直接自己输入: 【code=lisp】【/lisp】 把代码放之间,实际操作时候把粗括号换细括号。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 18:03:22 | 显示全部楼层
QiaoCheng 你的代码,测试OK。这方面的比较对我很有用。我学习了怎样控制循环。谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 18:44:42 | 显示全部楼层
可能是刚才我没说的很清楚。我测试了还有点没有达到的:1、没有被多边形包围的文字也变色。2、压线的文字也变成跟压线情况的多边形一样的颜色。我没改成功,要怎样改呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 18:46:51 | 显示全部楼层
本帖最后由 cz78873559 于 2013-5-29 18:51 编辑
  1.               (setq ss1 (ssget "f" pts1 '((0 . "TEXT")))) ; 把顶点表送给SS,压线时
  2.           (progn
  3.             (command "chprop" ss1 "" "p" "C" "5" "") ; 条件成立的文字变色
  4.             (command "chprop" e "" "p" "C" "5" "") ; 条件成立的多线段变色
  5. )
这样可能要先把定点表传递给一个变量。或者是先得全部选择吗(if (setq ss (ssget '((0 . "*POLYLINE,*text"))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-29 18:55:49 | 显示全部楼层
本帖最后由 Lispboy 于 2013-5-29 18:57 编辑
cz78873559 发表于 2013-5-29 18:46
这样可能要先把定点表传递给一个变量。或者是先得全部选择吗(if (setq ss (ssget '((0 . "*POLYLINE,*text ...

不用啊,你不是点击多边形了吗,点击的那个是多边形实体,要修改它,就用它的实体名。SSGET里面是得到的文字,改文字颜色用这个选择集SS。
变量ent 是多边形,ss1是文字。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 18:58:39 | 显示全部楼层
但是
我像(command "chprop" ss1 "" "p" "C" "5" "") ; 条件成立的文字变色
            (command "chprop" e "" "p" "C" "5" "") ; 条件成立的多线段变色
这样同时改颜色。
怎么改不了呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 14:26 , Processed in 0.403226 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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