2006年12月7日星期四

一个把面积为0的3DFACE转换成为点的程序




;昨天遇到的问题是从3dsmax里面导出图形到cad中,由于打碎之后存在着许多的3dface,四个
;点坐标都一样的情况,3dface比较奇怪,无法捕捉,于是花2分钟编了下面这个程序来将
;这类3dface相应的位置绘制上一个点,超级简单的程序:)
(defun c:test (/ a b i ent dxf10 dxf11 dxf12 i)
(setq a (ssget '((0 . "3DFACE"))))
(setq b (sslength a)
i 0
)
(repeat b
(setq ent (entget (ssname a i)))
(setq dxf10 (cdr (assoc 10 ent)))
(setq dxf11 (cdr (assoc 11 ent)))
(setq dxf12 (cdr (assoc 12 ent)))
(setq dxf13 (cdr (assoc 13 ent)))
(cond
((and
(equal dxf10 dxf11)
(equal dxf11 dxf12)
(equal dxf12 dxf13)
)
(make_point dxf10 1)
)
)
(setq i (1+ i))
)
)
(defun make_point (l10 color)
(ENTMAKE (LIST (CONS 0 "POINT") (cons 62 color) (cons 10 l10)))
)