smilecui89 发表于 2016-5-6 22:46:19

非常不错,大赞

林立 发表于 2016-5-7 14:49:22

高飞鸟大师好!在日常的应用中发现,用多段线绘制,以表格形式展现的时候能有详细的数据,但是只有句柄和图元类型让我不好相对应原图元,有办法能更直观的对应吗?如所有的封闭空间都用多段线绘制时,最后表格中所有图元类型都显示多段线,虽然句柄不一样,但也要一个个查看。。

highflybird 发表于 2016-5-7 18:53:21

林立 发表于 2016-5-7 14:49 static/image/common/back.gif
高飞鸟大师好!在日常的应用中发现,用多段线绘制,以表格形式展现的时候能有详细的数据,但是只有句柄和图 ...

但实际上,每个人都可能有不同的要求。
以表格形式弄出来,如果要对应到每个图元,就必须知道它们之间如何区别的。
譬如像你说的这个例子,每一多段线,对应什么标志呢?我也没办法知道。
所以,最佳办法,就是多段线与其对应的标志(譬如说数字之类)相关联。
如果你觉得这个地方不好的话,可以利用我源码自己进行处理,把句柄的那个对应项目用你自己的标志替换即可。 或者你提出要求,发一个样例图,然后我稍加改写我的代码作为适合你的特例。

luojunmax 发表于 2016-5-8 00:04:14

谢谢付出,我等不知道如何表达谢意

林立 发表于 2016-5-8 13:08:14

highflybird 发表于 2016-5-7 18:53 static/image/common/back.gif
但实际上,每个人都可能有不同的要求。
以表格形式弄出来,如果要对应到每个图元,就必须知道它们之间如 ...

,先感谢大师的回复,大师真是好人。经过一番折腾,找到一方法,他的思路是先创建的一个表格,然后直接点封闭空间(也不知道封闭空间是面域还是多段线),封闭空间内自动生成了阿拉伯数字,数字又自动填充到了表格中,貌似一直点封闭空间的话可以都自动加入表格(要是其他的功能,如长度,体积,面积,都能这样那就完善了).,
1.之前想过通过句柄来找图元,但无果,2.后想用不同方式绘图来对应量,也无果。
最终是想对应表格中的量和图元的关系,大师能给点指导意见吗?

longer1000 发表于 2016-5-9 09:52:16

要是能分层统计就更好了

a55756lw 发表于 2016-5-17 16:50:53

支持大神发东西

Silence---1 发表于 2016-5-18 00:38:59

大神帮忙。 合并文字插件怎让她合并后字体变颜色
(defun c:wzlj (/ sort_text_by_column1 sslst textlst scale)
;;按行排列文字,nscale为字高的倍数,设为0.5,即文字竖向间距小于0.5倍字高,则按一行考虑
(defun sort_text_by_column1
            (sstextnscale/       n       rtnlst
             y       rtnlst1 rtnlst2 space1space2
             aa      bb      cc      dd
            )
    (setq n -1
    rtnlst nil
    )
    (repeat (sslength sstext)
      (setq rtnlst (cons (ssname sstext (setq n (1+ n))) rtnlst))
    )
    (setq rtnlst
   (vl-sort
       rtnlst
       '(lambda (a b)
    (setq a(vlax-ename->vla-object a)
          b(vlax-ename->vla-object b)
    )
    (vla-GetBoundingBox a 'aa 'bb)
    (vla-GetBoundingBox b 'cc 'dd)
    (if
      (< (abs (- (vlax-safearray-get-element aa 1)
         (vlax-safearray-get-element cc 1)
      )
         )
         (abs
         (* nscale
      (- (vlax-safearray-get-element bb 1)
         (vlax-safearray-get-element aa 1)
      )
         )
         )
      )
       (< (vlax-safearray-get-element aa 0)
          (vlax-safearray-get-element cc 0)
       )
       (> (vlax-safearray-get-element aa 1)
          (vlax-safearray-get-element cc 1)
       )
    )
      )
   )
    )
    (setq y (cadr (zgx-get-dxf 10 (car rtnlst) 1)))
    (setq rtnlst1 nil
    rtnlst2 nil
    )
    (mapcar
      '(lambda (x)
   (vla-GetBoundingBox (vlax-ename->vla-object x) 'aa 'bb)
   (if
   (< (abs (- (cadr (zgx-get-dxf 10 x 1)) y))
      (* nscale
   (abs (- (vlax-safearray-get-element bb 1)
       (vlax-safearray-get-element aa 1)
          )
   )
      )
   )
      (progn
      (setq rtnlst1 (append rtnlst1 (list x)))
      )
      (progn
      (setq rtnlst2 (append rtnlst2 (list rtnlst1)))
      (setq y (cadr (zgx-get-dxf 10 x 1)))
      (setq rtnlst1 nil
      rtnlst1 (append rtnlst1 (list x))
      )
      )
   )
       )
      rtnlst
    )
    (setq rtnlst2 (append rtnlst2 (list rtnlst1)))
)
;;----------------------------------------------
(defun zgx-chg-dxf (en code newdata / endata)
    (setq endata (entget en))
    (if(assoc code endata)
      (setq
endata (subst (cons code newdata) (assoc code endata) endata)
      )
      (setq
endata (append endata (list (cons code newdata)))
      )
    )
    (entmod endata)
)
(defun zgx-get-dxf (code entname kk)
    (if(= kk 2)
      (assoc code (entget entname))
      (cdr (assoc code (entget entname)))
    )
)
;;----------------------------------------------
(prompt "\n选择需要合并的文字[更改间距系数]:")
(setq sslst (ssget '((0 . "text,swr_text"))))

(while (not sslst)
    (setq scale (getreal "\n输入间距系数[默认0.5]:"))
    (if(not scale)
      (setq scale 0.5)
    )
    (prompt "\n选择需要合并的文字[更改间距系数]:")
    (setq sslst (ssget '((0 . "text,swr_text,tch_text"))))
)

(if (not scale)
    (setq scale 0.5)
)
(setqsslst(sort_text_by_column1 sslst scale)
textlst(mapcar'(lambda (c)
         (apply 'strcat c)
       )
      (mapcar'(lambda (x)
         (mapcar '(lambda (a)
                (zgx-get-dxf 1 a 1)
            )
             x
         )
         )
      sslst
      )
    )
)
(vla-startundomark
    (vla-get-ActiveDocument (vlax-get-acad-object))
)
;;改变每行第一个文字值
(mapcar '(lambda (a b)
       (zgx-chg-dxf (car a) 1 b)
   )
    sslst
    textlst
)
(setqsslst (apply 'append
         (mapcar 'cdr
         sslst
         )
      )
)
(foreach n sslst
    (entdel n)
)
(vla-endundomark
    (vla-get-ActiveDocument (vlax-get-acad-object))
)
(princ "\n文字合并结束!")
(princ)
)

yoyoho 发表于 2016-5-18 08:30:15

感谢 highflybird 大师分享程序!!!!!

林小林子 发表于 2016-6-9 00:04:52

大师很厉害,膜拜中!!!
页: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16
查看完整版本: 长度、面积和体积统计工具