乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 32|回复: 8

[编程交流] 最大停车视距

[复制链接]

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:24:43 | 显示全部楼层 |阅读模式
大家好,
 
我想沿路线多个间隔测量从车道1号车道(第1条车道)到中央预留护栏(第2条车道)的最大停车视距。
 
我正在寻找一个lisp命令,该命令以指定的间隔从pline1绘制多条直线,在它们接触pline 2之前,以其最大长度绘制。这两条线可能并不完全平行。
 
有人能帮我吗?
 
提前谢谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:32:30 | 显示全部楼层
欢迎来到论坛。
 
你知道命令划分吗?
 
你能提供更多细节吗?
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:45:52 | 显示全部楼层
我知道divide可以用来沿多段线绘制点或块。但是我想在沿着第1条多边形线的某些间隔接触第2条多边形线之前,从一条多边形线以其最大长度绘制直线。
 
E、 g想象你正沿着保利1号线开车。在沿途的中央保留区(折线2)中有一个混凝土屏障。我想绘制您的视力从您的汽车(折线1)到您可以看到前方多远,然后中央保留区(折线2)挡住您的视线。我想在整个路线上每隔一段时间这样做。
 
谢谢
 
对不起,我解释得不好。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:53:11 | 显示全部楼层
如果你能把你的话写进一张有前后对比的图画中,那就更清楚了
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:01:47 | 显示全部楼层
随附示例。
 
我想每隔一段特定的时间沿着整条路线重复“停车视线”。
 
请注意,在接触多段线2之前,这些线是如何达到其最大长度的
例如图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:05:24 | 显示全部楼层
你想要像我的“车道”一样的东西,它在进入一处房产时检查汽车是否触底,但从平面图来看,视距要复杂一些。如果你把3d技术引入其中,会更加复杂。像Autoturn这样的产品内置了此功能。
 
192448pormrmlnzancl71x.jpg
 
欢迎您更改此代码。它需要两件事来更改。距离2.8是车轮中心之间的距离,因此这将需要是您的停车视距值,并且可以用一条线替换块,您只需手动查看它是否存在冲突。下面的代码是VBA,我一直想在Vlisp中重做。
 
  1. Sub draw_vehicle()
  2. Dim CAR As String
  3. Dim arcobj As AcadArc
  4. Dim oPoly As AcadEntity
  5. Dim blkobj As AcadEntity
  6. Dim retVal As Variant
  7. Dim snapPt As Variant
  8. Dim oCoords As Variant
  9. Dim blpnt1() As Variant
  10. ReDim blpnt1(100)
  11. Dim blpnt2() As Variant
  12. ReDim blpnt2(100)
  13. Dim vertPt(0 To 2) As Double
  14. Dim Pt1(0 To 2) As Double
  15. Dim Pt2(0 To 2) As Double
  16. Dim newPt(0 To 2) As Double
  17. Dim iCnt, w, x, y, z As Integer
  18. Dim cRad, interval, blkangle As Double
  19. Dim circObj As AcadCircle
  20. Dim lineObj As AcadLine
  21. On Error GoTo Something_Wrong
  22. If ThisDrawing.ActiveSpace = acModelSpace Then
  23. Set Thisspace = ThisDrawing.ModelSpace
  24. Else: Set Thisspace = ThisDrawing.PaperSpace
  25. End If
  26. For Each Item In ThisDrawing.Blocks
  27. If Item.Name = "holden" Then GoTo continue_on
  28. Next Item
  29. ' insert holden block
  30. InsertBlock "p:\Autodesk\vba\holdencar.dwg", 0
  31. continue_on:
  32. w = 1
  33. ThisDrawing.Utility.GetEntity oPoly, snapPt, vbCr & "Select polyline :"
  34. If oPoly.ObjectName = "AcDbPolyline" Then
  35. oCoords = oPoly.Coordinates
  36. Else: MsgBox "This object is not a polyline! Please do again"
  37. Exit Sub
  38. End If
  39. interval = CDbl(InputBox("Enter interval:", , 1#))
  40. If interval < 1 Then
  41. interval = 1
  42. End If
  43. For iCnt = 0 To UBound(oCoords) - 2 Step 2
  44. Pt1(0) = oCoords(iCnt): Pt1(1) = oCoords(iCnt + 1): Pt1(2) = 0#
  45. newPt(0) = Pt1(0)
  46. newPt(1) = Pt1(1)
  47. newPt(2) = 0#
  48. iCnt = iCnt + 2
  49. Pt2(0) = oCoords(iCnt): Pt2(1) = oCoords(iCnt + 1): Pt2(2) = 0#
  50. x = (Pt1(0) - Pt2(0)) / interval
  51. y = (Pt1(1) - Pt2(1)) / interval
  52. 'reset back 2 values
  53. iCnt = iCnt - 2
  54. cRad = 3.05
  55. startang = 4.71239
  56. endang = 1.570796
  57. CAR = "HOLDEN"
  58. For z = 1 To interval
  59. vertPt(0) = newPt(0) - x
  60. vertPt(1) = newPt(1) - y
  61. vertPt(2) = 0#
  62. 'blpnt1(w) = vertPt
  63. 'Set arcobj = ThisDrawing.ModelSpace.AddArc(vertPt, cRad, endang, startang)
  64. Set arcobj = Thisspace.AddArc(vertPt, cRad, endang, startang)
  65. retval2 = arcobj.IntersectWith(oPoly, acExtendOtherEntity)
  66. arcobj.Delete
  67. Set arcobj = Nothing
  68. blkangle = ThisDrawing.Utility.AngleFromXAxis(retval2, vertPt)
  69. 'Set blkobj = ThisDrawing.ModelSpace.InsertBlock(vertPt, CAR, 1#, 1#, 1#, blkangle)
  70. Set blkobj = Thisspace.InsertBlock(vertPt, CAR, 1#, 1#, 1#, blkangle)
  71. Set blkobj = Nothing
  72. w = w + 1
  73. newPt(0) = newPt(0) - x
  74. newPt(1) = newPt(1) - y
  75. Next z
  76. Next iCnt
  77. GoTo Exit_out
  78. Something_Wrong:
  79. MsgBox Err.Description
  80. Exit_out:
  81. End Sub
  82. Private Sub InsertBlock1()
  83.    InsertBlock "p:\Autodesk\vbaholden.dwg", 0
  84.    'Change the 0 to another value (in degrees) to rotate the block'
  85.    End Sub
  86.    Function InsertBlock(ByVal blockpath As String, ByVal rotation As Double)
  87.    Dim blockobj As AcadBlockReference
  88.    Dim insertionPnt As Variant
  89.    Dim prompt1 As String
  90.    'set rotation Angle
  91.    rotateAngle = rotation
  92.    'rotateAngle = rotation * 3.141592 / 180#
  93.    'Prompt is used to show instructions in the command bar
  94.    prompt1 = vbCrLf & "Enter block insert point: "
  95.    'ThisDrawing.ActiveSpace = acModelSpace
  96.    insertionPnt = ThisDrawing.Utility.GetPoint(, prompt1)
  97.    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, blockpath, 1#, 1#, 1#, rotateAngle)
  98.    'Change Modelspace into Paperspace to insert the block into Paperspace
  99.    End Function

 
192450ujqvraqaa4rmrr4w.jpg
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:14:54 | 显示全部楼层
 
任何人都可以编辑以上^^^或以下内容:(以帮助我达到我想要的输出?)
 
(定义c:pso(/cl1 cl2 d pt pt2 templine ang spc)
;;;pBe 2014年8月30日;;;
(如果(和
(原则“\n选择主路线”)
(setq cl1(ssget“_:S”'((0。“*多段线”)))
(原则“\n选择偏移对齐”)
(setq cl2(ssget“_:S”'((0。“*多段线”)))
)
(程序
(setq d(cond((getdist
(strcat“\n输入增量值:”
(cond(d_)(100.00))
) 2 2) ">: ")))
(d)
)
)
(setq cl1(ssname cl1 0)
cl2(ssname cl2 0)d\uD)
(while(setq pt(vlax curve getpointatdist cl1 d))
(setq ang(角度)(0.0.0.0)
(vlax曲线getfirstderiv
cl1
(vlax曲线getparamatpoint cl1 pt)
)
)
)
(setq templine(vlax invoke(setq spc)(vlax get
(vla get ActiveLayout
(vla get ActiveDocument(vlax get acad object)))
“Block”)“AddXline pt
(极性pt(setq ang(+ang(*pi 1.5)))1)
)
(如果(setq pt2(vlax调用
坦普林
'与相交
(vlax ename->vla对象cl2)
0
)
)
(vlax invoke spc’Addline pt(list(Car pt2)(cadr pt2)(caddr pt2)))
)
(vla删除模板)
(setq d(+d d_))
)
)
)
(普林斯)
)
(vl load com)
 
 
 
感谢您提前提供的任何帮助
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:23:10 | 显示全部楼层
看看这个链接http://advancedroaddesign.com.au/一个新版本只需要一周或两周的时间,其中包括停车点距离,检查各种速度的全3d。是主干道还是侧路?转到“更多”按钮。
回复

使用道具 举报

44

主题

542

帖子

502

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-5 19:25:54 | 显示全部楼层
我个人会手动检查视距。相对于您正在设计的道路工程量而言,这是一项相当容易的任务。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:54 , Processed in 0.756563 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表