[^-^]:http://bbs.mjtd.com/thread-107008-1-1.html
根据网上源码修改
效果图:
![](https://box.kancloud.cn/19bbe1159c812039b62aedf199b13ad2_848x524.gif)
源码:
```
(vl-load-com)
(Defun c:AutoHatchArea (/ DATA I LL MID MTO MTXT NUM
OBJ OID PNAME SS TXT TXT0 TXT1 UR
VAL
areaList areaNumList areaEle areaList pname area
)
(setq
mtxt (list (cons 0 "MTEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbMText")
(cons 1 " ")
(list 10 0.0 0.0 0.0)
(cons 40 5.0) ; 文字高度
(cons 50 0.0)
(cons 62 1)
(cons 71 5)
(cons 72 5)
(cons 90 1)
(cons 45 1.2)
)
)
(setq areaList (tcx 1))
(if (setq i -1)
(repeat (length areaList)
(setq areaEle (nth (setq i (1+ i)) areaList)) ;取出一个面积项
(setq pname (car areaEle)) ;图案名称
(setq area (nth 1 areaEle)) ;面积
(setq midPoint (nth 2 areaEle));填充包围框的中心点
;;对相同图案名称的项进行编号
(if (null (setq areaNum (cdr (assoc pname areaNumList))))
(setq areaNumList (cons (cons pname 1) areaNumList))
(progn
(setq areaNumList (subst (cons pname (1+ areaNum)) (cons pname areaNum) areaNumList))
)
)
(setq txt0 (strcat pname "-" (itoa (cdr (assoc pname areaNumList)))));图案名称 字符串
(setq txt1 (strcat "A=" (rtos area) "m2")) ;面积字符串
(setq
mto (entmake mtxt)
mto (vlax-ename->vla-object (entlast))
)
(vla-put-textstring mto (strcat txt0 "\\\\P" txt1))
(vla-put-insertionPoint mto (vlax-3d-point midPoint))
;(vla-update obj)
)
)
(princ)
)
;;返回填充的图案名称和面积
(defun tcx (
type0 ;0-将相同图案名称的累加在一起;1-相同图案名称的也分别计算
/ thisdrawing modelspace cset hname area ll na centerPoint minExt maxExt)
(setq thisdrawing (vla-get-activedocument (vlax-get-acad-object))
modelspace (vla-get-modelspace thisdrawing)
)
(if (ssget '((0 . "hatch")))
(progn
(vlax-for obj (vla-get-activeselectionset thisdrawing)
(setq hname (vla-get-patternname obj)
area (/ (vl-catch-all-apply ' vla-get-area (list obj) ) 1000000)
)
(vla-getboundingbox obj 'minExt 'maxExt)
(setq minExt (vlax-safearray->list minExt))
(setq maxExt (vlax-safearray->list maxExt))
(setq midPoint
(list
(/ (+ (car minExt) (car maxExt)) 2)
(/ (+ (cadr minExt) (cadr maxExt)) 2)))
(if (\= (type area) 'REAL)
(if (\= type0 0)
(if ll
(if (setq na (assoc hname ll))
(setq ll (subst (list hname (+ area (cadr na)) midPoint) na ll))
(setq ll (cons (list hname area midPoint) ll))
)
(setq ll (cons (list hname area midPoint) ll))
)
(progn
(setq ll (cons (list hname area midPoint) ll))
)
)
)
)
)
)
(princ ll)
)
```
- 前言
- 概述
- autolisp简介(初)
- 搭建编程环境
- Visual Lisp 编辑器的使用(初)
- vs code的使用
- 基本概念(初)
- 表达式
- 数据类型
- 整数类型
- 实数类型
- 字符串类型
- 列表
- 选择集类型
- 实体名称(ename)
- vla对象(vla-object)
- 文件描述符
- 符号和变量(初)(精)
- 源码文件
- 变量
- 变量的类型
- 变量赋值
- 变量求值
- 预定义变量
- 数值处理
- 字符串处理
- 显示和输出
- 控制字符
- 列表操作
- 重点函数列表
- 尺寸标注
- 文字固定偏移
- 填充
- 填充到指定的矩形
- 计算填充面积并标注
- 其他
- 绘制任意曲线的等分线
- 原位缩放
- 修改填充基点和角度
- 批量标注多段线长度
- 统计相同直径的圆的数量
- z坐标置0
- 生成随机数
- 图层
- 相交
- intersectWith无法求交点的几种情形
- 向量和矩阵
- 向量加减乘除
- 向量长度
- 求单位向量
- 向量点积
- 向量叉积
- 命令和交互
- 调用command命令
- 多段线
- 获取多段线顶点
- UCS
- 有关ucs的命令和系统变量
- 通过command操作ucs
- 草图设置
- 捕捉
- 栅格
- 正交
- 对象捕捉
- 坐标系和变换(高级)
- 任意轴算法
- 坐标系
- trans
- geomcal
- autocad开发相关网站
- 小技巧汇总
- 判断点是否在封闭图形内
- 安装
- acad启动加载顺序
- 安装包制作
- 添加文件到启动组
- 添加目录到搜索路径
- 对话框和图形界面
- DCL
- openDCL
- 菜单和自定义界面
- 菜单文件
- 自定义文件
- 函数参考
- quote