Jump to content

Recommended Posts

Posted

Hello everyone. I have a LISP question and was wondering if someone on this fantastic site can point me in the right direction. Here's what I'm trying to do:

 

The attached file is a radar beam spread layout. Basically, it's a 12 Nautical mile circle with wind turbine and radar locations. The exercise for me in this file is to project a radar beam from our radar (in a fixed location) and show where that beam is blocked by the wind turbine columns. In this example, there are 66 turbines and they asked me to create closed polylines for each of these items:

 

1. The beam spread from the radar to a column location

2. The beam blockage past that column location

3. The clear beam on either side, past that column location

 

In all, there are 4 closed polylines for each turbine. All of these polylines get imported to Arch GIS for the final product.

 

On this file, I created boundaries for each of these items (on the first column location), then copied and rotated all of those boundaries to the next turbine, and modified the spread to match the new turbine location. Doing this 66 times is very tedious, and I have another radar location to do for this site. Can this be done with a LISP routine? If so, what aspects of LISP routines should I start researching to accomplish it? I'm not looking for anyone to do it for me, just some general guidance. This isn't time sensitive at the moment. I'm just looking for a quicker way to accomplish this as I will have more of these types of projects in the future. Thanks in advance for the help.

Beam Spread - South Radar.dwg

Posted

This is a complete tangent and I apologise if I hog your thread, I really don't know diddly about lisp.

 

But

 

My company did a study of radar and wind turbine and the blockage that you mention. What they came up with, in short terms is that the radar is blocked by the entire span of the wings, as if the wings where replaced by a disc. I found that pretty interesting, the wings don't look that big to me, and not too fast rotation either. Wish i could find a source for this though that explains it further...

 

Just a tangent, sorry for the interruption.

Posted

Very Interesting project. The (polar) function is going to be your friend here.

 

It would actually be fairly simple calculation for each turbine. Assuming there a a total of 5 points for each turbine

 

Points would be from center of the radar to either side of the blockage, and then extended to the outer boundry

 

-David

 

 

Is it just the tower of the turbine or do the blades present a blockage as well?

 

The distances and dimensions would need to be converted to a single unit ( feet, miles, KM ) to make life easier everyone.

Posted

No worries Tiger. My primary job here is manufacturing drawings and graphic design work for marketing. Regarding our actual radar technologies, I'm very new to it all. I'm going to mention that to our GIS guy to see what he says. (out of curiosity). They're looking for ways to utilize me to develop presentation materials for our prospective clients. I guess they can do something like this in Arch GIS, but it would take them alot longer. All I can do is provide them with what they ask for.....and start learning about radar technology so I can better understand what's involved. Thanks for the information...

Posted

Currently they've asked me to use just the columns for this project. They may come back to ask for the actual blades as well. I'm going to mention it to them based on Tigers post to see what their take on it is. It seems to me that you would get radar through the blades, just not a clear beam. Again, I am new to radar tech. :unsure: I'm going to start researching LISPS to see what I can come up with. Thanks for the input.

Posted

Just out of curiosity, how is the distance from A to B determined? I'm assuming that the circle is the turbine tower and the the green pline the area that is blocked.

 

Is there a set inclusion angle for a radar beam? -David

beam1.jpg

Posted

Hello David. It's a total of .45 deg from the center of the radar location. (.225 either direction from the center) You are correct, the circle is the turbine tower and the green is the blocked beam beyond.

Posted

David, it just occurred to me that I didn't really answer your initial question. The way I did it was to draw a line from the center point of the column (circle) perpendicular to the outside beam on both sides. Come to think of it, that's probably slightly off. I think that line would actually need to be parallel to the position of the radar at that moment. That's something I'll need to work out.

Posted

Just because I thought it an interesting exercise:

 

1) When the turbine tower takes up more than 0.45 degrees of beam angle ( the tower is very close to the radar tower ), the obstruction area grows larger than 0.45 degrees beyond the turbine. ( an example of your 1st drawing attached. )

 

"AS IS"

(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))

 

 

Have fun! -David

-beam2.jpg

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...