| 写好了, 试试
 
 处理了你2.rar里面的第一个图,都炸开后,执行TT,总共210个标注。执行命令前,记得把你们那个尺寸标注样式1-30给拷贝到图中来,否则生成的尺寸没有圆箭头。
 
 
 
   
 
 附件是处理好的图
 
 
 
 
 (defun c:tt (/ #endpoint #startpoint ang bdim box center dstyle eline height
               k p1 p2 pnts ss ss1 ss2 ss3 ss5 strpnts tf txt v1 v2 x
               xdimpnt xdims y
            )
  (defun _ssadd (ss5 ss)
    (mapcar
      '(lambda (x)
         (ssadd x ss5)
       )
      (xdrx_pickset->ents ss)
    )
  )
  (defun _process1 (ss3)
    (mapcar
      '(lambda (x)
         (setq pnts (xdrx_getpropertyvalue x "vertices")
               v2 (mapcar
                    '-
                    (cadr pnts)
                    (car pnts)
                  )
               v2 (xdrx_vector_normalize v2)
         )
         (if (equal (/ pi 2.0) (abs (xd::geom:angleformat
                                                          (xdrx_vector_angle v1 v2)
                                    )
                               ) 1e-3
             )
           (progn
             (if (and
                   (xdrx_entity_intersectwith x ss2)
                   (< (length xdimpnt) 2)
                   (vl-every '(lambda (y)
                                (xdrx_getpropertyvalue y "startpoint"
                                                       "endpoint"
                                )
                                (and
                                  (not (equal (xdrx_point_dist2line
                                                                    (car pnts) #startpoint #endpoint
                                              ) 0 1
                                       )
                                  )
                                  (not (equal (xdrx_point_dist2line
                                                                    (cadr pnts) #startpoint #endpoint
                                              ) 0 1
                                       )
                                  )
                                )
                              ) xdims
                   )
                 )
               (progn
                 (setq xdims (cons x xdims))
                 (if (vl-position (car pnts) (list p1 p2))
                   (setq xdimpnt (cons (cadr pnts) xdimpnt)
                   )
                   (setq xdimpnt (cons (car pnts) xdimpnt))
                 )
               )
             )
           )
         )
       )
      (xdrx_pickset->ents ss3)
    )
    xdimpnt
  )
  (defun _process (x)
    (setq box (xdrx_entity_box x)
          center (xd::geom:get9pt x 5)
          height (xdrx_getpropertyvalue x "textheight")
          txt (xdrx_getpropertyvalue x "textstring")
          box (xdrx_points_offset 30.0 (xd::pnts:close box))
          eline nil
    )
    (if (and
          (if (xdrx_string_regexps "^[0-9.]+$" txt)
            (setq ss1 (ssget "cp" box '((0 . "LINE"))))
          )
        )
      (progn
        (mapcar
          '(lambda (x)
             (if (equal (xdrx_getpropertyvalue x "length") (atof txt) 1)
               (setq eline x)
             )
           )
          (xdrx_pickset->ents ss1)
        )
        (if eline
          (progn
            (setq p1 (xdrx_getpropertyvalue eline "startpoint")
                  p2 (xdrx_getpropertyvalue eline "endpoint")
                  v1 (mapcar
                       '-
                       p2
                       p1
                     )
                  v1 (xdrx_vector_normalize v1)
                  ang (xd::geom:angleformat (angle p1 p2))
            )
            (if (setq ss2 (ssget "f" (list p1 p2) '((0 . "CIRCLE"))))
              (progn
                (if (setq ss3 (ssget "f" (list p1 p2) '((0 . "LINE"))))
                  (progn
                    (ssdel eline ss3)
                    (setq xdimpnt nil
                          xdims nil
                    )
                    (setq xdimpnt (_process1 ss3))
                    (if (= (length xdimpnt) 2)
                      (progn
                        (_ssadd ss5 ss2)
                        (ssadd x ss5)
                        (_ssadd ss5 ss3)
                        (if (xdrx_object_get "dimstyle" "1-30")
                          (setq dstyle "1-30")
                          (setq dstyle "iso-25")
                        )
                        (xdrx_dimension_makerotate (car xdimpnt)
                                                   (cadr xdimpnt) p1 ang
                                                   dstyle
                        )
                        (setq k (1+ k))
                        (setq bdim t)
                        (setq strpnts (xdrx_entity_getstretchpoint
                                                                   (entlast)
                                      )
                        )
                        (if (> (distance (last strpnts) center) (/ height
                                                                   2.0
                                                                )
                            )
                          (xdrx_entity_movestretchpoint (entlast)
                                                        (mapcar
                                                          '-
                                                          center
                                                          (last strpnts)
                                                        ) 4
                          )
                        )
                      )
                    )
                  )
                )
              )
            )
          )
        )
      )
    )
  )
  (xdrx_begin)
  (xdrx_initssget "\n选取组合成标注的数字<全选>:")
  (if (or
        (setq ss (xdrx_ssget '((0 . "*TEXT") (1 . "*[0-9]*"))))
        (setq ss (xdrx_ssget "X" '((0 . "*TEXT") (1 . "*[0-9]*"))))
      )
    (progn
      (setq ss5 (ssadd)
            bdim nil
      )
      (setq tf (xd::doc:safezoom ss))
      (setq k 0 kk 0)
      (xdrx_statusbar_begin "处理中" (sslength ss))
      (mapcar
        '(lambda (x)
           (_process x)
           (setq kk (1+ kk))
           (xdrx_statusbar_setpos kk)
         )
        (xdrx_pickset->ents ss)
      )
      (xdrx_statusbar_end)
      (xdrx_entity_delete ss5)
      (xdrx_prompt "\n生成了" k "个尺寸标注.")
      (if tf
        (xdrx_document_zoomprevious)
      )
    )
    (xdrx_prompt "\n图中没有符合条件的数字文本.")
  )
  (xdrx_end)
  (princ)
)
 |