tbus227 发表于 2022-7-6 08:43:52

指导

大家好。我有一个Lisp程序的问题,不知道这个很棒的网站上是否有人能为我指出正确的方向。以下是我想要做的:
 
随附文件为雷达波束扩展布局。基本上,这是一个12海里的圆圈,有风力涡轮机和雷达的位置。我在这个文件中的练习是从我们的雷达(在固定位置)投射一个雷达波束,并显示该波束被风力涡轮机立柱阻挡的位置。在本例中,有66台涡轮机,他们要求我为每个项目创建闭合多段线:
 
1、波束从雷达传播到立柱位置
2、梁堵塞超过该立柱位置
3、任何一侧的透明梁,超过该立柱位置
 
每个涡轮机总共有4条闭合多段线。所有这些多段线都会导入到Arch GIS中,以生成最终产品。
 
在这个文件中,我为每个项目创建了边界(在第一列位置),然后将所有这些边界复制并旋转到下一个涡轮机,并修改排列以匹配新的涡轮机位置。这样做66次是非常乏味的,我有另一个雷达定位做这个网站。这可以用LISP例程完成吗?如果是这样,我应该开始研究LISP例程的哪些方面来实现它?我不是在寻找任何人帮我做这件事,只是一些一般性的指导。目前这对时间不敏感。我只是在寻找一个更快的方式来完成这一点,因为我将在未来有更多的此类项目。提前感谢您的帮助。
波束扩展-南部雷达。图纸

Tiger 发表于 2022-7-6 08:54:36

这是一个完整的切线,我道歉,如果我猪你的线程,我真的不知道关于Lisp程序。
 
但是
 
我的公司对雷达和风力涡轮机以及你提到的堵塞进行了研究。简而言之,他们得出的结论是,雷达被机翼的整个跨度所阻挡,就像机翼被圆盘所取代一样。我发现这很有趣,翅膀看起来没那么大,旋转也不太快。希望我能找到一个来源,虽然这进一步解释了它。。。
 
只是相切,抱歉打扰了。

David Bethel 发表于 2022-7-6 09:03:40

非常有趣的项目。(极性)函数将成为您的朋友。
 
对于每个涡轮机来说,这实际上是相当简单的计算。假设每个涡轮机总共有5个点
 
点将从雷达中心到障碍物的任一侧,然后延伸到外部边界
 
-大卫
 
 
只是涡轮机的塔架还是叶片也出现堵塞?
 
距离和尺寸需要转换为单个单位(英尺、英里、公里),以使每个人的生活更轻松。

tbus227 发表于 2022-7-6 09:13:00

不用担心,老虎。我在这里的主要工作是为营销制作图纸和平面设计。关于我们实际的雷达技术,我对这一切都很陌生。我要把这件事告诉我们的GIS人员,看看他说了些什么。(出于好奇)。他们正在寻找利用我为潜在客户开发演示材料的方法。我想他们可以在Arch GIS中这样做,但这需要更长的时间。我所能做的就是为他们提供他们想要的。。。。。开始学习雷达技术,这样我就能更好地理解其中的内容。谢谢你的信息。。。

tbus227 发表于 2022-7-6 09:18:00

目前,他们要求我只使用这个项目的列。他们可能还会回来索要实际的刀片。我将根据老虎队的帖子向他们提及这一点,看看他们对此有何看法。在我看来,你会让雷达穿过叶片,只是不是一个清晰的光束。再说一次,我是雷达技术新手。我要开始研究LISPS,看看我能想出什么。谢谢你的意见。

David Bethel 发表于 2022-7-6 09:22:33

只是出于好奇,A到B的距离是如何确定的?我假设这个圆是涡轮机塔,而绿色的柱线是被阻塞的区域。
 
雷达波束是否有一个设定的夹角-大卫

tbus227 发表于 2022-7-6 09:31:37

你好,大卫。总共是。距离雷达位置中心45度。(从中心向任意方向0.225)你是对的,圆圈是涡轮机塔,绿色是远处的阻塞梁。

tbus227 发表于 2022-7-6 09:40:39

大卫,我刚想到我没有真正回答你最初的问题。我做这件事的方法是从柱(圆)的中心点画一条线,垂直于两侧的外梁。想想看,这可能有点不对劲。我认为那条线实际上需要与当时雷达的位置平行。这是我需要解决的问题。

David Bethel 发表于 2022-7-6 09:44:48

只是因为我觉得这是一个有趣的练习:
 
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) (* pi0.5)) d2)
                   p4 (polar p0 (+ (angle cp p0) (* pi -0.5)) d2)
                   p2 (polar p0 (+ (angle cp p0) (* pi0.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))

 
 
玩得开心-大卫
页: [1]
查看完整版本: 指导