找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: cz78873559

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

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-29 20:26:57 | 显示全部楼层
你把 chprop 在命令上上输入,然后输入那些参数,看看哪个你输多了,不需要的。

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-5-29 22:09:46 | 显示全部楼层
  1. (defun c:ee3 ( / 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")));功能1、多边形内有文字且不压线,多边形和文字颜色变为随层
  21.                 (command "change" e "" "p" "C" "BYLAYER" "")
  22.               )
  23.               ((ssget "f" pts '((0 . "TEXT")));功能2、多边形有文字但是压线,多边形和文字颜色变为蓝色(未实现文字变蓝色)
  24.                 (command "change" e "" "p" "C" "5" "")
  25.               )
  26.               (t                              ;功能3、文字在多边形外面(多边形内无文字,或者文字未被多边形包围),多边形和文字都变为绿色。(未实现文字变绿色)
  27.                 (command "change" e "" "p" "C" "3" "")
  28.               )
  29.             )
  30.           )
  31.         )
  32.         elst
  33.       )
  34.     )
  35.   )
  36.   (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-29 22:58:34 | 显示全部楼层
本帖最后由 Lispboy 于 2013-5-29 23:00 编辑

你的代码只是知道了多边形里面有文字,获得的文字的选择集你没赋给变量供以后用,你要想改文字

  1.             (cond
  2.               ((setq ss2(ssget "wp" pts '((0 . "TEXT"))));功能1、多边形内有文字且不压线,多边形和文字颜色变为随层
  3.                 (command "change" e ss2 "" "p" "C" "BYLAYER" "")
  4.               )
  5.               ((setq ss2 (ssget "f" pts '((0 . "TEXT"))));功能2、多边形有文字但是压线,多边形和文字颜色变为蓝色(未实现文字变蓝色)
  6.                 (command "change" e ss2 "" "p" "C" "5" "")
  7.               )
  8.               (t                              ;功能3、文字在多边形外面(多边形内无文字,或者文字未被多边形包围),多边形和文字都变为绿色。(未实现文字变绿色)
  9.                 (command "change" e "" "p" "C" "3" "")
  10.               )


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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-5-30 02:11:15 | 显示全部楼层
  1. ;判断多边形内是否有文字:如果没有文字多边形则变绿色,如果文字没有多边形则变绿色。注意文字要全部落到多边形内部(文字压了多边形则认为多边形内没有文字)
  2. (defun c:ee3 ( / e elst ent i pts ss ss1 ss2 x)
  3.   (setvar "CMDECHO" 0)
  4.   (prompt "请选择需要比较的多边形和文字,找出无文字的多边形和无多边形的文字!")
  5.   (setq ss (ssget '((0 . "*POLYLINE,*TEXT")))); 获得选择集  
  6.   (command "chprop" ss "" "p" "C" "3" "") ;选择集先变绿色。在这里怎样只改变选择集文字的颜色呢?
  7.     (progn
  8.       (setq i 0)
  9.       (while (setq e (ssname ss i));遍历选择集得到LWPOLYLINE实体
  10.         (setq ed (entget e))
  11.         (if (and
  12.         ;得到多边形的顶点表
  13.               (setq pts1 (mapcar
  14.                            'cdr
  15.                            (vl-remove-if-not '(lambda (x)
  16.                                                 (= (car x) 10)
  17.                                               ) ed
  18.                            )
  19.                          )
  20.               )
  21.               (setq ss1 (ssget "wp" pts1 '((0 . "TEXT")))) ; 把顶点表送给SS
  22.             )
  23.           (progn
  24.       (command "chprop" ss1 "" "p" "C" "1" "") ; 有多边形的文字变红色
  25.             (command "chprop" e "" "p" "C" "1" "") ; 有文字的多边形变红色
  26.           )
  27.    )
  28.         (setq i (1+ i))
  29.       )
  30.     )
  31. ;;;;;;;;;;;;;;;;;;;;;;;;判断没有文字的多边形和压线的多边形
  32. (prompt "请选择需要比较的多边形(绿色),找出压线的多边形和文字!")
  33.   ;(if (setq ss (ssget '((0 . "*POLYLINE")))) ; 选择多边形
  34.   (if (setq ss (ssget '((0 . "*POLYLINE")(62 . 3)))) ; 选择绿色实体
  35.     (progn
  36.       (setq i 0)
  37.       (while (setq ent (ssname ss i))
  38.         (setq elst (cons ent elst))
  39.         (setq i (1+ i))
  40.       )
  41.       (mapcar
  42.         '(lambda (e)
  43.           (if
  44.             (setq pts
  45.               (mapcar 'cdr
  46.                 (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget e))
  47.               )
  48.             )
  49.              (cond
  50.               ((setq ss2(ssget "wp" pts '((0 . "TEXT"))));功能1、多边形内有文字且不压线,多边形和文字颜色变红色
  51.                 (command "change" e ss2 "" "p" "C" "1" "")
  52.               )
  53.               ((setq ss2 (ssget "f" pts '((0 . "TEXT"))));功能2、多边形有文字但是压线,多边形和文字颜色变为蓝色(未实现文字变蓝色)
  54.                 (command "change" e ss2 "" "p" "C" "5" "")
  55.               )
  56.         (t                              ;功能3、多边形内无文字,或者文字未被多边形包围,多边形和文字都变为绿色。(只实现了多边形变色)
  57.                 (command "change" e "" "p" "C" "3" "")
  58.               )
  59.             )
  60.           )
  61.         )
  62.         elst
  63.       )
  64.     )
  65.   )
  66.   (princ)
  67. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:32 , Processed in 0.369555 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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