Vlisp超级取属性函数
<P>;;;cqs 蔡全胜 2006/5/20</P><P><BR>;;;看 大 家 都 贴, 我 也 贴 一 个 ,希望 版 主 加 分</P>
<P>;;;CAD二次开发交流群 3014229 欢迎高手加入</P>
<P><BR>;;;超级取属性值函数<BR>;;;(test 表 lisp对象)<BR>;;;例 (setq obj(vlax-ename->VLA-object(car(entsel))))<BR>;;;(test (list '(C Center) '(R Radius) '(L Layer) '(CL Color)) obj)<BR>;;;当对象不支持属性时会在命令行报告<BR>;;;返回值:关联表 ((c . 值)(R . 值)(L . 值))<BR>(defun test (ptylst VLAobj / ptyval pty tempconslst ruturnconslst)<BR> (foreach ptyval ptylst<BR> (setq pty (read (vl-symbol-name (cadr ptyval))))<BR> (if (vlax-property-available-p VLAobj pty)<BR> (progn<BR> (set (car ptyval) (vlax-get-property VLAobj pty))<BR> (setq tempconslst<BR> (cons (car ptyval) (vl-symbol-value (car ptyval)))<BR> )<BR> (setq ruturnconslst(cons tempconslst ruturnconslst))<BR> )<BR> (princ (strcat "\n不支持属性:" (vl-symbol-name pty)))<BR> )<BR> )<BR> ruturnconslst<BR>)</P> <P>;;;应版主要求,改了一下</P>
<P> </P>
<P>;;;cqs 蔡全胜 2006/7/2</P>
<P><BR>;;;看 大 家 都 贴, 我 也 贴 一 个 ,希望 版 主 加 分</P>
<P>;;;CAD二次开发交流群 3014229 欢迎高手加入</P>
<P>;;;超级图元属性值批量提取函数<BR>;;;(getproperty 表 VLA对象)<BR>;;;(setq obj(vlax-ename->VLA-object(car(entsel))))<BR>;;;例1: (getproperty '((C Center)(R Radius)(L Layer)(CL Color)) obj)<BR>;;; 例2:(getproperty '((0 Center) (1 Radius) (2 Layer) (3 Color)) obj)<BR>;;;返回值:提取的关联表<BR>(defun getproperty<BR> (ptylst VLAobj / ptyval pty tempconslst ruturnconslst)<BR> (vl-load-com)<BR> (cond<BR> ((and ptylst vlaobj)<BR> (foreach ptyval ptylst<BR> (setq pty (cadr ptyval))<BR> (if (vlax-property-available-p VLAobj pty)<BR> (progn<BR> (setq tempconslst<BR> (cons (car ptyval) (vlax-get-property VLAobj pty))<BR> )<BR> (setq ruturnconslst (cons tempconslst ruturnconslst))<BR> )<BR> (princ (strcat "\n对象不支持的属性:" (vl-symbol-name pty) "\n"))<BR> )<BR> )<BR> ruturnconslst<BR> )<BR>;;;下边这几行模似C++的编程思想,在出错时报告函数内的信息<BR> (t<BR> (princ "\n函数 getproperty 中出现异外!")<BR> (princ (list ptylst VLAobj))<BR> nil<BR> )<BR> )<BR>)</P>
页:
[1]