freeok 发表于 2015-11-29 19:53:37

434939575 发表于 2015-11-29 19:39 static/image/common/back.gif


先修改为中间对齐,然后画完圈再改回来?

434939575 发表于 2015-11-29 19:57:16

这样子,不知道你的意思

琴剑江山_10184 发表于 2015-11-29 20:19:58

本帖最后由 琴剑江山_10184 于 2015-11-29 20:22 编辑

(defun C:JQ (/ A B DD EN ENT LEN OS P1 P2 PL PP SS)
(setvar "cmdecho" 0)
(setq os (getvar 'osmode))
(setvar 'osmode 0)
(setq dd (getdist "\n 输入字间与圆周距离<2>: "))
(if (null dd)
    (setq dd 2.0)
)
(setqss(ssget '((0 . "TEXT")))
Len (sslength ss)
)
(repeat Len
    (setq en (ssname ss (setq Len (1- Len))))      
    (vl-cmdf "ucs" "OB" en)
    (setq ent (entget en)
          pp(textbox ent)
          p1(car pp)
          p2(cadr pp)
          pL(mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2)
          dr(+ (/ (distance p1 p2) 2) dd)
    )
    (command "circle" pL dr)
)
(vl-cmdf "ucs" "W")
(setvar 'osmode os)
(prin1)
)






zdqwy19 发表于 2015-11-29 20:26:38

本帖最后由 zdqwy19 于 2015-11-29 20:45 编辑

freeok 发表于 2015-11-29 19:11 static/image/common/back.gif
这个也有问题了,第一圈的点不对,不删除此圈,第二个就是对的了
看看这样改(defun C:tt (/ om dd ss i ssn ssdata box p1 p2 p3)
(setvar "cmdecho" 0)
(setq om (getvar "osmode"))
(setvar "osmode" 0)
(setq dd (getdist "\n 输入字间与圆周距离<2>:")) ;
(if (null dd)
    (setq dd 2.0)
    dd
)
(setq ss (ssget))
(setq i 0)
(repeat (sslength ss)
    (setq ssn (ssname ss i))
    (setq ssdata (entget ssn))
    (if      (= (cdr (assoc 0 ssdata)) "TEXT")
      (progn (command "ucs" "ob" ssn)
             (setq box (textbox ssdata)) ;取得文字外框坐标
             (setq p1 (car box))
             (setq p3 (cadr box))
             (setq p2 (list (car p3) (cadr p1) 0.0))
      (command "circle" "3p" p1 p2 p3)
      (command "offset" "e" "y" dd (entlast) '(9999999999999999. 9999999999999999. 0.) "")
            (command "ucs" "p")
      )
    )
    (setq i (1+ i))
)
(setvar "osmode" om)
(prin1)
)

llsheng_73 发表于 2015-11-29 21:32:09

本帖最后由 llsheng_73 于 2015-11-29 21:36 编辑

(defun c:JQ(/ i ss dd en p1)
(setq dd(if(setq dd(getdist "\n 输入字间与圆周距离<2>: "))dd 2))
(if(setq i -1 ss(ssget'((0 . "text"))))
   (repeat (sslength ss)
   (entmakex(cons'(0 . "circle")
   (mapcar'cons'(10 40)(setq i(1+ i)en(entget(ssname ss i))p1(textbox en)
         p1(list(mapcar'+(cdr(assoc 10 en))(mapcar'*'(0.5 0.5)(apply'mapcar(cons'+ p1))))
         (+(*(apply'distance p1)0.5)dd)))))))))

freeok 发表于 2015-11-29 22:53:27

zdqwy19 发表于 2015-11-29 20:26 static/image/common/back.gif
看看这样改

谢谢兄台,可以用,但是LLSHENG大神的更简洁,可以学习下

freeok 发表于 2015-11-29 23:15:05

llsheng_73 发表于 2015-11-29 21:32 static/image/common/back.gif


谢谢大神出手,非常感谢!

lcxing 发表于 2015-12-4 07:49:53

改好的 发上来呗 大侠

haotaer 发表于 2016-2-25 17:15:26

高,这个真的还有
高,这个真的还有

dabingrain 发表于 2016-4-18 14:11:46

)
页: 1 [2] 3
查看完整版本: 文字加圈,出错了!循环不了。。。求助!