my_autocad 发表于 2009-5-20 23:48:00

[求助]选择几个块,自动PL线连接块的插入点

<p>选择几个块,自动PL线连接块的插入点</p><p>做植物设计时,标注乔木会花费大量的时间。</p><p>一般来说,乔木都会定义为块,框选几个块后,生成PL线连接这些块的插入点呢?</p>

xxwc521 发表于 2020-3-5 23:39:20

这是个好程序我也想要看看源码

neonhex 发表于 2019-4-9 10:53:36

太666666了这是现在急需的呀……

77077 发表于 2009-5-21 12:57:00

关注中

ljttjl 发表于 2009-5-21 19:37:00

<p>传一个例图上来看看,另外用pl线连接插入点是否有顺序要求?</p>

my_autocad 发表于 2009-5-21 20:46:00

<p></p><p>例图已传上来了,顺便从最近的一个一个连接吧,到最后生成一根水平的线及图名和数量</p>

my_autocad 发表于 2009-5-21 20:49:00

<p></p><p>JPG图像已上传,连接顺序挺不好确定的!这个程序还要考虑出图比例,分层之类。还是挺麻烦的,对于我来说</p>

ZZXXQQ 发表于 2009-5-22 13:20:00


;同名块连线 明经 ZZXXQQ 2008.8.23 2009.5.22
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\nSelect a block :"))
         (setq ent (entget(car S1)))
   (= (cdr(assoc 0 ent)) "INSERT"))
(if (setq ss (ssget (list '(0 . "INSERT") (assoc 2 ent)))) (progn
   (setq j -1 ptlst (list) nn (sslength ss)
         bnm (strcat (cdr(assoc 2 ent)) " (" (itoa nn) ")"))
   (repeat nn
    (setq ent (entget(ssname ss (setq J (1+ J))))
          ptlst (cons (cdr(assoc 10 ent)) ptlst))
   )
   (setq pt (getpoint "\nNear Start Point :") pt0 pt i 1 k nil
         dst (distance pt0 (car ptlst)) ln (length ptlst))
   (repeat (1- ln)
    (setq pt1 (nth i ptlst))
    (if (< (distance pt0 pt1) dst) (setq dst (distance pt0 pt1) k i))
    (setq i (1+ i))
   )
;   (print ptlst) (princ k)
   (if k
    (setq pt0 (nth k ptlst)
          ptmp (list pt0)
          ptlst (append
    (reverse (cdr(member pt0 (reverse ptlst)))) (cdr(member pt0 ptlst))))
   )
;   (print ptmp) (print ptlst)
   (while (> (length ptlst) 1)
    (setq dst (distance (car ptlst) pt0) j 1 k nil)
(while (< j (1- (length ptlst)))
(setq pt1 (nth j ptlst))
(if (< (distance pt0 pt1) dst) (setq dst (distance pt0 pt1) k j))
(setq j (1+ j))
)
(if k
(setq pt0 (nth k ptlst) ptmp (append ptmp (list pt0))
      ptlst (append
      (reverse(cdr(member pt0 (reverse ptlst)))) (cdr(member pt0 ptlst))))
   (setq pt0 (car ptlst) ptmp (append ptmp (list pt0)) ptlst (cdr ptlst))
)
; (print ptmp) (print ptlst)
   )
   (setq ptlst (append ptmp ptlst))
   (setq i 0)
   (command ".TEXT" "S" "STYLE1" (polar (polar (car ptlst) 0 5) (/ pi 2) 1) 3 0 bnm)
   (command ".PLINE" (polar (car ptlst) 0 35) (car ptlst))
   (repeat (1- (length ptlst))
    (command (nth (setq i (1+ i)) ptlst))
   )
   (command "")
))
)
(setvar "CMDECHO" 1)
(princ)
)

samshs 发表于 2009-5-22 20:55:00

高!學習中

my_autocad 发表于 2009-5-23 21:17:00

<p><strong><font face="Verdana" color="#da2549">ZZXXQQ的程序试用了,块的插入点能联结。但生成的PL线在某些时候有交点,如果生成的PL线没有交点就好了。这也是标注的标准之一</font></strong></p><p><strong><font face="Verdana" color="#da2549">非常感谢ZZXXQQ</font></strong></p>

ljttjl 发表于 2009-5-26 20:25:00

<p>程序演示:</p><p></p>

zjhimdac 发表于 2009-7-30 12:42:00

wo ye kan kan
页: [1] 2 3
查看完整版本: [求助]选择几个块,自动PL线连接块的插入点