[求助]统计图上所有多义线面积(含非封闭)并写到文字上
<p>图上有上千个多义线所生成的面积(含非封闭),应如何选取某范围后提取</p><p>1、面积等于1000、</p>
<p>2、大于等于500小于1000</p>
<p>3、小于500后,</p>
<p>统计数量后生成文字。</p>
<p>如:</p>
<p>面积等于1000 数量=800</p>
<p>面积大于等于500及小于1000 数量=150</p>
<p>面积小于500 数量=250</p>
<p>谢谢~~</p> 你是要选择图上的多义线还是文字面积? gufeng发表于2010-8-7 23:48:00static/image/common/back.gif你是要选择图上的多义线还是文字面积?
<p>选择图上的多义线~提取其面积~~</p> qq534206572 <p>用插件直接查询你所选的范围就行了</p>
(defun c:Test (/ <500NUM =1000NUM>=500<1000NUM
OBJ OBJ_AREAOBJ_I OBJ_VLA
OLDCMDECHOPT TEXT_H TEXT_JL
)
(setq obj (ssget '((0 . "*POLYLINE"))))
(if obj
(progn
(vl-load-com)
(setq oldcmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0) ;_禁止回显
(setq text_h 3) ;_文字的高度
(setq text_jl 10) ;_文字的行间距,使用的是单选文字
(setq =1000Num 0) ;_面积 =1000 的个数
(setq >=500<1000Num 0) ;_面积等(and >=500 <1000) 的个数
(setq <500Num 0) ;_面积 <500 的个数
(setq obj_i -1)
(repeat (sslength obj)
(setq obj_vla (vlax-ename->vla-object
(ssname obj (setq obj_i (1+ obj_i)))
)
) ;_Vla对象
(setq obj_area (vla-get-Area obj_vla)) ;_面积
(cond
((= obj_area 1000)
(setq =1000Num (1+ =1000Num))
)
((and (>= obj_area 500) (< obj_area 1000))
(setq >=500<1000Num (1+ >=500<1000Num))
)
((< obj_area 500)
(setq <500Num (1+ <500Num))
)
)
)
(setq pt (getpoint "\n指定文字插入点:"))
(command "-text"
"j"
"ml"
pt
text_h
0
(strcat "面积等于1000 数量=" (itoa =1000Num))
)
(command "-text"
"j"
"ml"
(setq pt (polar pt (* pi 1.5) text_jl))
text_h
0
(strcat "\n面积大于等于500及小于1000 数量="
(itoa >=500<1000Num)
)
)
(command "-text"
"j"
"ml"
(polar pt (* pi 1.5) text_jl)
text_h
0
(strcat "\n面积小于500 数量=" (itoa <500Num))
)
(setvar "cmdecho" oldcmdecho)
)
)
(princ)
)
页:
[1]