找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3713|回复: 13

[原创] 统计列表

[复制链接]

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-12-4 11:09:36 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:tt1()
  2.   (xd::Begin)
  3.   (setq ss    (ssget '((0 . "LWPOLYLINE")))
  4.     ss1   (mapcar '(lambda (X) (append (xdrx_Pickset->ents (ssget  "_CP" (xdrx_entity_getstretchpoint  X) '((0 . "Text")))) (list X) )) (xdrx_Pickset->ents ss))
  5.     ss2   (mapcar '(lambda (X) (list (xdrx_GetPropertyValue  (cadr x) "Textstring")
  6.           (xdrx_GetPropertyValue  (car x) "Textstring")
  7.           (xdrx_GetPropertyValue  (caddr x) "area"))
  8.       )
  9.       ss1)
  10.   )
  11.   (if (setq pt (getpoint "\n表格插入点: "))
  12.     (progn
  13.       (setq lst       (cons '("人名" "数量" "面积") ss2)
  14.         tb       (xdrx_table_make
  15.           pt
  16.           (+ 2 (length lst))
  17.           8
  18.           4
  19.           6
  20.         )
  21.         ; _制造表格
  22.         colwidth (mapcar '(lambda (x) x)
  23.           '(30 30 40)
  24.         )
  25.         ; _列宽
  26.       )
  27.       (XD::Table:begin tb)
  28.       (mapcar
  29.         '(lambda (x)
  30.           (xdrx_table_settextheight tb x 4)
  31.         )
  32.         '(1 2 4)
  33.       )          ; _设置所有 Cell 文字高度
  34.       (xdrx_table_setalignment tb 1 5)  ; _数据区文字对齐方式
  35.       (xdrx_table_setgridvisibility tb 2 59 nil) ; _隐藏 Title 边
  36.       (mapcar
  37.         '(lambda (x y)
  38.           (xdrx_table_setcolumnwidth tb x y)
  39.         )
  40.         '(0 1 2)
  41.         colwidth
  42.       )
  43.       (setq i 0)
  44.       (mapcar
  45.         '(lambda (x / j)
  46.           (setq j -1
  47.             i (1+ i)
  48.           )
  49.           (mapcar '(lambda (a)
  50.               (xdrx_table_settextstring
  51.                 tb
  52.                 i
  53.                 (setq j (1+ j))
  54.                 (if (eq (type a) 'STR)
  55.                   a
  56.                   (vl-princ-to-string a)
  57.                 )
  58.               )
  59.             )
  60.             x
  61.           )
  62.         )
  63.         lst
  64.       )          ; 构造Cell文字
  65.       (xdrx_table_settextstring tb 0 0 "统计表")
  66.       (XD::Table:end tb)
  67.     )
  68.   )
  69.   (XD::End)
  70.   (princ)
  71. )
怎么按文字插入点排序,达到下表的格式
统计列表.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-12-4 11:42:26 | 显示全部楼层
是API实现的,输出的表格内容人名是随机的,想按最上面的戴必银到最下面的戴必武的顺序输出

点评

函数库有个现成的函数 (setq lst (xd::list:createByProperty ss "position" '  详情 回复 发表于 2014-12-4 11:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-4 11:52:39 | 显示全部楼层
zhangq_cai1 发表于 2014-12-4 11:42
是API实现的,输出的表格内容人名是随机的,想按最上面的戴必银到最下面的戴必武的顺序输出

函数库有个现成的函数

(setq lst (xd::list:createByProperty ss "position" '<))
(setq lst (xd::list:sort lst))

ss是文字的选择集。


点评

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-12-4 14:07:26 | 显示全部楼层
  1. (defun c:tt1()
  2.   (xd::Begin)
  3.   (setq ss    (ssget '((0 . "LWPOLYLINE")))
  4.     ss1   (mapcar '(lambda (X) (append (xdrx_Pickset->ents (ssget  "_CP" (xdrx_entity_getstretchpoint  X) '((0 . "Text")))) (list X) )) (xdrx_Pickset->ents ss))
  5.                 ss1   (vl-sort ss1 (function(lambda (s1 s2) (> (cadr(xdrx_GetPropertyValue (car s1) "position")) (cadr(xdrx_GetPropertyValue (car s2) "position"))))))
  6.           ss2   (mapcar '(lambda (X) (list (xdrx_GetPropertyValue  (cadr x) "Textstring")
  7.           (xdrx_GetPropertyValue  (car x) "Textstring")
  8.           (xdrx_GetPropertyValue  (caddr x) "area"))
  9.       )
  10.       ss1)
  11.   )
  12.   (if (setq pt (getpoint "\n表格插入点: "))
  13.     (progn
  14.       (setq lst       (cons '("人名" "数量" "面积") ss2)
  15.         tb       (xdrx_table_make
  16.           pt
  17.           (+ 2 (length lst))
  18.           8
  19.           4
  20.           6
  21.         )
  22.         ; _制造表格
  23.         colwidth (mapcar '(lambda (x) x)
  24.           '(30 30 40)
  25.         )
  26.         ; _列宽
  27.       )
  28.       (XD::Table:begin tb)
  29.       (mapcar
  30.         '(lambda (x)
  31.           (xdrx_table_settextheight tb x 4)
  32.         )
  33.         '(1 2 4)
  34.       )          ; _设置所有 Cell 文字高度
  35.       (xdrx_table_setalignment tb 1 5)  ; _数据区文字对齐方式
  36.       (xdrx_table_setgridvisibility tb 2 59 nil) ; _隐藏 Title 边
  37.       (mapcar
  38.         '(lambda (x y)
  39.           (xdrx_table_setcolumnwidth tb x y)
  40.         )
  41.         '(0 1 2)
  42.         colwidth
  43.       )
  44.       (setq i 0)
  45.       (mapcar
  46.         '(lambda (x / j)
  47.           (setq j -1
  48.             i (1+ i)
  49.           )
  50.           (mapcar '(lambda (a)
  51.               (xdrx_table_settextstring
  52.                 tb
  53.                 i
  54.                 (setq j (1+ j))
  55.                 (if (eq (type a) 'STR)
  56.                   a
  57.                   (vl-princ-to-string a)
  58.                 )
  59.               )
  60.             )
  61.             x
  62.           )
  63.         )
  64.         lst
  65.       )          ; 构造Cell文字
  66.       (xdrx_table_settextstring tb 0 0 "统计表")
  67.       (XD::Table:end tb)
  68.     )
  69.   )
  70.   (XD::End)
  71.   (princ)
  72. )
改好了,谢谢大家
QQ截图20141204140335.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-12-4 14:09:03 | 显示全部楼层
newer 发表于 2014-12-4 11:52
函数库有个现成的函数

(setq lst (xd::list:createByProperty ss "position" '

(setq lst (xd::list:createByProperty ss "position" '<))
(setq lst (xd::list:sort lst))

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-4 14:31:32 | 显示全部楼层
本帖最后由 st788796 于 2014-12-4 14:36 编辑

简化一下大概是这样
  1. ;;API技术交流QQ群 391881924
  2. (defun c:tt1 (/ ss ss1 ss2 pt)
  3.   (xd::Begin)
  4.   (if
  5.     (and (setq ss (ssget '((0 . "LWPOLYLINE"))))
  6.          (setq ss1
  7.                 (mapcar        '(lambda (X)
  8.                            (append (xdrx_Pickset->ents
  9.                                      (ssget "_CP"
  10.                                             (xdrx_entity_getstretchpoint X)
  11.                                             '((0 . "Text"))
  12.                                      )
  13.                                    )
  14.                                    (list X)
  15.                            )
  16.                          )
  17.                         (xdrx_Pickset->ents ss)
  18.                 )
  19.          )
  20.          (setq
  21.            ss2 (mapcar
  22.                  '(lambda (X)
  23.                     (list (xdrx_getpropertyvalue (cadr x) "Position")
  24.                           (xdrx_GetPropertyValue (cadr x) "Textstring")
  25.                           (xdrx_GetPropertyValue (car x) "Textstring")
  26.                           (xdrx_GetPropertyValue (caddr x) "area")
  27.                     )
  28.                   )
  29.                  ss1
  30.                )
  31.          )
  32.          (setq pt (getpoint "\n表格插入点: "))
  33.     )
  34.      (progn
  35.        (xd::table:make
  36.          pt
  37.          (cons "统计表" (cons '("人名" "数量" "面积")
  38.                (apply 'append
  39.                       (xd::list:tablesort ss2 0 3 1e-3)
  40.                )
  41.          ))
  42.        )
  43.      )
  44.   )
  45.   (XD::End)
  46.   (princ)
  47. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

 楼主| 发表于 2014-12-4 16:13:35 | 显示全部楼层
  1. (xd::table:make
  2.            (cons "统计表" (append(cons '("人名" "数量" "面积" "补列")
  3.            (mapcar'(lambda (X) (cdr x))  (apply 'append
  4.                       (xd::list:tablesort ss2 0 3 1e-3))
  5.                   ))
  6.                (list '("补行"))))
  7.           pt
  8.        8. 3.)
复制代码
制表改一下才能用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-4 16:21:35 | 显示全部楼层
zhangq_cai1 发表于 2014-12-4 16:13
制表改一下才能用

API 已解决,不需要补列和行,下次更新

点评

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

使用道具 举报

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

使用道具 举报

失业农民XCB 该用户已被删除
发表于 2015-11-3 10:28:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2016-5-11 18:22:28 | 显示全部楼层
st788796 发表于 2014-12-4 16:21
API 已解决,不需要补列和行,下次更新

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 14:24 , Processed in 0.210768 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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