发布于:2009-07-20 18:44:20
来自:建筑设计/CAD下载及教程
[复制转发]
绘制弯头的,程序如下
(defun c:wt50 ()
(wt_draw 90 50)
)
(defun c:wt70 ()
(wt_draw 100 70)
)
(defun c:wt80 ()
(wt_draw 130 80)
)
(defun c:wt100 ()
(wt_draw 160 100)
)
(defun c:wt125 ()
(wt_draw 185 125)
)
(defun c:wt150 ()
(wt_draw 210 150)
)
(defun c:wt200 ()
(wt_draw 260 200)
)
(defun c:wt250 ()
(wt_draw 260 250)
)
(defun c:wt300 ()
(wt_draw 260 300)
)
(defun c:wt350 ()
(wt_draw 300 350)
)
(defun c:wt400 ()
(wt_draw 350 400)
)
(defun c:wt450 ()
(wt_draw 400 450)
)
(defun c:wt500 ()
(wt_draw 450 500)
)
(defun c:wt600 ()
(wt_draw 490 600)
)
(defun c:wt700 ()
(wt_draw 540 700)
)
(defun c:wt800 ()
(wt_draw 640 800)
)
(defun c:wt900 ()
(wt_draw 680 900)
)
(defun c:wt1000 ()
(wt_draw 730 1000)
)
;;;根据输入的弯头半径和管道直径,绘制弯头。
(defun wt_draw (wt_bj wt_gdbj / selecta pointa
pointa1 pointa2 xjla selectb pointb
pointb1 pointb2 xjlb xjlc
)
(if (= plot_scale nil)
;;;调用绘图比例程序
(fun_plot_scale)
)
(setq selecta (select_point))
(setq pointa (cadr selecta))
(setq pointa1 (caddr selecta))
(setq pointa2 (cadddr selecta))
(entmake
(list '(0 . "LINE") (cons 10 pointa1) (cons 11 pointa2))
)
(setq xjla (entlast))
(setq selectb (select_point))
(setq pointb (cadr selectb))
(setq pointb1 (caddr selectb))
(setq pointb2 (cadddr selectb))
(entmake
(list '(0 . "LINE") (cons 10 pointb1) (cons 11 pointb2))
)
(setq xjlb (entlast))
(command "fillet" "r" wt_bj)
(command "fillet" xjla xjlb)
(setq xjlc (entget (entlast)))
(entdel xjla)
(entdel xjlb)
(wt_draw1 xjlc wt_gdbj)
(princ)
)
;;;;;根据圆弧xjlc和管道半径rad1绘制弯头。
(defun wt_draw1 (wt-arc rad1)
(entmake
(subst (cons 40 (- (cdr (assoc 40 wt-arc)) (/ rad1 2.0)))
(assoc 40 wt-arc)
wt-arc
)
)
(command "pedit" (entlast) "y" "w" (* 0.5 plot_scale) "")
(entmake
(subst (cons 40 (+ (cdr (assoc 40 wt-arc)) (/ rad1 2.0)))
(assoc 40 wt-arc)
wt-arc
)
)
(command "pedit" (entlast) "y" "w" (* 0.5 plot_scale) "")
(princ)
)
;;;;;判断圆弧及绘制圆弧的子程序,保证圆弧小于180度角。
;;本子程序暂时无用.
(defun wt_draw2 (wt_centerpoint wt_firstpoint wt_secondpoint)
(setq a (angle wt_centerpoint wt_firstpoint))
(setq b (angle wt_centerpoint wt_secondpoint))
(if (or (and (< (- a b) 0) (< (- a b) (* pi -1)))
(and (> (- a b) 0) (< (- a b) pi))
)
(progn
(setq c wt_firstpoint)
(setq wt_firstpoint wt_secondpoint)
(setq wt_secondpoint c)
)
)
(command "arc" "c" "non" wt_centerpoint "non" wt_firstpoint
wt_secondpoint)
)
全部回复(2 )
只看楼主 我来说两句抢地板回复 举报
(defun c:gd50 ()
(wt_zgd 50)
)
(defun c:gd70 ()
(wt_zgd 70)
)
(defun c:gd80 ()
(wt_zgd 80)
)
(defun c:gd100 ()
(wt_zgd 100)
)
(defun c:gd125 ()
(wt_zgd 125)
)
(defun c:gd150 ()
(wt_zgd 150)
)
(defun c:gd200 ()
(wt_zgd 200)
)
(defun c:gd250 ()
(wt_zgd 250)
)
(defun c:gd300 ()
(wt_zgd 300)
)
(defun c:gd400 ()
(wt_zgd 400)
)
(defun c:gd500 ()
(wt_zgd 500)
)
(defun c:gd600 ()
(wt_zgd 600)
)
(defun c:gd700 ()
(wt_zgd 700)
)
(defun c:gd800 ()
(wt_zgd 800)
)
(defun c:gd900 ()
(wt_zgd 900)
)
(defun c:gd1000 ()
(wt_zgd 1000)
)
;;;根据输入的管道直径,绘制双线直管。
(defun wt_zgd (gd_zj / selecta pointa pointa1 pointa2)
(if (= plot_scale nil)
;;;调用绘图比例程序
(fun_plot_scale)
)
(setq selecta (select_point))
(setq pointa (cadr selecta))
(setq pointa1 (caddr selecta))
(setq pointa2 (cadddr selecta))
(entmake
(list '(0 . "LINE")
(cons 10
(polar pointa1
(+ (angle pointa1 pointa2) (/ pi 2.0))
(/ gd_zj 2.0)
)
)
(cons 11
(polar pointa2
(+ (angle pointa1 pointa2) (/ pi 2.0))
(/ gd_zj 2.0)
)
)
)
)
(command "pedit" (entlast) "y" "w" (* 0.5 plot_scale) "")
(entmake
(list '(0 . "LINE")
(cons 10
(polar pointa1
(- (angle pointa1 pointa2) (/ pi 2.0))
(/ gd_zj 2.0)
)
)
(cons 11
(polar pointa2
(- (angle pointa1 pointa2) (/ pi 2.0))
(/ gd_zj 2.0)
)
)
)
)
(command "pedit" (entlast) "y" "w" (* 0.5 plot_scale) "")
(princ)
)
回复 举报