找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: fkyourmather

[求助] 俩个函数合在一起,求帮助

[复制链接]

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-20 16:57:02 | 显示全部楼层
Free-Lancer 发表于 2013-5-20 15:22
过滤表中去掉 -4 部分

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

使用道具 举报

发表于 2013-5-20 18:31:24 来自手机 | 显示全部楼层
先看看 vl-catch-all-apply 的help,这和错误处理机制有关来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-20 20:21:55 来自手机 | 显示全部楼层
Free-Lancer 发表于 2013-5-20 13:01
通俗讲 对abc内每个元素用 lambda 内语句进行一系列处理后,用返回值替换原值

要是把结果这样整合怎么弄text2 (strcat "总长度为: " (rtos totlength 2 4) "单位")
  )
  (if (setq insertpt (getpoint "\n请输入文字插入点: "))
(if (setq height (getdist "\n请输入文字高度:"))
(setq insertp1 (vlax-3d-point insertpt)
insertp2 (vlax-3d-point (polar insertpt (* 1.5 Pi) (* 1.5 height)))
   textobj1 (vla-addtext modelspace text1 insertp1 height)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-6-1 22:57:30 来自手机 | 显示全部楼层
Free-Lancer 发表于 2013-5-20 11:57

有个疑问~请教~如果我要把图层1   2  3的长度分别统计如何处理

点评

你把统计一个图层的写成函数形式,参数用实体列表,返回值为总长度 然后在 Ssget 后,将 1 2 3 图层实体分别形成实体列表后,用上面的函数计算  详情 回复 发表于 2013-6-1 23:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-1 23:33:58 | 显示全部楼层
fkyourmather 发表于 2013-6-1 22:57
有个疑问~请教~如果我要把图层1   2  3的长度分别统计如何处理

你把统计一个图层的写成函数形式,参数用实体列表,返回值为总长度
在 Ssget 后,将 1 2 3 图层实体分别形成实体列表后,用上面的函数计算
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-2 00:47:04 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-6-2 01:16 编辑

分层统计,这种程序根据自己需要随时写了
游客,本帖隐藏的内容需要积分高于 50 才可浏览,您当前积分为 0

点评

如果按颜色的话 ,修改下,如何处理呢!  详情 回复 发表于 2013-7-1 13:48
lancer大师总是出人意料,如果有更好的想法,希望能得到您的帮助  详情 回复 发表于 2013-6-3 08:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-6-3 08:37:57 | 显示全部楼层
Free-Lancer 发表于 2013-6-2 00:47
分层统计,这种程序根据自己需要随时写了**** 本内容被作者隐藏 ****

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

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-7-1 13:48:26 | 显示全部楼层
Free-Lancer 发表于 2013-6-2 00:47
分层统计,这种程序根据自己需要随时写了**** 本内容被作者隐藏 ****

如果按颜色的话 ,修改下,如何处理呢!

点评

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

使用道具 举报

发表于 2013-7-1 16:01:33 | 显示全部楼层
fkyourmather 发表于 2013-7-1 13:48
如果按颜色的话 ,修改下,如何处理呢!

要学会灵活运用
  1. (defun lyrlen (el)
  2.   (apply '+
  3.   (mapcar
  4.     '(lambda (e)
  5.        (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
  6.      )
  7.     el
  8.   )
  9.   )
  10. )
  11. ;;分层统计先长度
  12. (defun c:tt (/ ss l1 col)
  13.   (if (setq ss (ssget '((0 . "*line,arc,circle,ellipse")))) ;_(8 . "1,2,3")))可以根据需要增加图层过滤
  14.     (vl-catch-all-apply
  15.       '(lambda (/ sl i e el lyr n ll tl col lyrc)
  16.   (setq sl (sslength ss)
  17.         i  -1
  18.   )
  19.   (repeat sl
  20.     (setq e   (ssname ss (setq i (1+ i)))
  21.    el  (entget e)
  22.    lyr (cdr (assoc 8 el))
  23.    col (cdr (assoc 62 el))
  24.     )
  25.     (cond
  26.       ((= col 0) ;_byblock
  27.        (setq n "Fy7"
  28.       lyrc 7
  29.        )
  30.       )
  31.       ((= col nil) ;_bylayer
  32.        (setq n
  33.        (strcat
  34.          "Fy"
  35.          (itoa
  36.     (setq lyrc (cdr (assoc 62 (tblsearch "layer" lyr))))
  37.          )
  38.        )
  39.        )
  40.       )
  41.       (t
  42.        (setq n  (strcat "Fy" (itoa col))
  43.       lyrc col
  44.        )
  45.       )
  46.     )
  47.     (set (read n) (cons e (eval (read n))))
  48.     (if (vl-position n l1)
  49.       nil
  50.       (setq l1 (cons n l1)
  51.      ll (cons lyrc ll)
  52.       )
  53.     )
  54.   )
  55.   (setq tl (mapcar '(lambda (x) (lyrlen (eval (read x)))) l1))
  56.   (if
  57.     (setq p (getpoint "\nOutput Insertpoint<Enter to princ>: "))
  58.      (mapcar '(lambda (x y)
  59.          (entmake (list '(0 . "Text")
  60.           '(100 . "AcDbEntity")
  61.           '(100 . "AcDbText")
  62.           (cons 1
  63.          (strcat "Color "
  64.           (itoa y)
  65.           " Totle Length = "
  66.           (rtos x 2 3)
  67.          )
  68.           )
  69.           (cons 40 (getvar "textsize"))
  70.           (cons 10 p)
  71.           (cons 62 y)
  72.     )
  73.          )
  74.          (setq
  75.     p (mapcar '+
  76.        p
  77.        (mapcar '*
  78.         '(0. -1.5 0.)
  79.         (list (getvar "textsize")
  80.        (getvar "textsize")
  81.        0.
  82.         )
  83.        )
  84.       )
  85.          )
  86.        )
  87.       tl
  88.       ll
  89.      )
  90.      (mapcar '(lambda (x y)
  91.          (princ (strcat "\nColor "
  92.           (itoa y)
  93.           " Totle lenght = "
  94.           (vl-princ-to-string x)
  95.          )
  96.          )
  97.        )
  98.       tl
  99.       ll
  100.      )
  101.   )
  102.        )
  103.     )
  104.   )
  105.   (if l1
  106.     (mapcar '(lambda (x) (set (read x) nil)) l1)
  107.   )
  108.   (princ)
  109. )

点评

嗯 ssget(if (setq ss (ssget '((430 . color")))) 然后按颜色输出,你要告诉我啊,这个我真得不是很会啊  详情 回复 发表于 2013-7-1 18:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-7-1 18:58:09 | 显示全部楼层

嗯 ssget(if (setq ss (ssget '((430 . color"))))
然后按颜色输出,你要告诉我啊,这个我真得不是很会啊

点评

颜色的组码是 62 ,高版本增加了真彩色,DXF中是 430,但 INDEX COLOR 是 0 - 256,0 是 Byblock,对Bylayer曲线,不管是 Index 色还是 Truecolor 在DXF 表中是没有 62 和 430 的,也就是 ssget 不能过滤这个颜色的  详情 回复 发表于 2013-7-1 21:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-1 21:50:24 | 显示全部楼层
fkyourmather 发表于 2013-7-1 18:58
嗯 ssget(if (setq ss (ssget '((430 . color"))))
然后按颜色输出,你要告诉我啊,这个我真得不是很会 ...

颜色的组码是 62 ,高版本增加了真彩色,DXF中是 430,但 INDEX COLOR 是 0 - 256,0 是 Byblock,对Bylayer曲线,不管是 Index 色还是 Truecolor 在DXF 表中是没有 62 和 430 的,也就是 ssget 不能过滤这个颜色的,所以这个颜色统计除非曲线是定义了独立颜色,否则就按框选范围统计全部颜色
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-7-1 23:41:33 来自手机 | 显示全部楼层
统计全部颜色?代码

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-2 06:27:17 | 显示全部楼层
fkyourmather 发表于 2013-7-1 23:41
统计全部颜色?代码

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 10:41 , Processed in 0.330711 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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