(defun c:2CIRCLE
()
(setq CEN (list 0 0)
RAD 50)
(command "哪配搏CIRCLE" CEN RAD "李祥" )
(command "CIRCLE" CEN (+ RAD 30) "")
)
要注意的是
COMMAND后面跟的命令要加引号。每次CIRCLE命令结束后要加一对空引号。
这是一个错误睁缓提示,意思是说功能渗启不全。如果是CAD装好就这样,一般是由于D版未完全破解造成,如果是一开始是好的,过一段时间这样,那可能是使用清除系统垃圾的软件把CAD的注册文件当垃圾清除了造成的。解悉喊模决办法:重新安装。建筑装06版以上的(defun c:qq (/ d ent f i lst m2 obj pt ss txt x y)(defun maketext (txt pt) 生成文字子函数
(entmake (list '樱做(0 . "TEXT") (cons 62 1) (cons 10 pt) (cons 40 10) (cons 1 txt) '(41 . 0.8)))写文字,0表示字体,62表示颜色1红,10表示坐标点,40表示高度,1表示文字内容,41表示文字宽度比例
)
(setvar "cmdecho" 0)关闭命令行提示
(vl-load-com)加载vlax扩展函数
(setq 余猛ss (ssget) ent (entlast))选择对象并记录最后一个形成的对象
(command ".region" ss "")封闭图形变为面域
(setq ss (ssadd) lst nil)建立一个新选择集
(while (setq ent (entnext ent))循环计算并取得最后一个对象
(if (= (cdr (assoc 0 (entget ent))) "REGION")如果是面域
(setq obj (vlax-ename->vla-object ent) pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid obj)))转换直线为vla对象并取得质心点
m2 (rtos (vla-get-area obj) 2 2) d (rtos (vla-get-perimeter obj) 2 2) lst (cons (list pt m2 d) lst)取得面积平方毫米,长度毫米,并建立一个列表
)
)
)
(command ".undo" "")返回竖颂桥上一步,也就是把面域变回原来的图形
(setq lst (vl-sort lst (function (lambda (x y)(< (car (car x)) (car (car y)))))))根据给定的比较函数来对表中的元素排序
(setq lst (vl-sort lst (function (lambda (x y)(> (cadr (car x)) (cadr (car y)))))))
(setq f (getfiled "指定输出文件路径" "" "xls" 1) f (open f "w"))建立文本
(write-line "编号\t周长(mm)\t面积(㎡)" f)写入内容
(setq i 1)文字编号
(foreach x lst
(setq pt (car x) m2 (cadr x) d (caddr x))每一个元素按顺序对应
(maketext (strcat "A" (itoa i)) (list (car pt) (+ (cadr pt) 20)))通过子程序写文字编号
(maketext (strcat "L=" d "m") pt)通过子程序写长度这个"m"应当为"mm"
(maketext (strcat "S=" m2 "㎡") (list (car pt) (- (cadr pt) 14)))面积"㎡"应当为"mm²"
(write-line (strcat (strcat "A" (itoa i)) "\t" d "\t" m2) f)3个字符串写入文本
(setq i (1+ i))编号递增
)
(close f)关闭文本
(princ)沉默结束
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)