找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3298|回复: 23

[原创]:通用实体排序函数(更新)

  [复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-1-13 18:09:27 | 显示全部楼层 |阅读模式

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

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

×
遗憾,参与者寥寥,这时最后一次更新了(不在提供 fas ,里面包含 vlx 文件)。

  1. ;|
  2. 调用格式: (ea:sort_entity entity_list mode key vx)
  3. 参数说明:
  4.         1 mode 0 按行 1 按列
  5.         2 key
  6.              (mod = 0)    (mod = 1)
  7.           1  Y降X升       X升Y降   (左上至右下)
  8.           2  Y降X降       X降Y降   (右上至左下)
  9.           3  Y升X降       X降Y升   (右下至左上)
  10.           4  Y升X升       X升Y升   (左下至右上)
  11.         3 vx 行(列)允许误差,为 nil 实取 0
  12.         4 entity_list 表, 格式如下
  13.           ((pt1 ent1) (pt2 ent2) ... (ptn entn))
  14.           a pt 为 ent 的特征点, ent 可以为 entity 或 vla-object
  15.             比如对文字排序,pt 可以使用文字的插入点
  16.             
  17.           b 当 pt 为实数时,vx 为行列最大及最小值的差值,此时 mode key 为任意值
  18.             如一组数 (1 3 56 89 56 45 6 8 45 91 45 69 78 15 12 11) vx 取 10
  19.             排序后为 ((1 3 6 8 11) (12 15) (45 45 45) (56 56) (69 78) (89 91))
  20.             总表及子表均为由大到小排列
  21.          
  22. 返 回 值: 表,子表为按要求排列的 行/列

  23. 说    明: 因为是 lisp 函数,本函数内部并不对数据的合法性进行检查,以提高程序的效率
  24.           使用前确保各参数的的正确性
  25. |;
  26. ;;********************************************************
  27. ;;示例一:将文字按要求排序号                              
  28. ;;使用前确保已经加载 sortobj.fas                          
  29. ;;压缩包内含 sortobj.fas 及 test.dwg (2k DWG)            
  30. ;;********************************************************
  31. (defun c:t1 (/ ss ssl e elst el n k1 k2 d pre sub)
  32.   (if (and (setq ss (ssget '((0 . "text"))))
  33.            (progn
  34.              (initget "0 1")
  35.              (setq k1 (getkword "\n[0 -按行/1 -按列]:"))
  36.            )
  37.            (progn
  38.              (initget "1 2 3 4")
  39.              (setq k2
  40.                     (getkword
  41.                       "\n[1-左上至右下/2-右上至左下/3-右下至左上/4-左下至右上]:"
  42.                     )
  43.              )
  44.            )
  45.            (setq d (getdist "\n输入允许误差: "))
  46.       )
  47.     (progn
  48.       (setq ssl (sslength ss))
  49.       (while (> ssl 0)
  50.         (setq e (ssname ss (setq ssl (1- ssl))))
  51.         (setq elst (cons (list (cdr (assoc 10 (entget e))) e) elst))
  52.       )
  53.       (setq pre        "K+" ;_ 前缀
  54.             ;;sub        "A" ;_ 后缀
  55.       )
  56.       (setq el (mapcar '(lambda (x) (mapcar 'cadr x))
  57.                        (ea:sort_entity elst (atoi k1) (atoi k2) d)
  58.                )
  59.       )
  60.       (setq n 1) ;_ 起始值,
  61.       (mapcar
  62.         '(lambda (x)
  63.            (mapcar
  64.              '(lambda (e1)
  65.                 (setq el (entget e1))
  66.                 (entmod        (subst (cons 1
  67.                                      (strcat pre;_ 前缀
  68.                                              (if (< n 10)
  69.                                                (strcat "0" (itoa n))
  70.                                                (itoa n)
  71.                                              );_ 可以进行格式化
  72.                                             ;; sub;_ 后缀
  73.                                      )
  74.                                )
  75.                                (assoc 1 el)
  76.                                el
  77.                         )
  78.                 )
  79.                 (setq n (1+ n)) ;_ 可以定义步距
  80.               )
  81.              x
  82.            )
  83.          )
  84.         el
  85.       )
  86.     )
  87.   )
  88.   (princ)
  89. )
  90. ;;示例二: 对块中某一属性排序号(可以推广到对多个属性分别排序号)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-1-13 19:05:18 | 显示全部楼层
不知道有什么用处?!
如果楼主能把原程序分享给大家就好了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-1-14 00:02:10 | 显示全部楼层
先顶一下,确实是很实用的通用函数。
因为ssget生成的选择集是按实体生成的顺序排列的,这样的顺序其实相当于无序。
本函数的作用就是按一定规则重新排序,为后续进一步操作做准备。返回值是一个表,第一层子表所含的内容是由前面按行/按列要求决定的,第二层子表为特征点和实体名。eachy的程序已经含有如何提取实体名的示例。
当你需要将cad表格整齐的导入execl,或是希望在cad表格里进行一些有规律的计算,这个函数可以帮助你解决窗选的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-1-14 07:01:31 | 显示全部楼层
使用范围简单的比如可以用来写文字类“按行连接”、对实体编号,属性块的排轴号、图号,等等,就看自己的需要了。
函数仅对排序部分进行封装,前后处理要自己来做,这样可以适用更广泛的需要
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-1-14 09:25:47 | 显示全部楼层
  程序的功能应该是按实体在图中的平面位置(即XY坐标)来排序。并非按实体的其它特征(如长度、面积、数值大小等)来排序的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-14 10:26:39 | 显示全部楼层
这个程序简直是超强!困扰已久的允许误差的排序问题终于解决了,很好用!
但还有个问题,我改了一段程序代码,如下:
           (progn
             (initget "0 1")
             (setq k1 (getkword "\n[0 -按行/1 -按列].<0>:"))
                     (if (= k1 nil) (setq k1 "0"))
             )
结果我输入0或者1的时候,程序自动跳出,不能执行下去了,而回车时则正常,这是为什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-1-14 12:26:16 | 显示全部楼层
有写了两个示例,排序函数将修改,关键字支持 实数和点表 两种形式。
回楼上:查看 initget 的参数
(initget 128 "0 1")

  1. (defun ea:Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vlax-get-property
  8.                           (vlax-get-property
  9.                             (vlax-get-acad-object)
  10.                             'activedocument
  11.                           )
  12.                           'selectionsets
  13.                         )
  14.                         "CURRENT"
  15.                       )
  16.                     )
  17.              )
  18.            )
  19.       )
  20.     (vla-delete cset)
  21.   )
  22.   (princ)
  23. )
  24. ;;实体排序示例三,按行连接文字
  25. ;;构造实体表要根据需要决定采用 Object 还是 Entity,这样才能精简代码并提高效率
  26. (vl-load-com)
  27. (defun c:t3 (/ objlst tlst first_obj strlst fstr)
  28.   (ea:clearcset);_ 此处必须,原因见以前讨论帖
  29.   (princ "\n选择按行连接文字...")
  30.   (if (ssget '((0 . "text")))
  31.     (progn
  32.       ;;获取实体表
  33.       (vlax-map-collection
  34.         (vlax-get-property
  35.           (vlax-get-property (vlax-get-acad-object) 'activedocument)
  36.           'activeselectionset
  37.         )
  38.         '(lambda (x)
  39.            (setq objlst
  40.                   (cons (list (vlax-get x 'insertionpoint) x) objlst)
  41.            )
  42.            (if (not hi)
  43.              (setq hi (vlax-get-property x 'height))
  44.            ) ;_ 取字高作为误差,仅取一次
  45.          )
  46.       ) ;_ end vlax-map-colllection
  47.       ;;排序并处理
  48.       (setq tlst      (mapcar '(lambda (x) (mapcar 'cadr x))
  49.                               (ea:sort_entity objlst 0 1 hi);_ 按行排序
  50.                       ) ;_ 排序后实体表
  51.             first_obj (mapcar 'car tlst) ;_每行第一个实体列表
  52.             strlst    (mapcar '(lambda (x) (mapcar 'vla-get-textstring x))
  53.                               tlst
  54.                       ) ;_ 每行字符串列表
  55.             fstr      (mapcar '(lambda (x) (apply 'strcat x)) strlst) ;_合并每行字符串
  56.       )
  57.       (mapcar '(lambda (a b) (vlax-put-property a 'textstring b))
  58.               first_obj
  59.               fstr
  60.       ) ;_ 修改每行第一个文字
  61.       (mapcar '(lambda (x) (mapcar 'vla-delete x))
  62.               (vl-remove nil (mapcar '(lambda (e) (cdr e)) tlst))
  63.       ) ;_ 删除每行第二个以后的实体
  64.     )
  65.   )
  66.   (princ)
  67. )
  68. ;;排序示例四:行对齐(文字)
  69. (defun c:t4 (/ objlst tlst   ptl hi)
  70.   (ea:clearcset);_ 此处必须,原因见以前讨论帖
  71.   (princ "\n选择按行对齐文字...")
  72.   (if (ssget '((0 . "text")))
  73.     (progn
  74.       ;;获取实体表
  75.       (vlax-map-collection
  76.         (vlax-get-property
  77.           (vlax-get-property (vlax-get-acad-object) 'activedocument)
  78.           'activeselectionset
  79.         )
  80.         '(lambda (x / bb uu)
  81.            (vla-getboundingbox x 'bb 'uu);_还可以用来做实体对齐
  82.            (setq objlst
  83.                   (cons (list (safearray-value bb) x) objlst)
  84.            )
  85.                       (if (not hi)
  86.              (setq hi (vlax-get-property x 'height))
  87.            ) ;_ 取字高作为误差,仅取一次
  88.          )
  89.       ) ;_ end vlax-map-colllection
  90.       ;;排序并处理
  91.       (setq tlst   (ea:sort_entity objlst 0 1 hi);_ 按行排序
  92.             objlst (mapcar '(lambda (x) (mapcar 'cadr x))
  93.                            tlst
  94.                    ) ;_ 排序后实体表
  95.             ptl           (mapcar '(lambda (x) (caar x)) tlst) ;_每行第一个点
  96.       )
  97.       (mapcar '(lambda (a b)
  98.                  (mapcar '(lambda (e)
  99.                             (vla-move (cadr e)
  100.                                       (vlax-3d-point (car e))
  101.                                       (vlax-3d-point
  102.                                         (list (caar e) (cadr b) 0.)
  103.                                       )
  104.                             )
  105.                           )
  106.                          a
  107.                  )
  108.                )
  109.               tlst
  110.               ptl
  111.       )
  112.     )
  113.   )
  114.   (princ)
  115. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-1-15 23:38:28 | 显示全部楼层

Re: [原创]:通用实体排序函数(更新)

最初由 eachy 发布
[B]遗憾,参与者寥寥,这时最后一次更新了(不在提供 fas ,里面包含 vlx 文件)。
[code]
;|
调用格式: (ea:sort_entity entity_list mode key vx)
参数说明:
        1 mode 0 按行 1 按列
        2 key
     ... [/B]


实例二下面没下文了??


很早以前解决的问题了
无非是先排序,再按精度分出来
前面其实方法用过,没特别说明而已.

按精度分,其实很多情况是没精度可言了(用多了就会遇到)
所以要通用,还要考虑没法用精度来衡量的
比如(t t nil nil t t t t nil 1 1 1 t ) 等等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-1-15 23:52:47 | 显示全部楼层

Re: Re: [原创]:通用实体排序函数(更新)

最初由 aeo 发布
[B][QUOTE]最初由 eachy 发布
[B]遗憾,参与者寥寥,这时最后一次更新了(不在提供 fas ,里面包含 vlx 文件)。
[code]
;|
调用格式: (ea:sort_entity entity_list mode key vx)
参数说明:
        1 mode... [/B]

我也没有遇到过其他情况的需要,只有按位置排序的需求,示例二不再贴了,原因1楼帖子已经说明,原本打算给积极参与者赠送排序源码的,现在不可能了。其实排序部分也不难,就看其效率了。现在正写一个对话框版的排序,会提供给大家
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-16 09:31:29 | 显示全部楼层
这个对话框版本很不错,但是有一个小小的建议给EACHY斑竹,那就是在行差这里能否做一个按钮,点取后可直接在屏幕上点选二点的距离作为行差,这样的实用性才更强,不是吗?
还有那个序号,是起始值吗?属性编号什么意思?
说实在的,EACHY斑竹的这个程序我认为比ET,文修大师、论坛里的此类程序要强得多,希望EACHY斑竹能早日把这个程序新鲜出炉!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-16 10:09:54 | 显示全部楼层
与ea共勉
本函数未考虑允许误差,但支持多纬数组排序和元素不等数组,可自定义排序次序,支持用函数进行排序判断

  1. ;;////////////////////////////////////////////////////////////////////////////////;;
  2. ;;(xsort lst dolst)=对多维数组排序,按照执行的先后(最先执行的具有结果的最优先权)

  3. ;|详细说明:

  4. xsort=对多维数组排序,按照执行的先后(最后执行的具有结果的最优先)
  5. 参数: lst   = 要排序的数组,
  6.       dolst = 按位排序所依据的函数列表 = '((i0 func0) (i1 func1) (i2 func2) ...) ;
  7.               i* 为要进行排序的维度(元素中第n元素,不需要按照顺序)
  8.               func* 分别对应数组lst元素(维,也是表)中的元素序列.
  9.               func*可以是任何自定义的含2个参数的函数(注意函数中要对参数为nil时候的判断).如:(< nil 3)=T,(< 3 nil)=nil
  10. 注:   i* 可根据需要自由设定次序.              
  11. 实例:
  12. 1.(xsort '((0 1)(2 1)(0 2)(3 0)(3 1)(2 3)(1 0)(2 0)(1 1)(1 2)(1 3)) '((0 <) (1 <)))
  13. -> ((0 1) (0 2) (1 0) (1 1) (1 2) (1 3) (2 0) (2 1) (2 3) (3 0) (3 1))
  14. 2.(xsort '((0 1)(2 1)(0 2)(3 0)(3 1)(2 3)(1 0)(2 0)(1 1)(1 2)(1 3)) '((1 <) (0 <)))
  15. -> ((1 0) (2 0) (3 0) (0 1) (1 1) (2 1) (3 1) (0 2) (1 2) (1 3) (2 3))  
  16. 3.(xsort '((1 0 1 0)(2 0 1 1)(2 2 2 1)(1 1 2 1)(1 1 1 3)) '((1 <) (3 >) (0 <) (2 <)))
  17. -> ((2 0 1 1) (1 0 1 0) (1 1 1 3) (1 1 2 1) (2 2 2 1))  
  18. 4.(xsort '((1 0 1 0)(2 3 1 1)(2 2 2 1)(1 0 2 1)(1 1 1 1)) '((0 <) (2 >) nil (4 >)))
  19. -> ((1 0 2 1) (1 0 1 0) (1 1 1 1) (2 2 2 1) (2 3 1 1))  
  20. 6.支持不等维数组.当对应dolst表中func* 不为nil时,维数大的优先.
  21. (xsort '((1 0 1)(2 3 1 1 3)(2 2 1)(1 0 2 1)(1 1 1 1 1)) '((0 <) (2 >) (1 <) nil (4 >)))
  22. -> ((1 0 2 1) (1 0 1) (1 1 1 1 1) (2 2 1) (2 3 1 1 3))
  23. (xsort '((1 0 1)(2 3 1 1 3)(2 2 1)(1 0 2 1)(1 1 1 1 1)(2 0 2)) '((0 <) (1 >) (2 <) (3 >) (4 >)))
  24. -> ((1 1 1 1 1) (1 0 1) (1 0 2 1) (2 3 1 1 3) (2 2 1) (2 0 2))
  25. 7.func*的灵活运用.可以是任何自定义的含2个参数的函数(注意函数中要对参数为nil时候的判断).如:(< nil 3)=T,(< 3 nil)=nil
  26. ;如下 (xrem x y)
  27. ;测试:(xrem 7 9) -> nil ;; (rem 7 3)= 1,(rem 9 3)= 0 ,(< 1 0)= nil.
  28. 代入xosrt:  (xsort '((12 3)(7 4)(5 1)(4 4)(2 5)(3 4)(4 3)(3 1)(3 5)(4 2)(2 3)) '((0 <) (1 xrem)))
  29.       返回 -> ((2 3) (2 5) (3 4) (3 1) (3 5) (4 3) (4 4) (4 2) (5 1) (7 4) (12 3))
  30.       (xsort '((12 3)(7 4)(5 1)(4 4)(2 5)(3 4)(4)(3 1)(3 5)(4 2)(2 3 3)) '((0 <) (1 xrem)))
  31.       -> ((2 3 3) (2 5) (3 4) (3 1) (3 5) (4) (4 4) (4 2) (5 1) (7 4) (12 3))
  32. |;
  33. (defun xrem (x y)
  34.   (if (or (and (= nil x) y)
  35.           (and x y (< (rem x 3)(rem y 3))))
  36.       T
  37.       nil)
  38. )
[php]
;实战测试:
;ptsort = 在屏幕点选,调用xsort排序点表,并按排序次序标注序号.
(defun c:ptsort (/ pt lst i)  ;ptlst 全局.
  (vl-cmdf ".undo" "be")
  (while (and (princ "\n取点<上一组点表>:") (setq pt (getpoint)))
    (setq lst (cons pt lst))
  )
  (setq ptlst (if lst lst ptlst))
  (setq i 0)
  (if ptlst
    (foreach n (xsort ptlst '((0 <) (1 <)))
      (vl-cmdf ".text" n "500" "0" (itoa (setq i (1+ i))) "")
    )
  )
  (vl-cmdf ".undo" "e")
  (princ)
)
[/php]
附件含 xsort 函数 及 c:ptsort    (加载xsort.fas)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-1-16 12:14:25 | 显示全部楼层

Re: Re: Re: [原创]:通用实体排序函数(更新)

最初由 eachy 发布
[B][QUOTE]最初由 aeo 发布
[B][QUOTE]最初由 eachy 发布
[B]遗憾,参与者寥寥,这时最后一次更新了(不在提供 fas ,里面包含 vlx 文件)。
[code]
;|
调用格式: (ea:sort_entity entity_list mode k... [/B]


排序函数的效率是关键,特别对于排序的选择集数量较多时。
我原先的程序中为了实现这样的排序效果是用两个循环镶套的,循环次数是选择集数量的平方,这应该不是很好的算法,但又想不到更好的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-1-16 12:57:45 | 显示全部楼层
个人意见,lisp 函数也不要太通用,根据功能的需要写写函数是可以提高编程效率,但不一定提高程序的运行效率。以前也曾经写过N多各种的函数,现在看那些很多都不适宜了。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:00 , Processed in 0.231618 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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