程序如下:
(princ "平面变系统")
(princ "
*^_^* ")
(defun c:lo()
(setq p0(getpoint "
选取系统点")
p1(getpoint"
选取顶层其点")
cir1(ssget ’((0 . "circle")));选取立管
lin1(ssget ’((0 . "line")));选取线
cir_n(sslength cir1)
lin_n(sslength lin1)
n1 -1
n2 -1)
(if(<= cir_n lin_n)
(progn
(repeat cir_n
(setq cir_nam(ssname cir1 (+ n1 1))
cir_p1(cdr(assoc 10 (entget cir_nam))))
(setq lin_n1 0)
(while (< lin_n1 lin_n)
(setq lin_n1(+ lin_n1 1))
(setq lin_nam(ssname lin1 (+ n2 1))
lin_p1(cdr(assoc 10 (entget lin_nam))))
(if(<(distance cir_p1 lin_p1)110) ;判别圆内是否有直线 有1,无2
(progn
(setq or1 1)
(setq lin_n1 (+ lin_n 1))
(command "copy" lin_nam """m" cir_p1 p0"")
)
(progn
(setq or1 2)))
)
(princ or1)
(if(= or1 1)
(princ"
直线上")
(princ "
拐弯了"))
)
;(setq p0 ’((+(car p0) 3000)(cadr p0)0.0))
))
)
步骤:
1)平面取一点
2)取(某一)平面图中所有立管(即圆)
3)再取此平面中的排水横管
思路:根据立管是否有引出管线(或引入管)生成系统。
情况1)立管位置无引出或引入管,在图中相应位置生成上引或下引约3.0米的直线;
情况2)有引出管(圆边连有管线),copy出所连管线(可能不止一条)到图的其它相应位置,转成系统图式,且上引直线;有管线连到圆内的,下引直线。就此生成系统图。
以上程序存在问题:无法识别哪个立管连有管线,哪个没有。请哪位高手帮忙分析一下,在此谢过了!!
全部回复(16 )
只看楼主 我来说两句回复 举报
我本人多用天正的,
没想到高人们多是自己编程的呀!!
回复 举报