立即注册 登录
晓东CAD家园-论坛 返回首页

eachy的个人空间 http://bbs.xdcad.net/?14 [收藏] [复制] [分享] [RSS]

日志

CAD2006下的Hatch合并、重建边界、统计面积编程

热度 1已有 727 次阅读2013-5-6 17:07 |个人分类:Lisp| Hatch

     

;|                             
2006对Hatch的支持使得以前的很多程序得以简化,成功率也有了很大的提高,一切都源于
Hatch 命令的增强。

[非关联(DI)/样式(S)/特性(P)/绘图顺序(DR)/添加边界(AD)/删除边界(R)/重新创建边界(B
)/关联(AS)/独立图案(H)/原点(O)] <特性>:

上面是基于命令行模式的各个选项,对话框模式的编辑和填充命令实际是一个,包括了所有的
填充选项。

下面的程序就是用Hatchedit实现批处理,其中的 getkword 用法和以前的版本也略有变化

eachy [www.xdcad.net] Email: eachy@21cn.com 2005.5.9
|;
;;(if (>= (atof (getvar "acadver")) 16.2)
(defun c:tt (/ ss e kw ssl _$area)
(vl-load-com)
(if (setq ss (ssget '((0 . "Hatch"))))
(progn
(setvar "cmdecho" 0)
(setq ssl (sslength ss))
(if (= ssl 1)
(progn
(initget "B H O A S")
(setq kw
(getkword
"\n模式选择\n[重建边界(B)/独立图案(H)/原点(O)/统计面积(A)/实心填充(S)]: "
)
)
)
(progn
(initget "B H A S")
(setq kw
(getkword
"\n模式选择\n[重建边界(B)/独立图案(H)/统计面积(A)/实心填充(S)]
: "
)
)
)
)
(cond
((= kw "B") ;_重建边界
(while (> ssl 0)
(setq e (ssname ss (setq ssl (1- ssl))))
(if (= (cdr (assoc 450 el)) 1)
(progn
(initdia)
(command "hatchedit" e)
)
(command ".-hatchedit" e "B" "p" "y")
)
)
)
((= kw "H") ;_ 分解为独立填充
(while (> ssl 0)
(setq e (ssname ss (setq ssl (1- ssl))))
(command ".-hatchedit" e "h")
)
)
((= kw "O") ;_指定原点
(vl-cmdf ".-hatchedit"
(ssname ss 0)
"o"
"s"
(getpoint "\n新原点: ")
"y"
)
)
((= kw "S") ;_ 变实心填充
(while (> ssl 0)
(setq e (ssname ss (setq ssl (1- ssl))))
(command ".-hatchedit" e "p" "s")
)
)
(t ;_求面积
(setq _$area 0.)
(while (> ssl 0)
(setq e (ssname ss (setq ssl (1- ssl))))
(setq _$area
(+ _$area
(vla-get-area (vlax-ename->vla-object e))
)
)
)
(princ "\n填充总面积: ")
(princ _$area)
)
)
)
)
(princ)
)
;;(princ "\n仅适用AutoCAD 2006以上版本!")
;;)
;;对填充合并可以先利用生成Region边界,然后用Hatch命令重新填充,有兴趣的可以自己
;;添加这部分。

路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-10 12:02 , Processed in 0.238077 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部