只是因为我觉得这是一个有趣的练习:
1) 当涡轮机塔架占据超过0.45度的波束角(塔架非常靠近雷达塔)时,障碍区域在涡轮机之外增加超过0.45度。(附上您的第一张图纸示例。)
“按原样”
- (defun c:rbeam (/ cp b r ln ss en ed cp d1 d2
- p0 p1 p2 p3 p4 p5 p6 p7 p8)
- (defun AtoR (a) (* pi (/ a 180.0))) ;Angle To Radian
- (defun RtoA (r) (/ (* r 180.0) pi)) ;Radian To Angle
- (initget 1)
- (setq cp (getpoint "\nRadar Beam Center Point: "))
- (initget 6)
- (setq b (getdist "\nRadar Beam Radius <22232.3>: "))
- (or b (setq b 22232.3))
- (initget 6)
- (setq r (getdist "\nTurbine Tower Diameter <2.1495>: "))
- (or r (setq r 2.1495))
- (while (or (not (snvalid ln))
- (not (tblsearch "LAYER" ln))
- (not (ssget "X" (list (cons 0 "POINT")(cons 8 ln)))))
- (setq ln (getstring "Turbine Tower Center Point Layer <AZ_PERRIN_RANCH_OPTIMIZED_>: "))
- (if (= ln "")
- (setq ln "AZ_PERRIN_RANCH_OPTIMIZED_")))
- (and (setq ss (ssget "X" (list (cons 0 "POINT")(cons 8 ln))))
- (while (setq en (ssname ss 0))
- (setq ed (entget en)
- p0 (cdr (assoc 10 ed))
- d1 (distance cp p0)
- d2 (max r (distance p0 (polar cp (+ (angle cp p0) (ator 0.225)) d1)))
- p1 (polar p0 (+ (angle cp p0) (* pi 0.5)) d2)
- p4 (polar p0 (+ (angle cp p0) (* pi -0.5)) d2)
- p2 (polar p0 (+ (angle cp p0) (* pi 0.5)) r)
- p3 (polar p0 (+ (angle cp p0) (* pi -0.5)) r)
- p5 (polar cp (angle cp p1) b)
- p6 (polar cp (angle cp p2) b)
- p7 (polar cp (angle cp p3) b)
- p8 (polar cp (angle cp p4) b))
- (entmake (list (cons 0 "POLYLINE")(cons 8 "BEAM")(list 10 0 0 0)(cons 70 1)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM")(cons 10 cp)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM")(cons 10 p1)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM")(cons 10 p2)(cons 42 1.0)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM")(cons 10 p3)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM")(cons 10 p4)))
- (entmake (list (cons 0 "SEQEND")(cons 8 "BEAM")))
- (entmake (list (cons 0 "POLYLINE")(cons 8 "BEAM_CLEAR")(list 10 0 0 0)(cons 70 1)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p5)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p6)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p2)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p1)))
- (entmake (list (cons 0 "SEQEND")(cons 8 "BEAM_CLEAR")))
- (entmake (list (cons 0 "POLYLINE")(cons 8 "BEAM_CLEAR")(list 10 0 0 0)(cons 70 1)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p8)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p7)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p3)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_CLEAR")(cons 10 p4)))
- (entmake (list (cons 0 "SEQEND")(cons 8 "BEAM_CLEAR")))
- (entmake (list (cons 0 "POLYLINE")(cons 8 "BEAM_OBSTRUCTION")(list 10 0 0 0)(cons 70 1)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_OBSTRUCTION")(cons 10 p6)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_OBSTRUCTION")(cons 10 p2)(cons 42 -1.0)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_OBSTRUCTION")(cons 10 p3)))
- (entmake (list (cons 0 "VERTEX")(cons 8 "BEAM_OBSTRUCTION")(cons 10 p7)))
- (entmake (list (cons 0 "SEQEND")(cons 8 "BEAM_OBSTRUCTION")))
- (ssdel en ss)))
- (prin1))
玩得开心-大卫
|