提示:VLAX-GET-ACAD-OBJECT 没有定义
(defun c:kk()(setq e (entnext));获取cad文件中的图元名称
(setq num 0);统计一条多断线端点数
(setq m 0);统计多段线条数
(setq file (open "d:\\pline.txt" "w"))
(princ "\n" file)
(setq area 0)
(vl-load-com)
(setq myacad(vlax-get-acad-object))
(setq mydoc(vla-get-ActiveDocument myacad))
(setq myms(vla-get-ModelSpace mydoc))
(setq ii 0)
(setq idid 0)
(while e
(setq my (vla-item myms ii));获取图元对象
(setq ii (+ 1 ii))
(setq i 0)
(setq e1(entget e));由图元名e获取图元表
(if(= "LWPOLYLINE" (cdr(assoc 0 e1)))
(progn
(setq m (+ 1 m))
(setq num 0)
(setq area(vlax-get-property my 'Area));获取面积
;(setq len (vlax-get-property my 'Length));获取周长
(setq lay (vlax-get-property my 'Layer));获取图层
(if(> area 1.0);;面积大小要求
(progn
(setq idid (+ 1 idid));;图版个数统计,可用于图版的编号
(while (nth i e1);按顺序每次取出图元表中的一个点对
(setq n (car(nth i e1)))
(if(= n 10) ;判断点对表是否记录的是坐标
(progn
(setq num (+ 1 num))
(setq x(cadr(nth i e1)))
(setq y(caddr(nth i e1)))
(setq xx (rtos x 2 3));2表示输出为十进制 3表示精度为3位
(setq yy (rtos y 2 3))
(setq num1 (rtos num 2 0))
(setq m1 (rtos m 2 0))
(setq area1 (rtos area 2 3))
(setq idid1 (rtos idid 2 0))
;;(princ ( strcat m1 " "num1 " "xx " " yy " " area1" " lay "\n") file);文件输出
(princ ( strcat idid1 " "num1 " "yy " " xx " " area1" " lay "\n") file);文件输出
)
)
(setq i (+ 1 i))
)
)
)
)
)
(setq e (entnext e))
)
(close file)
)
这是一个读取AutoCAD中多边形数据的程序,但是在读取CAD中有很多图形(图元很多)的时候,会出错:
; 错误: no function definition: VLAX-GET-ACAD-OBJECT
有没有高手知道是什么原因?
(defun c:kk()
(setq num 0);统计一条多断线端点数
(setq m 0);统计多段线条数
(setq file (open "d:\\pline.txt" "w"))
(princ "\n" file)
(setq area 0)
(vl-load-com)
(setq myacad(vlax-get-acad-object))
(setq mydoc(vla-get-ActiveDocument myacad))
(setq myms(vla-get-ModelSpace mydoc))
(setq ii 0)
(setq idid 0)
;;;用vlax-for循环
(vlax-for my myms
(setq e (vlax-vla-object->ename my)
e1 (entget e))
(if(= "LWPOLYLINE" (cdr(assoc 0 e1)))
(progn
(setq m (+ 1 m))
(setq num 0)
(setq area(vlax-get-property my 'Area));获取面积
;(setq len (vlax-get-property my 'Length));获取周长
(setq lay (vlax-get-property my 'Layer));获取图层
(if(> area 1.0);;面积大小要求
(progn
(setq idid (+ 1 idid));;图版个数统计,可用于图版的编号
(while (nth i e1);按顺序每次取出图元表中的一个点对
(setq n (car(nth i e1)))
(if(= n 10) ;判断点对表是否记录的是坐标
(progn
(setq num (+ 1 num))
(setq x(cadr(nth i e1)))
(setq y(caddr(nth i e1)))
(setq xx (rtos x 2 3));2表示输出为十进制 3表示精度为3位
(setq yy (rtos y 2 3))
(setq num1 (rtos num 2 0))
(setq m1 (rtos m 2 0))
(setq area1 (rtos area 2 3))
(setq idid1 (rtos idid 2 0))
;;(princ ( strcat m1 " "num1 " "xx " " yy " " area1" " lay "\n") file);文件输出
(princ ( strcat idid1 " "num1 " "yy " " xx " " area1" " lay "\n") file);文件输出
)
)
(setq i (+ 1 i))
)
)
)
)
)
(setq e (entnext e))
)
(close file)
)
(vl-load-com) 先 (vl-load-com)已经有了 有的时候还会提示错误:
; 错误: ActiveX 服务器返回错误: 未知名称: AREA 回复 匡匡 的帖子
有的图元没有AREA 属性 参数类型错误: VLA 对象集合: #<VLA-OBJECT 0b741f74>
页:
[1]