;加载vlisp函数集 (vl-load-com) ;建立反应器 (vlr-acdb-reactor nil '((:vlr-objectModified . getarea))) ;回调函数 (defun getarea(robj ent) ;判断是否为多段线 (if (= (cdr (assoc 0 (entget (cadr ent)))) "LWPOLYLINE") ;对多段线进行处理 (progn ;转成vlisp对象 (setq obj (vlax-ename->vla-object (cadr ent))) ;获取并显示多段先面积,精确到平方毫米 (princ (strcat "\n面积=" (rtos (vla-get-area obj) 2 0) "平方毫米")) ) ) (princ) ) |