wjj992
发表于 2008-12-10 12:36:00
<p>随便拿一张比较多的填充的图,框选后总会出现</p><p>“命令: cs<br/>选择对象: 指定对角点: 找到 228 个<br/>选择对象:<br/>建模操作错误:<br/> 操作失败。<br/>Automation 错误。 输入无效”</p>
wjj992
发表于 2008-12-10 12:40:00
<p>或者是</p><p>命令: cs<br/>选择对象: 指定对角点: 找到 7 个<br/>选择对象:<br/>Automation 错误。 输入无效</p><p>算不出来,还有能不能加一句命令把算出来的自动删除掉,这样能知道那些计算好了,不会重复</p>
wjj992
发表于 2008-12-13 03:03:00
我检查了一下,那个计算不出来是应为填充图案没面积,cad自带aa也计算不出来,那能不能自动过滤掉这些计算不了的图案,只计算可以计算的图案面积,计算完后可以删除掉可以计算的图案(把要计算的填充拷一份出来就可以了),这样可以看到那些不能计算的地方,再用pl线去求那些没有面积的图案
wjj992
发表于 2008-12-13 03:50:00
而且每个单独的填充图案能不能文字标出每个图案面积
wjj992
发表于 2008-12-13 03:55:00
感觉提这么多要求,工程量挺巨大。不好意思各位
wjj992
发表于 2009-4-10 21:27:00
晓东论坛上有位大侠优化了一下,他把计算不了的图案自动过滤改成红色,其他的照样可以计算,相信这个对植物种植计算很有帮助,下面是调整后的代码
(vl-load-com)
(defun c:mj (/ thisdrawing modelspace cset hname area ll na)
(setq thisdrawing (vla-get-activedocument (vlax-get-acad-object))
modelspace(vla-get-modelspace thisdrawing)
)
(if (not (vl-catch-all-error-p
(setq cset
(vl-catch-all-apply
'vla-item
(list
(vla-get-selectionsets
thisdrawing
)
"CURRENT"
)
)
)
)
)
(vla-delete cset)
)
(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))
)
(if (= (type area) 'REAL)
(if ll
(if (setq na (assoc hname ll))
(setq ll (subst (list hname (+ area (cadr na))) na ll))
(setq ll (cons (list hname area) ll))
)
(setq ll (cons (list hname area) ll))
)
(progn
(vla-put-color obj acred)
(vla-highlight obj actrue)
)
)
)
)
)
(princ ll)
(princ)
)