lengxiaxi 发表于 2014-11-12 23:21:44

统计圆数量并列表

想得到的效果:

1 框选图形,能统计所有圆的数量并列表。

2 圆的右下角以字母标记。

相同半径的圆分别以 A1,A2,A3,命名。以此类推。

不同半径的以B1,C1,,,,,表示。

3.要能过滤圆弧,长圆形。

我自己的源码目前只能统计数量,还达不到上述效果。请教高手该如何解决!

http://v1.freep.cn/3tb_1411122315053su1512293.jpg

(defun c:tjj()
(setvar "cmdecho" 0)
(setvar "osmode" 1)
(command "osnapcoord" 2)
(command "ucs" "w")
(command "layer" "s" "txt" "")
(setq p4 (getpoint "\n 请输入图框左下角:"))
(setq p5 (getpoint "\n 请输入图框右上角:"))
(setq p1 (getpoint "\n 请输入要统计的左下角:"))
(setq x1 (car p1) y1 (cadr p1))
(setq p0 (getpoint "\n 请输入要统计的右上角:"))
(setq p3 (getpoint "\n 请输入统计文字位置:"))
(setq x4 (car p4) x5 (car p5))
(setq w (- x5 x4))
(setq h (* (/ w 280) 2))
(setq p8 (getpoint "\n 请输入座标放置位置:"))
(setq p9 (polar p8 0 (* 4 h)))
(setq p10 (polar p8 0 (* 14 h)))
(setq p11 (polar p8 0 (* 22 h)))
(setq p12 (polar p8 (* 1.5 pi) h))
(setq p13 (polar p11 (* 1.5 pi) h))
(command "line" p12 p13 "" "")
(setvar "osmode" 0)
(command "text" "ml" p9 h 0 "X")
(command "text" "ml" p10 h 0 "Y")
(setq txt "ABCDEFGHIJKLMNOPQ")
(setq ss (ssget "w" p1 p0 '((-4 . "<or") (0 . "arc") (0 . "circle") (-4 . "or>"))))
(setq i 1)
(setq pt p3)
(while ss
   (setq en (ssname ss 0))
   (setq end (entget en))
   (setq rad (+ (cdr (assoc 40 end)) 0.000))
   (setq pci (cdr (assoc 0 end)))
   (setq d (rtos (* 2 rad)))
   (setq ssa (ssget "w" p1 p0 (list (cons 40 rad) (cons 0 pci))))
   (setq nn (sslength ssa))
   (setq stxt (substr txt i 1))
   (setq m 0)
   (setq x 0)
       (repeat nn
          (setq een (ssname ssa m))
          (setq eend (entget een))
          (setq cen (cdr (assoc 10 eend)))
          (setq xxx (- (+ 0.000 (car cen)) x1))
          (setq yyy (- (+ 0.000 (cadr cen)) y1))
          (setq xxxt (rtos xxx))
          (setq yyyt (rtos yyy))
          (setq ssb (ssget "x" (list (cons 10 cen))))
          (setq nnn (sslength ssb))
            (if (= nnn 2)
               (progn
               (setq f (ssname ssb 0))
               (setq g (ssname ssb 1))
               (setq fn (entget f))
               (setq gn (entget g))
               (setq radf (+ (cdr (assoc 40 fn)) 0.000))
               (setq radg (+ (cdr (assoc 40 gn)) 0.000))
               (setq radma (max radf radg))
               (setq radmi (min radf radg))
               (setq p2 (polar cen (* 1.75 pi) (+ 4 radma)))
               (if (= rad radf) (setq ss (ssdel g ss)) (setq ss (ssdel f ss)))
               (if (= rad radf) (setq hn fn) (setq hn gn))
               (setq ty (cdr (assoc 0 hn)))
               (setq dma (rtos (* 2 radma)))
               (setq dmi (rtos (* 2 radmi)))
               (if (= ty "CIRCLE") (setq sssstxt (strcat " %%c" dma "<CB>")) (setq sssstxt (strcat " M" dma)))
               (setq ssstxt (strcat "-%%C" dmi "<THR>" sssstxt))
               )
               (setq p2 (polar cen (* 1.75 pi) (+ 3 rad))
                     ssstxt (strcat "-%%C" (rtos (* 2 rad) 2 3) "<THR>"))
            )
          (setq x (+ 1 x))
          (setq xt (itoa x))
          (setq xtxt (strcat stxt xt))
          (setq xxxxt (strcat xtxt ":"))
          (command "text" "ml" p2 h 0 xtxt)
          (setq p8 (polar p8 (* 1.5 pi) (* 2 h)))
          (setq p9 (polar p9 (* 1.5 pi) (* 2 h)))
          (setq p10 (polar p10 (* 1.5 pi) (* 2 h)))
          (setq p11 (polar p11 (* 1.5 pi) (* 2 h)))
          (command "line" (polar p8 (* 1.5 pi) h) (polar p11 (* 1.5 pi) h) "" "")
          (command "text" "ml" p8 h 0 xxxxt)
          (command "text" "ml" p9 h 0 xxxt)
          (command "text" "ml" p10 h 0 yyyt)
          (setq ss (ssdel een ss))
          (setq m (+ 1 m))
         )
   (setq sstxt (strcat stxt " : " (itoa nn) ssstxt))
   (command "text" "ml" pt h 0 sstxt)
   (setq i (+ i 1))
   (setq pt (polar pt (* 1.5 pi) (* 1.5 h)))
   )
(setvar "osmode" 7)
(prinl)
)

   

SunSpring 发表于 2014-11-14 14:13:25

lengxiaxi 发表于 2014-11-14 13:56 static/image/common/back.gif
亲,我试用了你的程序,有表格出来,但是没有任何字符列出来啊!!!!亲看看怎么回事?测试环境 autoCAD ...

(defun maketext (locationpoint textheight text rowtype)
;(makestyle "工程图" "hztxt_e.shx" "hztxt.shx" 0.8)
(entmake (list '(0 . "TEXT")
               '(100 . "AcDbText") (cons 40 textheight)
               (cons 1 text)
               (cons 72 rowtype)
               '(10 0.0 0.0 0.0)
               (cons 11 locationpoint)
               '(73 . 2) ;'(7 . "工程图")
           )
)
)

按照上面的注释掉,再试试看

sjj 发表于 2017-9-11 20:07:11

SunSpring 发表于 2014-11-13 18:52
很早之前写的,有需要的下载看看吧。可自动识别沉头孔和螺纹孔。选择的左下角点为原点。

** 形 53 未定义
** 形 55 未定义
** 形 53 未定义
** 形 53 未定义
** 形 55 未定义
** 形 53 未定义
** 形 53 未定义
** 形 55 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 49 未定义
** 形 74 未定义
** 形 49 未定义
** 形 49 未定义
** 形 58 未定义
** 形 49 未定义
** 形 48 未定义
** 形 53 未定义
** 形 55 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 58 未定义
** 形 49 未定义
** 形 49 未定义
** 形 57 未定义
** 形 48 未定义
** 形 49 未定义
** 形 49 未定义
** 形 57 未定义
** 形 48 未定义
** 形 49 未定义
** 形 49 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 74 未定义
** 形 49 未定义
** 形 50 未定义
** 形 58 未定义
** 形 49 未定义
** 形 49 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 58 未定义
** 形 49 未定义
** 形 48 未定义
** 形 49 未定义
** 形 48 未定义
** 形 49 未定义
** 形 48 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 74 未定义
** 形 49 未定义
** 形 51 未定义
** 形 58 未定义
** 形 49 未定义
** 形 48 未定义
** 形 56 未定义
** 形 50 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 58 未定义
** 形 49 未定义
** 形 49 未定义
** 形 48 未定义
** 形 48 未定义
** 形 49 未定义
** 形 49 未定义
** 形 48 未定义
** 形 48 未定义
** 形 49 未定义
** 形 49 未定义
** 形 48 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 74 未定义
** 形 49 未定义
** 形 52 未定义
** 形 58 未定义
** 形 49 未定义
** 形 49 未定义
** 形 48 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 58 未定义
** 形 56 未定义
** 形 53 未定义
** 形 48 未定义
** 形 56 未定义
** 形 53 未定义
** 形 48 未定义
** 形 56 未定义
** 形 53 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 74 未定义
** 形 49 未定义
** 形 53 未定义
** 形 58 未定义
** 形 56 未定义
** 形 53 未定义
** 形 48 未定义
** 形 56 未定义
** 形 57 未定义
** 形 48 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 58 未定义
** 形 74 未定义
** 形 49 未定义
** 形 54 未定义
** 形 58 未定义
** 形 54 未定义
** 形 48 未定义
** 形 48 未定义
** 形 54 未定义
** 形 48 未定义
** 形 48 未定义
** 形 54 未定义
** 形 48 未定义

583775698 发表于 2018-7-23 22:43:30

试了一下效果不错就是太贵了要2个明经币

lengxiaxi 发表于 2014-11-12 23:22:17

http://v1.freep.cn/3tb_1411122315053su1512293.jpg

lengxiaxi 发表于 2014-11-12 23:22:57

http://v1.freep.cn/3tb_1411122315053su1512293.jpg

lpl 发表于 2014-11-13 10:40:25

支持下你

SunSpring 发表于 2014-11-13 18:52:28

本帖最后由 SunSpring 于 2014-11-15 17:52 编辑



很早之前写的,有需要的下载看看吧。可自动识别沉头孔和螺纹孔。选择的左下角点为原点。


lengxiaxi 发表于 2014-11-13 23:54:22

虽然收币,但也应该,毕竟源码。我的币只有五个,还是买了!试试看!谢谢!

lengxiaxi 发表于 2014-11-14 13:55:00

SunSpring 发表于 2014-11-13 18:52
很早之前写的,有需要的下载看看吧。

亲,我试用了你的程序,有表格出来,但是没有任何字符列出来啊!!!!亲看看怎么回事?测试环境 autoCAD2004,有VB,c++。

lengxiaxi 发表于 2014-11-14 13:56:07

SunSpring 发表于 2014-11-13 18:52
很早之前写的,有需要的下载看看吧。

亲,我试用了你的程序,有表格出来,但是没有任何字符列出来啊!!!!亲看看怎么回事?测试环境 autoCAD2004,有VB,c++。

photo_cup 发表于 2014-11-14 21:49:37

SunSpring 发表于 2014-11-13 18:52 static/image/common/back.gif
很早之前写的,有需要的下载看看吧。

这个圆心坐标,不知道能不能统计圆大小和数量....谢谢
页: [1] 2 3 4
查看完整版本: 统计圆数量并列表