alex0007 发表于 2007-7-20 11:08:00

这个问题最大的难度应该在于求最近距离上面了...算法对我来说太深..搞不来.

ZZXXQQ 发表于 2007-7-20 11:22:00


(DEFUN C:TEST ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(PRINC "\nSelect a Block :")
(IF (SETQ SS (SSGET '((0 . "INSERT")))) (PROGN
(SETQ BNM (ASSOC 2 (ENTGET (SSNAME SS 0)))
S1 (SSGET "X" (LIST '(0 . "INSERT") BNM)))
(SETQ I -1 PTL (LIST))
(REPEAT (SSLENGTH S1)
   (SETQ PTL (CONS (CDR (ASSOC 10 (ENTGET (SSNAME S1 (SETQ I (1+ I)))))) PTL))
)
(SETQ PTL (REVERSE PTL) I -1 TMP (LIST)
PT1 (LIST 0 0) PSL (LENGTH PTL))
(WHILE (< I (- PSL 2))
   (SETQ J I DIS 1E8 K nil)
   (WHILE (< J (1- PSL))
    (SETQ PT2 (NTH (SETQ J (1+ J)) PTL) DS1 (DISTANCE PT2 PT1))
    (IF (< DS1 DIS) (SETQ DIS DS1 K J))
   )
   (IF K
    (SETQ PT (NTH (SETQ I (1+ I)) PTL) PT1 (NTH K PTL)
   PTL (SUBST (LIST 'AA) PT1 PTL)
   PTL (SUBST PT1 PT PTL)
   PTL (SUBST PT (LIST 'AA) PTL))
    (SETQ I (1+ I))
   )
)
(SETVAR "OSMODE" 0)
(SETQ I 0)
(COMMAND "PLINE" (NTH 0 PTL))
(REPEAT PSL
   (SETQ PT (NTH (SETQ I (1+ I)) PTL))
   (COMMAND PT)
)
(COMMAND "")
))
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(PRINC)
)

carrot1983 发表于 2007-7-20 11:52:00

好东西。!!!!收藏

userzhl 发表于 2007-7-20 14:44:00

<p>非常感谢12楼的版主,这正是我所要的程序!</p><p>您可不可以再帮我看看这个问题:</p><p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61659">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61659</a></p>

yuanquan222 发表于 2013-12-6 12:36:00

z版大大,希望你能改变算法,能框选区域,只连线这个区域内的这个图块。

wudi 发表于 2013-12-7 12:39:09

好像记的以前论坛此版块里有过相关的话题,有源码的,并且连完的线是多段线
页: 1 [2]
查看完整版本: [求助]哪位高手请帮忙看看,做出这样一个程序