找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2603|回复: 16

[求助] 如何在cad中的文字中选出最大值

[复制链接]

已领礼包: 4个

财富等级: 恭喜发财

发表于 2014-8-20 09:05:18 | 显示全部楼层 |阅读模式

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

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

×
诸位大神,如何在cad的文字中选出一个最大值呢?

                               
登录/注册后可看大图


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

已领礼包: 13个

财富等级: 恭喜发财

发表于 2014-8-20 09:50:33 | 显示全部楼层
你指的文字都是 纯数字的吗?

点评

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

 楼主| 发表于 2014-8-20 10:17:19 | 显示全部楼层
LoveArx 发表于 2014-8-20 09:50
你指的文字都是 纯数字的吗?

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

使用道具 举报

发表于 2014-8-20 11:34:06 | 显示全部楼层
  1. (defun c:maxnum ( / selection selength entname num nummax)
  2.     (setq selection (ssget '((0 . "text"))))
  3.     (setq selength (sslength selection))
  4.     (setq nummax 0)
  5.     (while (>= selength 1)
  6.         (setq selength (- selength 1))
  7.         (setq entname (ssname selection selength ))
  8.         (setq num (atoi (cdr (assoc 1 (entget entname)))))
  9.         (if (> num nummax)
  10.             (setq nummax num)
  11.         )
  12.     )
  13.     (princ nummax)
  14.     (princ)
  15. )
这样行么……

点评

大神,太感谢你了!真没想到我的问题这么快时间就得到了解决,多谢大神!  详情 回复 发表于 2014-8-20 13:39
(setq num (atoi (cdr (assoc 1 (entget entname)))))改为(setq num (distof (cdr (assoc 1 (entget entname)))))是不是好些呢,因为不一定是整数。  详情 回复 发表于 2014-8-20 11:45

评分

参与人数 1D豆 +5 收起 理由
newer + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-8-20 11:45:32 | 显示全部楼层

(setq num (atoi (cdr (assoc 1 (entget entname)))))改为(setq num (distof (cdr (assoc 1 (entget entname)))))是不是好些呢,因为不一定是整数。

点评

额,楼主贴的图片都是整数我也就转整数了。 事实上好像不转换数据类型直接比较文字大小也可以。  详情 回复 发表于 2014-8-20 12:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-20 12:15:37 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-8-20 11:45
(setq num (atoi (cdr (assoc 1 (entget entname)))))改为(setq num (distof (cdr (assoc 1 (entget entn ...

额,楼主贴的图片都是整数我也就转整数了。
事实上好像不转换数据类型直接比较文字大小也可以。

点评

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

使用道具 举报

已领礼包: 1337个

财富等级: 财源广进

发表于 2014-8-20 13:09:49 | 显示全部楼层
:)顺便加一个,最小值,和近似中值,是不是更完美呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

 楼主| 发表于 2014-8-20 13:39:13 | 显示全部楼层

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

使用道具 举报

发表于 2014-8-20 19:49:57 | 显示全部楼层
本帖最后由 czx663 于 2014-8-20 19:53 编辑

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

使用道具 举报

发表于 2014-8-20 19:53:02 | 显示全部楼层
  1. (defun findMaxNumber (/              Layer   ss      n              Len     Ent
  2.                       MaxNumber              MaxEnt  EntTemp MinPt   MaxPt
  3.                       Obj
  4.                      )
  5.   (setq Layer (assoc 8 (entget (car (entsel)))))
  6.   (setq ss (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*") Layer)))
  7.   (setq        n   0
  8.         Len (sslength ss)
  9.   )
  10.   (setq        Ent          (ssname ss n)
  11.         MaxNumber (atof (cdr (assoc 1 (entget Ent))))
  12.         MaxEnt          Ent
  13.   )
  14.   (repeat Len
  15.     (setq Ent (ssname ss n))
  16.     (setq EntTemp (atof (cdr (assoc 1 (entget Ent)))))
  17.     (if        (> EntTemp MaxNumber)
  18.       (progn
  19.         (setq MaxNumber EntTemp)
  20.         (setq MaxEnt Ent)
  21.       )

  22.     )
  23.     (setq n (1+ n))
  24.   )
  25.   (setq Obj (vlax-ename->vla-object MaxEnt))
  26.   (vla-GetBoundingBox Obj 'MinPt 'MaxPt)
  27.   (command "zoom"
  28.            (vlax-safearray->list MinPt)
  29.            (vlax-safearray->list MaxPt)
  30.   )
  31.   (princ MaxNumber)
  32.   (princ)
  33. )

点评

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

使用道具 举报

发表于 2014-8-21 20:50:43 | 显示全部楼层
本帖最后由 77077 于 2014-8-21 21:12 编辑

来一个简单的.其实还可以接着拓展....

  1. (defun c:xx( / sslst numlst num)
  2.    (defun ss->EnLst (ss / retu)
  3.        (setq retu (apply 'append (ssnamex ss)))
  4.        (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
  5.    )
  6.   (setq K (getint "\n 求和<1>,求积<2>,最大值<3>,最小值<4>"))
  7.   (setq sslst (ss->EnLst (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*")))))
  8.   (setq numlst (mapcar '(lambda(x) (atof (cdr (assoc 1 (entget x))))) sslst))
  9.   (cond
  10.       ((= K 1)(setq num (apply '+ numlst)))
  11.       ((= K 2)(setq num (apply '* numlst)))
  12.       ((= K 3)(setq num (apply 'max numlst)))
  13.       ((= K 4)(setq num (apply 'min numlst)))
  14.       (T (setq num (apply '+ numlst)))
  15.   )
  16.   (princ num)
  17.   (princ)
  18. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-21 21:27:20 | 显示全部楼层

既然找最大值,非数字的 distof 是 0
  1. (defun c:tt (/ e ss obj bp up)
  2.   (fy:begin)
  3.   (if (and (setq e (car (entsel "\nPick Text: ")))
  4.            (setq ss (ssget "X" (list '(0 . "text") (assoc 8 (entget e)))))
  5.       )
  6.     (progn
  7.       (setq obj        (car (vl-sort (fy:cset->objs)
  8.                               '(lambda (x1 x2)
  9.                                  (> (distof (vlax-get x1 'Textstring))
  10.                                     (distof (vlax-get x2 'Textstring))
  11.                                  )
  12.                                )
  13.                      )
  14.                 )
  15.       )
  16.       (vla-getboundingbox obj 'bp 'up)
  17.       (fy:zoomw (safearray-value bp) (safearray-value up))
  18.     )
  19.   )
  20.   (princ)
  21. )

点评

(setq ss (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*") Layer))) 这个是只选择数字的,所以我的选择集了没有不适数字的图元  详情 回复 发表于 2014-8-24 07:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-24 07:03:12 | 显示全部楼层
Free-Lancer 发表于 2014-8-21 21:27
既然找最大值,非数字的 distof 是 0

(setq ss (ssget (list (cons 0 "TEXT") (cons 1 "~*[~`--9]*") Layer)))
这个是只选择数字的,所以我的选择集了没有不适数字的图元{:soso_e100:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 04:53 , Processed in 0.447506 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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