找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 821|回复: 3

[求助] [求助]:程序zz有什么用?

[复制链接]
发表于 2008-9-11 17:08:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(defun c:zz (/ ss len n ss1 pt0 ss2 ss3 len1)
  (setq ss (ssget '((0 . "text"))))
  (if ss
    (progn
      (setq len (sslength ss))
      (setq n -1)
      (repeat len
        (setq n (1+ n))
        (setq ss1 (ssname ss n))
        (setq pt0 (cdr (assoc 10 (entget ss1))))
        (setq i 0)
        (repeat        (- len n 1)
          (setq i (1+ i))
          (setq ss2 (ssname ss (+ n i)))
          (setq pt1 (cdr (assoc 10 (entget ss2))))
          (if (#tong_point pt1 pt0)
            (setq ss3 ss2)
          )
        )

        (if ss3
          (progn
            (setq t1 (atoi (cdr (assoc 1 (entget ss1)))))
            (setq t2 (atoi (cdr (assoc 1 (entget ss3)))))
            (cond ((> t1 t2) (command "change" ss1 "" "p" "c" "1" ""))
                  ((< t1 t2) (command "change" ss3 "" "p" "c" "1" ""))
            )
          )
        )
        (setq ss3 nil)
      )
    )
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

发表于 2008-9-11 17:45:06 | 显示全部楼层
;大致功能就是,判断选中的单行文本中,如果有两文本相重且两数字文本的内容不相等,就把两文本都变为红色.

;这个程序是为练习写的吧.
(defun c:zz (/ ss len n ss1 pt0 ss2 ss3 len1)
  (setq ss (ssget '((0 . "text"))))        ;构造一个选择集,只添加选中的单行文本
  (if ss;如果选择集不为空就执行
    (progn
      (setq len (sslength ss));将选择集的长度赋给len
      (setq n -1)
      (repeat len
        (setq n (1+ n))
        (setq ss1 (ssname ss n));得到选择集中挨个图元的图元名
        (setq pt0 (cdr (assoc 10 (entget ss1))));将文本的定位点赋给pt0
        (setq i 0)
        (repeat        (- len n 1)
          (setq i (1+ i))
          (setq ss2 (ssname ss (+ n i)))
          (setq pt1 (cdr (assoc 10 (entget ss2))))
          (if (#tong_point pt1 pt0);可能是判断同点,也就是说两文本的定位点是否相等
            (setq ss3 ss2)
          )
        )

        (if ss3
          (progn
            (setq t1 (atoi (cdr (assoc 1 (entget ss1)))));将文本内容转换为数字
            (setq t2 (atoi (cdr (assoc 1 (entget ss3)))));将文本内容转换为数字
            (cond ((> t1 t2) (command "change" ss1 "" "p" "c" "1" ""));如果两文本不相等将两文本都变为红色,
                  ((< t1 t2) (command "change" ss3 "" "p" "c" "1" ""));如果两文本不相等将两文本都变为红色,
            )
          )
        )
        (setq ss3 nil)
      )
    )
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2008-9-19 22:05:50 | 显示全部楼层
;功能是,判断选中的单行文本中,如果有两文本相重且两数字文本的内容不相等,就把其中一个文本都变为红色.

;这个程序是为练习写的吧,我觉得有能改进的地方,如果是工作用我能帮忙改进.
(defun c:zz (/ ss len n ss1 pt0 ss2 ss3 len1)
  (setq ss (ssget '((0 . "text"))))        ;构造一个选择集,只添加选中的单行文本
  (if ss                                ;如果选择集不为空就执行
    (progn
      (setq len (sslength ss))                ;将选择集的长度赋给len
      (setq n -1)
      (repeat len
        (setq n (1+ n))
        (setq ss1 (ssname ss n))        ;得到选择集中挨个图元的图元名
        (setq pt0 (cdr (assoc 10 (entget ss1)))) ;将文本的定位点赋给pt0
        (setq i 0)
        (repeat        (- len n 1)
          (setq i (1+ i))                ;i=1
          (setq ss2 (ssname ss (+ n i)))
          (setq pt1 (cdr (assoc 10 (entget ss2))))

          (setq pt0x (car pt0))
          (setq pt0y (cadr pt0))
          (setq pt1x (car pt1))
          (setq pt1y (cadr pt1))
          (if (and (= pt0x pt1x) (= pt0y pt1y))
                                        ;判断同点,也就是说两文本的定位点是否相等

            (setq ss3 ss2)
          )
        )

        (if ss3
          (progn
            (setq t1 (atoi (cdr (assoc 1 (entget ss1)))))
                                        ;将文本内容转换为数字
            (setq t2 (atoi (cdr (assoc 1 (entget ss3)))))
                                        ;将文本内容转换为数字
            (cond ((> t1 t2) (command "change" ss1 "" "p" "c" "1" ""))
                                        ;如果两文本不相等将一文本都变为红色,
                  ((< t1 t2) (command "change" ss3 "" "p" "c" "1" ""))
                                        ;如果两文本不相等将一文本都变为红色,
            )
          )
        )
        (setq ss3 nil)
      )
    )
  )
)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 23:47 , Processed in 0.405218 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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