junxan 发表于 2016-10-17 22:33:19

求助:如何批量将多段线(或直线)连成的圆形转换成圆

本帖最后由 junxan 于 2016-10-18 00:29 编辑

本人不懂cad,向各位大师求助:
1、如何批量将多段线(或者直线)连接成的圆,转换成圆。圆的大小与原图基本相近,位置基本不变就行;
2、圆圈内的单个数字合并到一起,数字的角度(方向)不变;
3、自动删除这些多段线或直线。



Atsai 发表于 2016-10-20 16:56:39



;;碎线转圆,弧
(defun c:test (/ ss s1 ss2)
(vl-load-com)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq ps (getvar "peditaccept"))
(setvar "peditaccept" 1)
(setq ss (ssget '((0 . "LINE"))))

(if ss
    (progn
      (setq s1 (entlast))
      (setq ss2 (ssadd))
      (command "pedit" "m" ss "" "j" "" "")
      (while (setq s1 (entnext s1))
(ssadd s1 ss2)
      )
      
      (setq l (sslength ss2))
      (setq i 0)
      (repeat l
(setq ssn (ssname ss2 i))
(if (> (rem (cdr (assoc 70 (entget ssn))) 2) 0)
    (progn
      (command "_region" ssn "")
      (setq en2 (entlast))
      (setq obj2 (vlax-ename->vla-object en2))
      (setq area (vla-get-Area obj2))
      (setq ptc (vlax-safearray->list
      (vlax-variant-value (vla-get-centroid obj2))
          )
      )
      (setq radius (sqrt (/ area pi)))
      (command "_circle" ptc radius)
      (entdel en2)
    )
    (progn
      (setq obj1 (vlax-ename->vla-object ssn))
      (setq pts (vlax-curve-getstartpoint obj1))
      (setq pte (vlax-curve-getendpoint obj1))
      (setq dis (vlax-curve-getdistAtPoint obj1 pte))
      (setq ptm (vlax-curve-getpointatdist obj1 (* dis 0.5)))
      (command "_arc" pts ptm pte)
      (entdel ssn)
    )
)
(setq i (1+ i))
      )
    )
)
(setvar "peditaccept" ps)
(setvar "osmode" os)
(princ)
)

自贡黄明儒 发表于 2016-10-18 07:59:30

这个不容易。。。。。

junxan 发表于 2016-10-19 23:21:08

求助求助,继续求助

q3_2006 发表于 2016-10-20 16:06:42

junxan 发表于 2016-10-19 23:21
求助求助,继续求助

最简单方法ebox算出中心及半径...画圆就行了...

q3_2006 发表于 2016-10-20 16:07:58

看样子是软件导出来的图..原图就是圆...

淡定955 发表于 2016-10-21 10:39:21

你可以直接创建边界啊

junxan 发表于 2016-10-22 12:58:55

万分感谢Atsai,完美解决转圆的问题。

因不懂cad,更不懂编程,仅会使用些简单的Excel函数,惭愧。

论坛里找了些文字合并的代码,能做到批量把方框内的文字合并,不改变文字高度、方向,但字宽变小了(不影响我对图纸的使用)。但不能合并圆里的文字,希望哪位再帮忙写一个。

xiao88gang 发表于 2016-10-22 14:33:49

这个只能对直线起作用,为什么圆弧不能处理,能否帮忙改一下?
页: [1]
查看完整版本: 求助:如何批量将多段线(或直线)连成的圆形转换成圆