明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3339|回复: 1

Vlisp超级取属性函数

[复制链接]
发表于 2006-5-22 18:33:00 | 显示全部楼层 |阅读模式

;;;cqs   蔡全胜  2006/5/20


;;;看 大 家 都 贴,   我 也 贴 一 个  ,希望 版 主 加 分

;;;CAD二次开发交流群 3014229  欢迎高手加入


;;;超级取属性值函数
;;;(test 表 lisp对象)
;;;例 (setq obj(vlax-ename->VLA-object(car(entsel))))
;;;(test (list '(C Center) '(R Radius) '(L Layer) '(CL Color)) obj)
;;;当对象不支持属性时会在命令行报告
;;;返回值:关联表 ((c . 值)(R . 值)(L . 值))
(defun test (ptylst VLAobj / ptyval pty tempconslst ruturnconslst)
  (foreach ptyval ptylst
    (setq pty (read (vl-symbol-name (cadr ptyval))))
    (if (vlax-property-available-p VLAobj pty)
      (progn
 (set (car ptyval) (vlax-get-property VLAobj pty))
 (setq tempconslst
        (cons (car ptyval) (vl-symbol-value (car ptyval)))
 )
 (setq ruturnconslst(cons tempconslst ruturnconslst))
      )
      (princ (strcat "\n不支持属性:" (vl-symbol-name pty)))
    )
  )
  ruturnconslst
)

评分

参与人数 1金钱 +4 收起 理由
龙龙仔 + 4 【好评】程序應可寫得更通用

查看全部评分

 楼主| 发表于 2006-7-3 12:09:00 | 显示全部楼层

;;;应版主要求,改了一下

 

;;;cqs   蔡全胜  2006/7/2


;;;看 大 家 都 贴,   我 也 贴 一 个  ,希望 版 主 加 分

;;;CAD二次开发交流群 3014229  欢迎高手加入

;;;超级图元属性值批量提取函数
;;;(getproperty 表 VLA对象)
;;;(setq obj(vlax-ename->VLA-object(car(entsel))))
;;;例1: (getproperty '((C Center)(R Radius)(L Layer)(CL Color)) obj)
;;; 例2getproperty '((0 Center) (1 Radius) (2 Layer) (3 Color)) obj)
;;;返回值:提取的关联表
(defun getproperty
       (ptylst VLAobj / ptyval pty tempconslst ruturnconslst)
  (vl-load-com)
  (cond
    ((and ptylst vlaobj)
     (foreach ptyval ptylst
       (setq pty (cadr ptyval))
       (if (vlax-property-available-p VLAobj pty)
  (progn
    (setq tempconslst
    (cons (car ptyval) (vlax-get-property VLAobj pty))
    )
    (setq ruturnconslst (cons tempconslst ruturnconslst))
  )
  (princ (strcat "\n对象不支持的属性:"  (vl-symbol-name pty) "\n"))
       )
     )
     ruturnconslst
    )
;;;下边这几行模似C++的编程思想,在出错时报告函数内的信息
    (t
     (princ "\n函数 getproperty 中出现异外!")
     (princ (list ptylst VLAobj))
     nil
    )
  )
)

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-29 02:26 , Processed in 0.168415 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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