monsead 发表于 2007-8-17 17:34:00

申请和与均值程序以及面积查询程序

<p>申请和与均值程序以及面积查询程序,说明如下:</p><p>&nbsp;&nbsp;&nbsp; <font color="#ff0000">和与均值程序</font></p><p>&nbsp;&nbsp;&nbsp; 有一系列文字(数字)对象(可能成千上万),字高有两种规格,大一点的字高为4(整数),小一点的字高就为3(小数),也可能是1,0.75,2,1.5……分别对应出现。例如大字高为2的时候小字高即为1.5。</p><p>&nbsp;&nbsp;&nbsp; 要求:指定某区域内的上述文字对象(例如用cp命令选择)计算数字的和以及均值。计算过程描述如下:大字高的对象(字高为1、2、4……)直接累加,小字高对象乘0.1再累加,大字高和小字高累加结果再相加即为和。和除以大字高对象个(数据个数)数即得到均值。结果在命令栏给出。</p><p>例如:<br/>命令: _SUM<br/>默认小数高度 1.50。默认整数高度 2.00。<br/>选择对象: cp<br/>第一圈围点:..<br/>找到符合要求的 45 个数据,总和为 172.000000, 平均值为 3.822222</p><p>&nbsp;&nbsp;&nbsp; <font color="#ff0000">查询面积程序</font></p><p>&nbsp;&nbsp;&nbsp; autocad自身有个填充命令,填充完成后查看特性可以得到面积,或者围绕某个空间画多段线,之后查询多段线特性也可以得到面积。我想要一个命令,只要在空间内部点一下鼠标(最好这时将所选空间的边界突出显示一下),再确认一下就可以得到面积。如果连续点多个空间的话可以累计,点重复了提示重复。</p>

monsead 发表于 2007-8-23 10:41:00

那个好心人帮忙做一下啊,可以付费的……联系我……

arming_hz 发表于 2007-8-24 00:18:00

<p>可以做到.详细请与我联系(QQ 279554746)</p><p>欢迎访问我的空间 &nbsp;<a href="http://arminghz07.ik8.com/">http://arminghz07.ik8.com/</a>&nbsp;</p><p></p>

sailorcwx 发表于 2007-8-24 17:08:00

本帖最后由 作者 于 2007-8-24 17:08:49 编辑


;;和与均值 V1.0 by sailorcwx @2007.8.24
(defun c:sum()
(if (not YH_h1) (setq YH_h1 1.5))
(if (not YH_h2) (setq YH_h2 2.0))
(initget "Y N")
(setq YH_kw (getkword (strcat "\n小数高度 " (rtos YH_h1 2 2)"整数高度 " (rtos YH_h2 2 2) "\n是否修改字高<N>")))
(if (= YH_kw "Y")
    (progn
      (setq YH_h11 (getreal (strcat "输入小数高度<" (rtos YH_h1) ">"))
   YH_h21 (getreal (strcat "输入整数高度<" (rtos YH_h2) ">"))
   )
      (if (and YH_h11 (> YH_h11 0)) (setq YH_h1 YH_h11))
      (if (and YH_h21 (> YH_h21 0)) (setq YH_h2 YH_h21))
      )
    )
(setq YH_ss (ssget (list '(0 . "TEXT") '(-4 . "<OR") (cons 40 YH_h1)(cons 40 YH_h2) '(-4 . "OR>"))))
(if YH_ss
    (progn
      (setq YH_sum 0
   YH_n1 0
   YH_n2 0
   YH_index 0
   )
      (repeat (sslength YH_ss)
(setq YH_data (entget (ssname YH_ss YH_index )))
(if (setq YH_c (distof (cdr (assoc 1 YH_data))))
   (progn
   (setq YH_sum (+ YH_sum YH_c))
   (if (= (cdr (assoc 40 YH_data)) YH_h1) (setq YH_n1 (1+ YH_n1))(setq YH_n2 (1+ YH_n2)))
   )
   )
(setq YH_index (1+ YH_index))
)
      (princ (strcat "\n找到符合要求的" (itoa (+ YH_n1 YH_n2)) "个数据,总和为" (rtos YH_sum 2) " 平均值为" (rtos (/ YH_sum YH_n2))))
      )
    )
(princ)
)

sailorcwx 发表于 2007-8-25 01:39:00

本帖最后由 作者 于 2007-8-25 3:14:19 编辑


;;查询闭合空间面积V1.0 by sailorcwx @2007.8.24
(defun c:ga(/ YH_AREA YH_ENT YH_PT)
(setvar "CMDECHO" 0)
(vl-load-com)
(vl-cmdf "-bhatch" "p" "solid")
(while (setq YH_pt (getpoint "\n点选封闭空间,右键结束"))
    (vl-cmdf YH_pt)
    )
(vl-cmdf "")
(setq YH_ent (entlast)
YH_area (vla-get-area (vlax-ename->vla-object YH_ent))
)
(entdel YH_ent)
(princ (strcat "所选区域面积为" (rtos YH_area)))
(princ)
)

monsead 发表于 2007-9-4 11:24:00

<p>非常感谢,给我你的QQ,我给你充些Q币作为感谢吧。187257528</p>

天龙八部 发表于 2007-9-6 16:38:00

<p>程序应该这样吧!</p><p>private sub totalnumber1()</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim pptext as acadtext</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim numcount as double&nbsp;&nbsp; &nbsp;'total count1</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim count1 as double</p><p>   dim ppsetpp1 as acadselectionsets</p><p>&nbsp;&nbsp;&nbsp;&nbsp; '添加选择集</p><p>   if not isnull(thisdrawing.selectionsets.item("pptext")) then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set ppsetpp1=thisdrawing.selectionsets.item("pptext")</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ppsetpp1.delete</p><p>&nbsp;&nbsp;&nbsp;&nbsp; end if  </p><p>dim pp1data(0 to 0) as integer</p><p>dim pp2filter(0 to 0) as variant</p><p>ppsetpp1.selectonscreen pp1data,pp2filter&nbsp;&nbsp;&nbsp; '选择文字对象</p><p> dim pppmmset() as acadtext</p><p>&nbsp;  redim pppmmset(Ubound(ppsetpp1.count)-1)</p><p>&nbsp; dim jj as double</p><p>dim min11() as variant,max11() as variant</p><p>dim pptext111 as acadtext</p><p>dim kk as double</p><p>dim ppheight as double</p><p>ppheight=0</p><p>&nbsp;for jj=0 to Ubound(ppsetpp1.count)-1</p><p></p><p>&nbsp;&nbsp; </p><p>&nbsp;&nbsp; set pptext111=ppsetpp1.item(jj)</p><p>&nbsp; redim min11(jj)</p><p>&nbsp; redim max11(jj)</p><p>&nbsp;&nbsp; pptext111.getboundingbox min11(jj),max11(jj)</p><p></p><p>&nbsp; if ppheight=int(abs((max11(jj)-min11(jj))) then</p><p>&nbsp; '高的字体</p><p>  count1=count1+ppheight</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp; end if </p><p></p><p>'------****矮字体</p><p>.........同理</p><p>ppheight=int(abs((max11(jj)-min11(jj)))</p><p>&nbsp;&nbsp;&nbsp; </p><p>&nbsp;next</p><p></p><p></p><p>end sub</p><p></p><p></p><p></p><p></p>

monsead 发表于 2007-9-17 11:05:00

<p>最初提供的那个均值程序是有点疏漏的,小字高的数没有乘0.1,呵呵。</p>
页: [1]
查看完整版本: 申请和与均值程序以及面积查询程序