明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2142|回复: 8

图元除属性联合列表内的其他属性怎么获得

[复制链接]
发表于 2007-10-5 21:47 | 显示全部楼层 |阅读模式

列如:图元的周长等

图元可以通过属性配制框修改的部分,能够使用LISP函数控制并修改吗?

本人新学的现在使用的教程是《AutoLisp&DCL基础篇 吴永进,林美樱

那个有此教程相关附件的繁体版吗?教程提供下载地址是简体的。现在公司使用繁体系统只能通过WORD来察看,

不太方便。

发表于 2007-10-6 10:46 | 显示全部楼层

图元的周长一般是计算出来的,在图形实体数据库中不存在。

图元可以用LISP编程修改,但专门的函数要自己去编程。

明经的高手如云,您可以将问题贴上来得到解答。

 楼主| 发表于 2007-10-6 17:19 | 显示全部楼层

谢谢版主给的以上解答

我想知道的是选择图元后在属性匹配框内不是可以直接查看周长,面积,编辑 前后缀,公差等的吗?

这些数据也是计算出来的吗?那不是很麻烦啊。是不是有另外的数据存储呢?

 楼主| 发表于 2007-10-6 17:52 | 显示全部楼层

还想问下,

用LI命令查询后的数据如何提取啊。

不接触不知道现在才知道自己好菜

哈哈

发表于 2007-10-7 01:32 | 显示全部楼层
周长、面积是算出来的;前后缀是人工输入的;用LIST命令后的数据从系统变量中提取,具体要看提取的内容,可以多看看ACAD的帮助。
发表于 2007-10-7 13:39 | 显示全部楼层
(defun c:zc()
  (setvar "cmdecho" 0)
(vl-load-com)
(princ "\n请选择物体:")
(setq ss (ssget))
(setq zl 0)  ;;所有物体总周长
(setq m 0 n (sslength ss))
(while (< m n)
  (setq en (ssname ss m))
  (setq f (vla-get-Length (vlax-ename->vla-object en))) ;单个物体周长
  (setq m (+ m 1))
  (setq zl (+ zl f))
)
  (princ zl)
  (princ))
 楼主| 发表于 2007-10-8 20:15 | 显示全部楼层

谢谢大大现在知道了是存储在边量中的。

楼上的兄弟好高手啊。真羡慕不知道我什么时间能。。。。

不过有2个地方不明白请兄弟帮忙解释下   V开头的是LISP函数吗 我的教材上没这些内容

1:(vl-load-com)
2:(setq f (vla-get-Length (vlax-ename->vla-object en))) ;单个物体周长

第一行:是加载的什么东西啊?

第二行:vlax-ename->vla-object   这个是取得EN的周长的函数吗?

          vla-get-Length 那这个函数又是什么意思呢?

发表于 2007-10-9 09:49 | 显示全部楼层
;;;功能:练习 获取对象长度信息
(vl-load-com)
(defun C:TT (/ SS SUM I OBJ TMP LEN)
    (princ "\n请选择对象...")
    (if    (setq SS (ssget))
    (progn
        ;;初始化
        (setq SUM 0
          I 0
        )
        ;;逐个对象进行量取
        (repeat (sslength SS)
        (setq OBJ (vlax-ename->vla-object (ssname SS I)))
        (if (setq TMP (vlax-curve-getendparam OBJ))
            (setq LEN (vlax-curve-getdistatparam OBJ TMP)
              SUM (+ SUM LEN)
            )
            (princ (strcat "\n第" (itoa (1+ I)) "个对象被舍弃。")
            )
        )
        (setq I (1+ I))
        )
        ;;显示结果
        (if    (= SUM 0)
        (princ "\n没有量取到长度。")
        (alert
            (princ (strcat "所选实体的总长度为:" (rtos SUM 2 3))
            )
        )
        )
    )
    )
    (princ)
)
 ;|;;
后记:上面代码的精髓在于:
     (setq LEN (vlax-curve-getdistatparam OBJ (vlax-curve-getendparam OBJ)))
     
     请与下句对比便知:
     (setq LEN vla-get-Length OBJ)
;;|;
 楼主| 发表于 2007-10-22 21:11 | 显示全部楼层
感谢楼上兄弟给的回答,等我验证后有问题在麻烦你。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 16:14 , Processed in 0.291787 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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