明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1193|回复: 6

自己写的画腰孔,感觉写的好繁琐,不知道该怎么改进

[复制链接]
发表于 2018-7-13 09:38 | 显示全部楼层 |阅读模式
自学的CAD二次开发,写程序感觉好繁琐,不知道怎么进步,求指导。
下面是我写的用来调用画腰孔的程序,该怎么简化??

  1. Sub 画腰孔(ByVal p, ByVal r, ByVal jd, ByVal L, ByRef x, ByRef i)
  2. 'p是要插入的腰孔中心点,r是腰孔半径,jd是腰孔的角度,L是腰孔直线的长度,x是存放图形的数组,i是记录图形存放在数组中的位置
  3. Dim pt1(2) As Double, pt2(2) As Double, pt3(2) As Double, pt4(2) As Double

  4. If jd = 0 Then
  5. pt1(0) = p(0) - L / 2
  6. pt1(1) = p(1) - r
  7. pt1(2) = 0

  8. pt2(0) = p(0) + L / 2
  9. pt2(1) = p(1) - r
  10. pt2(2) = 0

  11. pt3(0) = p(0) - L / 2
  12. pt3(1) = p(1) + r
  13. pt3(2) = 0

  14. pt4(0) = p(0) + L / 2
  15. pt4(1) = p(1) + r
  16. pt4(2) = 0

  17. i = i + 1
  18. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  19. i = i + 1
  20. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt3, pt4)

  21. pt1(1) = p(1)
  22. i = i + 1
  23. Set x(i) = ThisDrawing.ModelSpace.AddArc(pt1, r, 3.1415926535898 / 2, 3.1415926535898 * 1.5)
  24. pt2(1) = p(1)
  25. i = i + 1
  26. Set x(i) = ThisDrawing.ModelSpace.AddArc(pt2, r, 3.1415926535898 * 1.5, 3.1415926535898 / 2)

  27. pt1(0) = p(0) - L / 2 - r * 1.5
  28. pt2(0) = p(0) + L / 2 + r * 1.5
  29. i = i + 1
  30. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  31. x(i).Linetype = "center"
  32. x(i).Color = acRed

  33. pt1(0) = p(0)
  34. pt1(1) = p(1) + r * 1.5
  35. pt2(0) = p(0)
  36. pt2(1) = p(1) - r * 1.5
  37. i = i + 1
  38. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  39. x(i).Linetype = "center"
  40. x(i).Color = acRed
  41. Else
  42.     pt1(0) = p(0) - r
  43.     pt1(1) = p(1) - L / 2
  44.     pt1(2) = 0

  45.     pt2(0) = p(0) - r
  46.     pt2(1) = p(1) + L / 2
  47.     pt2(2) = 0

  48.     pt3(0) = p(0) + r
  49.     pt3(1) = p(1) + L / 2
  50.     pt3(2) = 0

  51.     pt4(0) = p(0) + r
  52.     pt4(1) = p(1) - L / 2
  53.     pt4(2) = 0

  54. i = i + 1
  55. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  56. i = i + 1
  57. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt3, pt4)

  58.     pt1(0) = p(0)
  59.     i = i + 1
  60. Set x(i) = ThisDrawing.ModelSpace.AddArc(pt1, r, 3.1415926535898, 0)
  61. pt2(0) = p(0)
  62. i = i + 1
  63. Set x(i) = ThisDrawing.ModelSpace.AddArc(pt2, r, 0, 3.1415926535898)

  64. pt1(1) = p(1) - L / 2 - r * 1.5
  65. pt2(1) = p(1) + L / 2 + r * 1.5
  66. i = i + 1
  67. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  68. x(i).Linetype = "center"
  69. x(i).Color = acRed

  70. pt1(0) = p(0) + r * 1.5
  71. pt1(1) = p(1)
  72. pt2(0) = p(0) - r * 1.5
  73. pt2(1) = p(1)
  74. i = i + 1
  75. Set x(i) = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
  76. x(i).Linetype = "center"
  77. x(i).Color = acRed


  78. End If

  79. End Sub

发表于 2018-7-13 10:53 | 显示全部楼层
不明白你说的腰孔是什么东西,但有些坐标点计算,应该可以用AcadUtility 类的函数计算
 楼主| 发表于 2018-7-13 13:56 | 显示全部楼层
zzyong00 发表于 2018-7-13 10:53
不明白你说的腰孔是什么东西,但有些坐标点计算,应该可以用AcadUtility 类的函数计算

就是这样的孔,我们这边叫腰孔。AcadUtility里面我是没找到直接的函数。我准备再写个倒角的函数,感觉倒角编起来很麻烦,不知道有没有现成的函数。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

你可以看看polarpoint, 建议用你pl线,先计算完所有点的坐标,然后画一次pl线就可以了  发表于 2018-7-14 12:29
发表于 2019-3-7 11:16 | 显示全部楼层
画出矩形 设置 2条边的凸度  
发表于 2019-8-27 16:45 | 显示全部楼层
让用户点选两点 ,设置宽度     程序画矩形  设置2边凸度
发表于 2019-8-29 14:26 | 显示全部楼层
本帖最后由 Leo1980 于 2019-8-29 14:27 编辑

一个polyline足矣

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 17:21 , Processed in 1.412172 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表