AutoLISP查询图元信息

AutoLISP查询图元信息,可以查询直线、圆弧、圆、椭圆的相关信息,代码如下。

(defun c:getppt    ()
    (setq ss (car (entsel "请选择要查询的图元:")))
    (setq ssob (vlax-ename->vla-object ss))
    (setq typ
         (cdr
         (assoc
             0
             (entget ss)
         )
         )
    )
    (cond
    ((= "LINE" typ)
     (c:lppt)
    )
    ((= "ARC" typ)
     (c:arcppt)
    )
    ((= "CIRCLE" typ)
     (c:ccleppt)
    )
    ((= "ELLIPSE" typ)
     (c:elppt)
    )
    (print typ)
    )
)
;;;LINE函数
(defun c:lppt ()
;;;    (setq ss (car (entsel "\n请选择所要查询的直线:")))
    (Setq len (Vlax-Get ssob 'Length))
    (Setq ang (Vlax-Get ssob 'Angle))
    (Setq strpt (Vlax-Get ssob 'StartPoint))
    (Setq endpt (Vlax-Get ssob 'EndPoint))
    (print
    (strcat "起点:" (rtos (car strpt)) "," (rtos (cadr strpt)))
    )
    (print
    (strcat "终点:" (rtos (car endpt)) "," (rtos (cadr endpt)))
    )
    (print (strcat "长度:" (rtos len)))
    (print (strcat "角度:" (rtos ang)))
    (princ)
)
;;;圆弧信息
(defun c:arcppt    ()
;;;    (setq ss (car (entsel "\n请选择所要查询的圆弧:")))
;;;    (setq ssob (vlax-ename->vla-object ss))
    (Setq center (Vlax-Get ssob 'center))
    (setq radius (vlax-get ssob 'radius))
    (Setq len (Vlax-Get ssob 'ArcLength))
    (Setq area (Vlax-Get ssob 'area))
    (print (strcat "圆心:"
           (rtos (car center))
           ","
           (rtos (cadr center))
       )
    )
    (print (strcat "半径:" (rtos radius)))
    (print (strcat "长度:" (rtos len)))
    (print (strcat "面积:" (rtos area)))
    (princ)
)
;;;圆信息
(defun c:ccleppt ()
;;;    (setq ss (car (entsel "\n请选择要查询的圆:")))
;;;    (setq ssob (vlax-ename->vla-object ss))
    (setq center (vlax-get ssob 'center))
    (setq radius (vlax-get ssob 'radius))
    (setq area (vlax-get ssob 'area))
    (print (strcat "圆心:"
           (rtos (car center))
           ","
           (rtos (cadr center))
       )
    )
;;;    (print (cons (car center) (cadr center)))
    (print (strcat "半径:" (rtos radius)))
    (print (strcat "周长:" (rtos (* pi (* 2 radius)))))
    (print (strcat "面积:" (rtos area)))
    (princ)
)
;;;椭圆信息
(defun c:elppt ()
;;;    (setq ss (car (entsel "\n请选择所要查询的椭圆:")))
;;;    (setq ssob (vlax-ename->vla-object ss))
    (setq center (vlax-get ssob 'Center))
    (setq maxr (vlax-get ssob 'MajorRadius))
    (setq minr (vlax-get ssob 'MinorRadius))
    (setq area (vlax-get ssob 'Area))
;;;显示信息
    (print (strcat "中心:"
           (rtos (car center))
           ","
           (rtos (cadr center))
       )
    )
    (print (strcat "长轴:" (rtos maxr)))
    (print (strcat "短轴:" (rtos minr)))
    (print (strcat "周长:"
           (rtos (+ (* 2 pi minr) (* 4 (- maxr minr))))
       )
    )
    (print (strcat "面积:" (rtos area)))
    (princ)
)

代码完。

因为椭圆和椭圆弧都是ELLIPSE,未找到区分椭圆的椭圆弧的方法,查询椭圆弧的信息可参考这里

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值