明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1465|回复: 2

[提问] lisp获得矩形框的尺寸出错

[复制链接]
发表于 2014-1-10 20:47:24 | 显示全部楼层 |阅读模式
下边的程序是论坛里翻到的,为什么我运行出错呢,或者大侠们有更简便的代码更好了,谢谢啊
; 错误: ActiveX 服务器返回错误: 未知名称: Name

(defun c:bl()
  (setq en (car(entsel"请选择矩形块图形:")))
  (bl en)
  )
(defun bl (en / BLKOBJ BLKS LENG NA PTLIST WID)
  (if en
    (progn
      (setq blks (vla-get-blocks
                   (vla-get-activedocument (vlax-get-acad-object))
                 )
      )
      (setq na (vla-get-name (vlax-ename->vla-object en)))
      (setq blkobj (vla-item blks na))
      (vlax-for        obj blkobj
        (if (= (read (vla-get-objectname obj)) 'AcDbPolyLine)
          (progn
            (setq en (vlax-vla-object->ename obj))
            (foreach n (entget en)
              (if (= (car n) 10)
                (setq ptlist (cons (cdr n) ptlist))
              )
            )
          );此括号也可(vlax-safearray->list(vlax-variant-value(vla-get-coordinates obj))), 但此结果得出的是个表,需要转换成点列表.
        )
      )
      (if ptlist
        (progn
          (setq leng (distance (car ptlist) (cadr ptlist)))
          (setq wid (distance (cadr ptlist) (caddr ptlist)))
          (if (> leng wid)
            (prompt
              (strcat "矩形长度为:" (rtos leng) "宽度为:" (rtos wid))
            )
            (prompt
              (strcat "矩形长度为:" (rtos wid) "宽度为:" (rtos leng))
            )
          )
        )
      )
      (princ)
    )
  )
)
发表于 2014-1-10 23:01:59 | 显示全部楼层
请选择矩形块图形
我想你出问题关键在这句。。。
一般的 使用vl函数在前面加载(vl-load-com),防止com组件没有加载而出错。
发表于 2014-1-14 10:35:45 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-1-14 10:37 编辑

严格的说楼主这个程序它不一定能真正返回矩形框的长和宽,估计把随便一个多于2个顶点的AcDbPolyLine做成块,它都会把第一边长当成矩形的长而把第二边长当成宽,它不会去管那个图形是不是矩形甚至不会管它有没有4条边,更不会管长是不是小于宽
而程序不能运行应该是因为少了(VL-LOAD-COM)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 18:51 , Processed in 0.167640 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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