找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 837|回复: 3

[求助] 请教大神,看看代码

[复制链接]
发表于 2015-10-2 22:03:55 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 czx663 于 2015-10-2 22:08 编辑

<code
;;;返回满足SelectConditionCodeLst的点对列表
;;;SelectConditionCodeLst是选择组码列表,形式如:'(0 8)
;;;Ent是要选择类型的某个元素,从Ent中提取组码列表中组码点对用于选择集条件
(defun get_SelectConditionCodeConsLst (SelectConditionCodeLst EntLst)
  (cond
    ((atom EntLst)
     (vl-remove nil
  (append (list (cons -4 "<and"))
   (mapcar '(lambda (x) (assoc x (entget EntLst)))
    SelectConditionCodeLst
   )  ;mapcar
   (list (cons -4 "and>"))
  )   ;append
     )     ;remove
    )     ;1#
    (t
     (vl-remove
       nil
       (append (list (cons -4 "<or"))
        (mapcar
   '(lambda (x)
     (get_SelectConditionCodeConsLst
       SelectConditionCodeLst
       x
     )   ;get_SelectConditionCodeConsLst
   )   ;lambda
   EntLst
        )   ;mapcar
        (list (cons -4 "or>"))
       )    ;append
     )     ;remove
    )     ;2#
  )     ;cond
)     ;defun
code>
用(get_SelectConditionCodeConsLst '(0 8) (append (list (car (entsel))) (list (car (entsel)))))测试.得到((-4 . "<or") ((-4 . "<and") (0 . "TEXT") (8 . "acs-TEMp") (-4 . "and>")) ((-4 . "<and") (0 . "TEXT") (8 . "PUB_TEXT") (-4 . "and>")) (-4 . "or>")),我想要的是((-4 . "<or") (-4 . "<and") (0 . "TEXT") (8 . "acs-TEMp") (-4 . "and>") (-4 . "<and") (0 . "TEXT") (8 . "PUB_TEXT") (-4 . "and>") (-4 . "or>")),在每个(-4 . "<and")和(-4 . "and>")多了一层括号,怎么改代码能把括号去掉变成想要的结构
{:soso_e183:}


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

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-10-2 23:38:13 来自手机 | 显示全部楼层

回帖奖励 +10 D豆

本帖最后由 iLisp 于 2015-10-3 08:35 编辑

append .

  1. (defun xx (SelectConditionCodeLst EntLst)
  2.   (cond
  3.     ((atom EntLst)
  4.      (cons '(-4 . "<and")
  5.            (append
  6.              (vl-remove        nil
  7.                         (mapcar        '(lambda (x) (assoc x (entget EntLst)))
  8.                                 SelectConditionCodeLst
  9.                         )
  10.              )
  11.              '((-4 . "and>"))
  12.            )
  13.      )
  14.     )
  15.     (t
  16.      (cons '(-4 . "<or")
  17.            (reverse
  18.              (cons '(-4 . "or>")
  19.                    (reverse (apply 'append
  20.                                    (mapcar
  21.                                      '(lambda (x)
  22.                                         (xx SelectConditionCodeLst x)
  23.                                       )
  24.                                      EntLst
  25.                                    )
  26.                             )
  27.                    )
  28.              )
  29.            )
  30.      )
  31.     )
  32.   )
  33. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

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

使用道具 举报

 楼主| 发表于 2015-10-7 21:14:29 | 显示全部楼层
本帖最后由 czx663 于 2015-10-7 21:16 编辑

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 12:24 , Processed in 0.377231 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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