找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 716|回复: 8

[编程申请]:怎样得到图形的块列表统计

[复制链接]
发表于 2004-5-13 17:00:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
怎样能得到一幅图中所有的块列表统计,结果如下方式:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-13 18:13:45 | 显示全部楼层
名称统计出来是没有问题,但要排列就麻烦一些!只统计名称的程序你要不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-13 18:34:53 | 显示全部楼层
块的图示比较麻烦,大小不好控制
我有统计块名以及每个块数量的。
如果一定要块的图示,我可以试试看

[PHP]
;统计图块数量表
(defun c:ks()
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))  
  (setq pt1 (getpoint "\n 左上角:"))
  (setq ww (getdist pt1 "\n 宽度<50>: "))
  (if (null ww) (setq ww 50.0))
  (setq hh (getdist pt1 "\n 每格高度<8>: "))
  (if (null hh) (setq hh 8.0))
  (setvar "osmode" 0)
  (setq pt2 (polar pt1 0 ww))
  (setq pt3 (polar pt2 (* pi 1.5) hh))
  (setq pt4 (polar pt1 (* pi 1.5) hh))
  (command "line" pt3 pt4 "")
  (setq pt5 (polar pt1 0 (/ ww 2)))
  (setq pt6 (polar pt5 (* pi 1.5) hh))  
  (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 "图块名称")
  (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 "数量")
  (setq blk (tblnext "block" t))
  (while blk
    (setq blkn (assoc 2 blk))
    (setq blk_key (substr (cdr blkn) 1 1))
    (if (/= blk_key "*")
      (progn
        (setq ss (ssget "X" (list blkn)))
        (if (null ss)
          (setq ssn 0)
          (setq ssn (sslength ss))
          )
        (setq blknn (cdr blkn))
        (setq pt44 pt4 pt33 pt3 pt66 pt6)
        (setq pt4 (polar pt44 (* pi 1.5) hh))
        (setq pt3 (polar pt33 (* pi 1.5) hh))
        (setq pt6 (polar pt66 (* pi 1.5) hh))
        (command "line" pt3 pt4 "")
        (command "text" "m" (inters pt44 pt6 pt66 pt4) (/ hh 2) 0 blknn)
        (command "text" "m" (inters pt66 pt3 pt33 pt6) (/ hh 2) 0 (itoa ssn))
        )
      )
    (setq blk (tblnext "block"))
    )
  (command "rectang" "w" (/ hh 8) pt1 pt3)
  (command "line" pt5 pt6 "")
  (setqvar "osmode" os)
  (prin1)
  )

[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-13 20:48:24 | 显示全部楼层
图示可以这样解决:插入-》求BOX-》按Y方向缩放至字高
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 09:13:02 | 显示全部楼层
斑竹
问题是block中没有自己大小的属性,
我没有办法知道block本身的大小怎么缩放到字高呀!!
请斑竹说的明白一点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 11:38:46 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 13:19:35 | 显示全部楼层
那里也没有把图块插到表里的呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-16 00:13:35 | 显示全部楼层
我想问问有没有一个程序可以把图块统计成文件输出啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-16 07:21:33 | 显示全部楼层
尚未完成功能

1 属性块如要在命令行要求输入时出错
2 没有画线
3 块的位置不在表格中心

[PHP]
                                        ;统计图块数表
;;;
;|获取坐标块中线长
pl - 字串表 hi - 字高 bl -比例
|;
(defun ea:text_length (str  /)
  (caadr (textbox
           (list (cons 40 (getvar "textsize"))
                 (cons 1 str)
                 (cons 7 (getvar "textstyle"))
           )
         )
  )
)
(defun c:xdtb_MKBLKTable (/ pt1 ww hh e a4 ll p1 p2 v1)
  (if (and (setq pt1 (getpoint "\n 左上角:"))
           (setq hh (getdist pt1 "\n 每格高度<8>: "))
           (if (or (= hh "") (null hh))
             (setq hh 8.0)
             hh
           )
      )
    (progn
      (xdrx_object_get "block")
      (while (setq e (xdrx_object_next))
        (if (/= (substr (car e) 1 1) "*")
          (setq a4 (cons (car e) a4))
        )
      )
      (setq
        ll (* 1.2
              (apply 'max (mapcar '(lambda (x) (ea:text_length x)) a4))
           )
        hh (* 2. (getvar "textsize"))
        v1 (list (/ ll 2) (- (/ hh 2)) 0.)
      )
      (xdrx_line1 pt1 (polar pt1 0 (* 2 ll)))
      (xdrx_entity_transformedcopy
        (entlast)
        (xdrx_matrix_SetTranslation
          (xdrx_matrix_identity 3)
          (list 0. ww 0.)
        )
      )
      (setq p1 (mapcar '+ pt1 (list (/ ll 2) (/ hh 2) 0.))
            p2 (polar p1 0. ll)
      )
      (vl-cmdf ".text"
               "j"
               "mc"
               p1
               (getvar "textsize")
               0
               "图块名称"
      )
      (vl-cmdf ".text"
               "j"
               "mc"
               p2
               (getvar "textsize")
               0
               "数量"
      )
      (mapcar '(lambda (a / p3 p4 box h w scl ent)
                 (setq p3 (mapcar '+ pt1 v1)
                       p4 (polar p3 0 ll)
                 )
                 (vl-cmdf ".text" "j" "mc" p3 (getvar "textsize") 0 a)
                 (vl-cmdf ".insert" a p4 "1" "" "0")
                 (command)
                 (setq ent (entlast))
                 (setq box (xdrx_entity_box ent)
                       h   (distance (car box) (nth 2 box))
                       w   (distance (cadr box) (last box))
                 )
                 (if (> h hh)
                   (progn
                     (setq scl (* 0.9 (/ hh h)))
                     (setq tf t)
                     (if (> (* w scl) ll)
                       (progn
                         (setq scl (* 0.9 (/ ll w)))
                         (setq tf nil)
                       )
                     )
                   )
                 )
                 (if (and (not scl) (> w ll))
                   (progn
                     (setq scl (* 0.9 (/ ll w)))
                     (setq tf nil)
                     (if (> (* h scl) hh)
                       (progn
                         (setq scl (* 0.9 (/ hh h)))
                         (setq tf t)
                       )
                     )
                   )
                 )
                 (if scl
                   (vl-cmdf ".scale"
                            (list ent p4) ""
                            p4
                            "r"
                            (if        tf
                              h
                              w
                            )
                            (if        tf
                              hh
                              ll
                            )
                   )
                 )
                 (setq pt1 (polar pt1 (* 1.5 pi) hh))
               )
              a4
      )
    )
  )
  (princ)
)[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 07:24 , Processed in 0.431669 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表