乐筑天下

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

[编程交流] 1条路径上有2个点

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:37:50 | 显示全部楼层
我正在重做以匹配“temp”
 
任何方式快速插入块确保插入点位于1个圆的中心,然后绘制一个圆7.0个单位。使用旋转器旋转块。交叉点的角度正确。
 
我的版本绘制了许多块用于检查。
 
ContinBoss77查看代码,它会旋转块以适应。
回复

使用道具 举报

7

主题

30

帖子

23

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:41:04 | 显示全部楼层
 
我知道,但它不适用于普通的Autocad commando
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:48:51 | 显示全部楼层
看看这个
 
键入VBAMAN New pick the global1,visual basic编辑器,双击global1左上角的“代码”窗口应打开“粘贴代码并保存”以查看结果使用RUN sub/userform try 1作为间隔。更多的是关于如何做的方法。您还需要一个新的顶点lsp来计算显示的顶点数和间距。目前的时间是一个完整解决方案的问题。
 
 
  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. Dim vertPt(0 To 2) As Double
  13. Dim Pt1(0 To 2) As Double
  14. Dim Pt2(0 To 2) As Double
  15. Dim newPt(0 To 2) As Double
  16. Dim iCnt, w, x, y, z As Integer
  17. Dim cRad, interval, blkangle As Double
  18. Dim circObj As AcadCircle
  19. Dim lineObj As AcadLine
  20. On Error GoTo Something_Wrong
  21. For Each Item In ThisDrawing.Blocks
  22. If Item.Name = "temp" Then GoTo continue_on
  23. Next Item
  24. ' exits out of program
  25. GoTo Exit_out
  26. continue_on:
  27. w = 1
  28. ThisDrawing.Utility.GetEntity oPoly, snapPt, vbCr & "Select polyline :"
  29. If oPoly.ObjectName = "AcDbPolyline" Then
  30. oCoords = oPoly.Coordinates
  31. Else: MsgBox "This object is not a polyline!"
  32. Exit Sub
  33. End If
  34. interval = CDbl(InputBox("Enter interval:", , 1#))
  35. If interval < 1 Then
  36. interval = 1
  37. End If
  38. For iCnt = 0 To UBound(oCoords) - 2 Step 2
  39. Pt1(0) = oCoords(iCnt): Pt1(1) = oCoords(iCnt + 1): Pt1(2) = 0#
  40. newPt(0) = Pt1(0)
  41. newPt(1) = Pt1(1)
  42. newPt(2) = 0#
  43. iCnt = iCnt + 2
  44. Pt2(0) = oCoords(iCnt): Pt2(1) = oCoords(iCnt + 1): Pt2(2) = 0#
  45. x = (Pt1(0) - Pt2(0)) / interval
  46. y = (Pt1(1) - Pt2(1)) / interval
  47. 'reset back 2 values
  48. iCnt = iCnt - 2
  49. cRad = 7#
  50. startang = 4.7123889
  51. endang = 1.57079632
  52. CAR = "temp"
  53. For z = 1 To interval
  54. vertPt(0) = newPt(0) - x
  55. vertPt(1) = newPt(1) - y
  56. vertPt(2) = 0#
  57. 'blpnt1(w) = vertPt
  58. Set arcobj = ThisDrawing.ModelSpace.AddArc(vertPt, cRad, endang, startang)
  59. retval2 = arcobj.IntersectWith(oPoly, acExtendOtherEntity)
  60. arcobj.Delete
  61. Set arcobj = Nothing
  62. blkangle = ThisDrawing.Utility.AngleFromXAxis(retval2, vertPt)
  63. Set blkobj = ThisDrawing.ModelSpace.InsertBlock(vertPt, CAR, 1#, 1#, 1#, blkangle)
  64. Set blkobj = Nothing
  65. w = w + 1
  66. newPt(0) = newPt(0) - x
  67. newPt(1) = newPt(1) - y
  68. Next z
  69. Next iCnt
  70. Something_Wrong:
  71. MsgBox Err.Description
  72. Exit_out:
  73. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 14:53 , Processed in 0.472889 second(s), 57 queries .

© 2020-2025 乐筑天下

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