本帖最后由 作者 于 2007-2-5 12:46:45 编辑
代码参考我在晓东版块上问的,“ZM184”大侠回复的: http://www.xdcad.net/forum/showthread.php?s=&postid=3154154#post3154154 ;;;=========================================================== ;;; 查询单个图元长度、面积信息 ;;; ;;; 日 期:zml84 于2007-02-05 ;;;=========================================================== (defun c:t (/ bl el ent 类型 pt0 pt1 r jd0 jd1 jd l a) (princ "\n★★查询长度、面积\n★★默认CAD单位为毫米") ;;设置比例 (setq bl 1000) (while (= (setq el (entsel "\n请点选实体:")) nil) ) (setq ent (entget (car el) '("*")) 类型 (cdr (assoc '0 ent)) ) (princ "\n \n★对象类型:") (princ 类型)
(cond ((= 类型 "LINE") (progn (setq pt0 (cdr (assoc '10 ent)) pt1 (cdr (assoc '11 ent)) l (distance pt0 pt1) ) (princ ",长度:") (princ (/ l bl)) (princ " 米") ) )
((= 类型 "CIRCLE") (progn (setq r (cdr (assoc '40 ent)) l (* 2.0 pi r) a (* pi r r) ) (princ ",周长:") (princ (/ l bl)) (princ " 米") (princ ",面积:") (princ (/ a bl bl)) (princ " 平方米") ) )
((= 类型 "ARC") (progn (setq r (cdr (assoc '40 ent)) jd0 (cdr (assoc '50 ent)) jd1 (cdr (assoc '51 ent)) ) (if (< jd1 jd0) (setq jd (- (+ jd1 pi pi) jd0)) (setq jd (- jd1 jd0)) ) (setq l (* r jd)) (princ ",长度:") (princ (/ l bl)) (princ " 米") ) )
((or (= 类型 "LWPOLYLINE") (= 类型 "SPLINE") (= 类型 "ELLIPSE") (= 类型 "REGION") ) (progn (setvar "CMDECHO" 0) (command "_AREA" "O" el) (setq l (getvar "PERIMETER") a (getvar "AREA") ) (princ ",长度:") (princ (/ l bl)) (princ " 米") (princ ",面积:") (princ (/ a bl bl)) (princ " 平方米") ) )
( (= 类型 "HATCH") (progn (setvar "CMDECHO" 0) (command "_list" el "") (graphscr) (setq a (getvar "AREA")) (princ "\n \n★对象类型:") (princ 类型) (princ ",面积:") (princ (/ a bl bl)) (princ " 平方米") ) )
(t (princ ",不能识别!!") ) ) (princ) ) ;;;=========================================================== (princ "\n\n★★查询长度、面积\n★★键入命令\"T\"开始执行。") (princ) ;;;===========================================================
具体作法是:你先打开一个CAD文件,打开菜单“工具”-》AUTOLISP-》VISUL AUTOLISP编辑器,复制此代码,保存为一个LSP文件。 然后在VISUL AUTOLISP介面下,打开菜单“文件”-》生成应用程序-》新建应用向导-》简单-》下一步-》应用程序位置(你可以选择),应用程序名称(你可以自己定义)-》下一步-》生成VLX程序,你要加载它(在工具菜单中)。你必须修改一下“ZM184”的第一行“(defun c:t (/ bl el ent 类型 pt0 pt1 r jd0 jd1 jd l a)”,你把“t”修改为你喜欢的命令,别和CAD中命令重复了,比如你改为“XSMC”,你在命令行打入“XSMC”就OK了,不知道你明白没有,谢谢晓东的“ZM184”大侠及明经的各位朋友。 |