scream2658 发表于 2013-6-25 22:28:49

如何统计矩形,并输出结果成表格?

   统计所选范围内多个不同的矩形,并将统计的结果,按矩形的边长输出成表格?

   我自己有个思路是这样的,还望大神帮忙点拨,来点神来之笔。

    1.先圈定选择集,滤去掉重叠的矩形。
   2.通过VL函数得到所选范围内矩形的面积,和周长。并写入表中。
    3 因为并不能直接从图元中得到矩形的边长,这里就要写个数据解析函数,由周长和面积求出边长,这是个二元一次方程,比较好解决。
      把得到的边长结果写成表单2.
    4.遍历 边长表单,除去相同的边长,并统计相同的数目。
5 对上面得到的结果排序,写成新表,再按表格输出结果。


1 第1和2,3步的程序我都在网上找好相对应的源代码了,就是 第4步和第5步的程序一直没找到相似的程序。有谁能推荐个学习下呀。



583775698 发表于 2024-4-19 21:17:54

院长太坑了吧 ,不发源码还收费,g搞半天白下载了,
好意思?

qq277274448 发表于 2014-9-23 03:30:42

又扣币不能下载?

scream2658 发表于 2013-7-5 00:45:49

本帖最后由 scream2658 于 2013-7-5 00:48 编辑


(defun qbc (pts / n bc_list b h pt1 pt2 pt3 pt4)
      (setq n 0 bc_list nil)
      (setq pt1 (nth n pts))
      (setq pt2 (nth (+ 1 n) pts))
      (setq pt3 (nth (+ 2 n) pts))
      (setq pt4 (nth (+ 3 n) pts))
      (setq b (distance pt1 pt4))
      (setq h (distance pt1 pt2))
      (setq bc_list (cons b h))
      );结束子函数

(defun c:tg ()
(princ "请框选矩形:")
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(setq i 0 x 0 bclst nil pts nil bc_new nil)
(setq x (sslength ss))
(repeat x
               (setq el (entget (ssname ss i)))
               (foreach pt el
                   (if (= (car pt) 10)
                     (setq pts (append pts (list (cdr pt))))
                  );结束IF
                );结束foreach遍历元素      
               (setq bc (qbc pts))
               (setq bclst(cons bc bclst))
               (setq pts nil)
               (setq i (+ 1 i))
      );结束repeat      
(setq bc_new nil)
(setq m (car bclst))
   (while m   
         (setq x1 (length bclst))
         (setq bclst (vl-remove m bclst))
         (setq m (car bclst))
         (setq x2 (length bclst))
         (setq bc_new (append (- x1 x2)(cons (list m)) bc_new))      
   )   

(foreach y bc_new
      (print (car y))
      (print "=")
      (print (last y))
      (princ "\n")
    )
(princ)
)

鲑鱼扬帆 发表于 2014-9-23 08:21:47

xyp1964 发表于 2014-8-15 09:45 static/image/common/back.gif


院长太强悍了 一切皆浮云啊

xyp1964 发表于 2023-6-19 23:30:21

sky-x-x 发表于 2023-6-18 21:31
请问下如果矩形多段线未封闭,可以按矩形总长宽计算吗

先封闭再处理

ZZXXQQ 发表于 2013-6-26 08:19:27

1、先圈定选择集,滤去掉重叠的矩形。
2、遍历选择集,取出四点坐标,计算边长和面积并组成表单。
3、对边长排序。
4、统计相同边长的数目,写成新表。
5、按表格输出结果。

scream2658 发表于 2013-7-5 00:49:24

vl-remove 是删除所有相同的元素?还是一次只删除一个?

fan_zh 发表于 2013-7-10 14:17:11

楼主用的是我的贴子吗,呵呵
看来是同行
合并数量可以到excel里进行合并

scream2658 发表于 2013-7-10 19:33:29

fan_zh 发表于 2013-7-10 14:17 static/image/common/back.gif
楼主用的是我的贴子吗,呵呵
看来是同行
合并数量可以到excel里进行合并

呵呵,你的什么帖子? 你也是做这个的?

风流少年时 发表于 2014-8-14 18:35:54

最后有成功吗?我也需要这样的程序。

xyp1964 发表于 2014-8-15 09:45:06



页: [1] 2
查看完整版本: 如何统计矩形,并输出结果成表格?