honsonnien 发表于 2010-8-7 23:37:00

[求助]统计图上所有多义线面积(含非封闭)并写到文字上

<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:00

你是要选择图上的多义线还是文字面积?

honsonnien 发表于 2010-8-8 00:02:00

gufeng发表于2010-8-7 23:48:00static/image/common/back.gif你是要选择图上的多义线还是文字面积?


<p>选择图上的多义线~提取其面积~~</p>

qihuiqiang 发表于 2010-8-8 07:40:00

qq534206572

zhli85 发表于 2010-8-8 12:41:00

<p>用插件直接查询你所选的范围就行了</p>

gufeng 发表于 2010-8-8 13:45:00


(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]
查看完整版本: [求助]统计图上所有多义线面积(含非封闭)并写到文字上