找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1493|回复: 10

[原创] 根据数据值分区,并用颜色标记

[复制链接]

已领礼包: 191个

财富等级: 日进斗金

发表于 2014-12-17 22:18:00 | 显示全部楼层 |阅读模式

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

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

×
结构专业在筏板,楼板钢筋等场合根据计算面积配筋的时候,根据自定义的数据范围,用颜色分别标示,这样可以直接配钢筋,不用再对着表一个个的看了。其他专业如果有类似需求,可以自己改造。
自定义范围写在xls文件中,默认文件名fenqu.xls,放在d盘根目录
有建议或者意见的请跟帖,谢谢。
  1. (defun c:fenqu ( / ss ssn xls_lst  lst en_str en_num cor_1)
  2. (princ "提示:操作前请先在xls文件中定义好值范围和颜色")
  3.   (setq ss (ssget '((0 . "text"))))
  4.   (setq ssn (xdrx_Pickset->ents ss))

  5.   (xdex_book_open "d:\\fenqu.xls")
  6.   (xdex_book_setactivesheet (- 1 (getint "请输入工作簿的索引号(即第几个工作簿)  ")))
  7.   
  8.   (setq xls_lst (xdex_cell_readrange 1 0))
  9.   (setq  lst (mapcar '(lambda (x)

  10.            (mapcar '(lambda (e) (nth 1 e)) x)

  11.          )
  12.         xls_lst
  13.       )
  14.   )





  15.   (foreach en ssn
  16.     (progn

  17.       (setq en_str (xdrx_text_string en))
  18.       (setq en_num (atof en_str))


  19.           ;   (setq cor (cadr (assoc "Color" (xdrx_entity_getProperty en))))
  20.       (setq cor_1 0)

  21.       (foreach xx lst
  22.   (progn
  23.     (if (and
  24.     (>= en_num (nth 0 xx))
  25.     (< en_num (nth 1 xx))

  26.         )
  27.       (progn
  28.         (setq cor_1 (+ cor_1 (nth 2 xx)))

  29.       )
  30.     )
  31.   )
  32.       )
  33.       (if (> cor_1 0.0)
  34.   (progn
  35.           ; (princ cor_1)
  36.           ;(princ en)
  37.           ;    (princ "----")
  38.     (xdrx_entity_setColor en (fix cor_1))
  39.   )
  40.       )
  41.     )




  42.   )

  43.   (xdex_book_close)
  44.   (princ)
  45. )
fenqu.gif

xls设置

xls设置
            

xls设置2

xls设置2


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:fenqu.xls 
下载次数:1  文件大小:18.5 KB 
下载权限: 不限 以上  [免费赚D豆]



请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:fenqu.LSP 
下载次数:9  文件大小:1.08 KB 
下载权限: 不限 以上  [免费赚D豆]




评分

参与人数 1D豆 +5 贡献 +2 收起 理由
newer + 5 + 2 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-17 22:35:29 | 显示全部楼层
精彩,漂亮,希望看到更多的用API写的应用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-17 22:36:31 | 显示全部楼层
提一个建议,程序里面foreach的,试试用mapcar写。

点评

为什么要这样啊,要用mapcar 我也刚接触这两个函数,不是很会  详情 回复 发表于 2014-12-18 21:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-18 21:25:34 | 显示全部楼层
newer 发表于 2014-12-17 22:36
提一个建议,程序里面foreach的,试试用mapcar写。

为什么要这样啊,要用mapcar
我也刚接触这两个函数,不是很会

点评

比如下面表: (("abc" 3434)("def" 35435)("efag" 344)) 你想获得里面子表的第一个元素组成的表, ("abc" "def" "efag" ) 你怎么做?你用mapcar 就很快捷了 (mapcar 'car (("abc" 3434)("def" 35435)("efag  详情 回复 发表于 2014-12-18 22:11
mapcar效率更高些,处理表它有先天优势,哪不会,可以发帖讨论。  详情 回复 发表于 2014-12-18 21:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-18 21:35:53 | 显示全部楼层
amwkto2011 发表于 2014-12-18 21:25
为什么要这样啊,要用mapcar
我也刚接触这两个函数,不是很会

mapcar效率更高些,处理表它有先天优势,哪不会,可以发帖讨论。

点评

要怎么说叫呢 (mapcar 函数 表) 这个还是理解的 就是中间的函数,不会定义 如(lambda) 定义(defun hu_aa) 这样的我会定义一个处理功能,多个就不行了  详情 回复 发表于 2014-12-19 11:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-18 22:11:18 | 显示全部楼层
amwkto2011 发表于 2014-12-18 21:25
为什么要这样啊,要用mapcar
我也刚接触这两个函数,不是很会

比如下面表:

(("abc" 3434)("def" 35435)("efag" 344))

你想获得里面子表的第一个元素组成的表, ("abc" "def" "efag" ) 你怎么做?你用mapcar 就很快捷了

(mapcar 'car (("abc" 3434)("def" 35435)("efag" 344))) ==("abc" "def" "efag" )


那取得第二个元素组成的表,怎么做?

点评

(mapcar 'car (("abc" 3434)("def" 35435)("efag" 344)))==错误: 函数错误: "def" 出错啦 (mapcar 'car (list '("abc" 3434) '("def" 35435) '("efag" 344)))==("abc" "def" "efag") (mapcar 'cadr (list '("abc"  详情 回复 发表于 2014-12-19 11:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-12-19 11:30:33 | 显示全部楼层
newer 发表于 2014-12-18 22:11
比如下面表:

(("abc" 3434)("def" 35435)("efag" 344))

(mapcar 'car (("abc" 3434)("def" 35435)("efag" 344)))==错误: 函数错误: "def"
出错啦
(mapcar 'car (list '("abc" 3434) '("def" 35435) '("efag" 344)))==("abc" "def" "efag")
(mapcar 'cadr (list '("abc" 3434) '("def" 35435) '("efag" 344)))==(3434 35435 344)
我只会弄这样简单的了

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 11:41:36 | 显示全部楼层
amwkto2011 发表于 2014-12-19 11:30
(mapcar 'car (("abc" 3434)("def" 35435)("efag" 344)))==错误: 函数错误: "def"
出错啦
(mapcar 'car ...

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

使用道具 举报

发表于 2014-12-19 11:41:46 | 显示全部楼层
Lispboy 发表于 2014-12-18 21:35
mapcar效率更高些,处理表它有先天优势,哪不会,可以发帖讨论。

要怎么说叫呢
(mapcar 函数 表) 这个还是理解的
就是中间的函数,不会定义
如(lambda)
定义(defun hu_aa)
这样的我会定义一个处理功能,多个就不行了

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-19 11:43:08 | 显示全部楼层
amwkto2011 发表于 2014-12-19 11:41
要怎么说叫呢
(mapcar 函数 表) 这个还是理解的
就是中间的函数,不会定义

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:12 , Processed in 0.481871 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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