找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2675|回复: 7

[求助] vla-put与vla-get简化思路!

[复制链接]

已领礼包: 81个

财富等级: 招财进宝

发表于 2014-11-10 01:26:22 | 显示全部楼层 |阅读模式

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

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

×
(defun aaa()

)
(setq currArea (vla-get-Area ( vlax-ename->vla-object (car (entsel)))) )
(Vlax-Get (Vlax-Ename->Vla-Object (car (entsel))) 'Area )
(aaa 面积 图元)
(aaa 长度 图元)
(aaa 颜色 图元)
如何将函数窜连起来,生成一句完整的程序

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-11-10 07:35:14 | 显示全部楼层
所谓"一句话" 前提是你要"多写几句话" , 以后使用就是 "一句话" , 前面发过的, 再帖一次
  1. (defun fy:get (obj lst)
  2.   (if (listp lst)
  3.     (mapcar
  4.       '(lambda (x / val)
  5.          (if (not (vl-catch-all-error-p
  6.                     (setq
  7.                       val (vl-catch-all-apply 'vlax-get (list obj x))
  8.                     )
  9.                   )
  10.              )
  11.            val
  12.            nil
  13.          )
  14.        )
  15.       lst
  16.     )
  17.     (vlax-get obj lst)
  18.   )
  19. )
  20. (defun fy:put (obj lst)
  21.   (mapcar '(lambda (x)
  22.              (vl-catch-all-apply 'vlax-put (cons obj x))
  23.            )
  24.           lst
  25.   )
  26.   t
  27. )


get 示例
(setq lst (fy:get (e2o ent) '(color layer linetype startpoint)))

put 就是
(fy:put (e2o ent) '(("layer" "0") ("startpoint" (1.0 1.0 0.0)))

put 还可以参考 fy:mat 函数

这里还有一个 invoke 、get、put 合一,不过不推荐这样用
http://bbs.xdcad.net/thread-671878-1-1.html

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-10 08:03:45 | 显示全部楼层
获取
(xdrx_getpropertyvlaue ent "color" "area" "length")

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-11-10 09:59:23 | 显示全部楼层
Free-Lancer 发表于 2014-11-10 07:35
所谓"一句话" 前提是你要"多写几句话" , 以后使用就是 "一句话" , 前面发过的, 再帖一次

你这个看起来很复杂的样子,是不是这样看起来更简呢
  1. ;;(setq lst (fy:get (vlax-ename->vla-object(car(entsel))) '(color layer linetype startpoint)))
  2. ;;(setq lst (fy:get (vlax-ename->vla-object(car(entsel))) 'startpoint))
  3. (defun fy:get (obj lst)
  4.   (if (listp lst)
  5.     (mapcar '(lambda (x) (vl-catch-all-apply 'vlax-get (list obj x))) lst)
  6.     (vl-catch-all-apply 'vlax-get (list obj lst))
  7.   )
  8. )

点评

如果属性名称没有或者输错了返回的是一个 error , 当然别写错就可以简化  详情 回复 发表于 2014-11-10 10:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-10 10:06:00 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-11-10 09:59
你这个看起来很复杂的样子,是不是这样看起来更简呢

如果属性名称没有或者输错了返回的是一个  error , 当然别写错就可以简化



点评

向你说的属性名称容易输出为什么不可以用中文处理呢! 事先用CONS处理先! )  详情 回复 发表于 2014-11-10 10:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 81个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 81个

财富等级: 招财进宝

 楼主| 发表于 2014-11-10 10:16:11 来自手机 | 显示全部楼层
Free-Lancer 发表于 2014-11-10 10:06
如果属性名称没有或者输错了返回的是一个  error , 当然别写错就可以简化

向你说的属性名称容易输出为什么不可以用中文处理呢!
事先用CONS处理先!

点评

还是记住那些 属性名称 吧,不要搞什么中文!  详情 回复 发表于 2014-11-10 10:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-10 10:38:52 | 显示全部楼层
范建威 发表于 2014-11-10 10:16
向你说的属性名称容易输出为什么不可以用中文处理呢!
事先用CONS处理先!

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 05:49 , Processed in 0.173414 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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