ZZXXQQ 发表于 2011-5-7 12:03:49

给个试验程序。
思路:
将所选物体打上水平剖面线后炸开;
在每个物体内的最长直线中点画小圆。

;在最大位置画小圆 明经 ZZXXQQ 2011.5.7
(defun c:tt ()
(setvar "CMDECHO" 0)
(command ".UNDO" "BE")
(if (setq ss (ssget '((0 . "LWPOLYLINE")))) (progn
(setq i 0)
(command "HATCH" "U" 0 1 "" ss "" ".EXPLODE" "L")
(repeat (sslength ss)
   (setq ent (entget(ssname ss i)))
   (setq plst (list))
   (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
   (setq ss1 (ssget "CP" plst '((0 . "LINE"))))
   (setq j 0 maxdst -1e10)
   (repeat (sslength ss1)
    (setq ent (entget(ssname ss1 j))
          pt1 (cdr(assoc 10 ent))
          pt2 (cdr(assoc 11 ent))
          dst (distance pt1 pt2))
    (if (> dst maxdst)
   (setq maxdst dst ptm (polar pt1 (angle pt1 pt2) (/ dst 2)))
    )
    (setq j (1+ j))
   )
   (command ".ERASE" ss1 "" ".CIRCLE" ptm 1)
   (setq i (1+ i))
)
))
(command ".UNDO" "E")
(setvar "CMDECHO" 1)
(princ)
)

3527188 发表于 2011-5-7 12:27:54

终于有人出招啦

3527188 发表于 2011-5-7 12:33:38

呵呵···试了下程序上图。

3527188 发表于 2011-5-7 12:34:33

这个程序应该需要算法才能出来的

panliang9 发表于 2011-5-7 19:45:04

闭合轮廓然后往中间偏移行不行!
将外围轮廓闭合,然后往中间一层层偏移,最后会在里面形成几处中心,然后那一处偏移的层数最多,就以那一处为中心画圆。

3527188 发表于 2011-5-8 00:11:37

本帖最后由 3527188 于 2011-5-8 00:17 编辑

panliang9 发表于 2011-5-7 19:45 http://space.mjtd.com/static/image/common/back.gif
闭合轮廓然后往中间偏移行不行!
将外围轮廓闭合,然后往中间一层层偏移,最后会在里面形成几处中心,然后 ...

呵呵···开贴我就说明了是闭合的多段线,这个办法可以试试
页: 1 [2]
查看完整版本: 超级难题