明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: sjsfsdrgy

轴承二次开发

  [复制链接]
发表于 2004-5-30 09:23:00 | 显示全部楼层
边界必须是首尾相连的


另外,pi最好用Atn(1)*4代替
 楼主| 发表于 2004-5-30 12:01:00 | 显示全部楼层
今天按照"正确的边界"还是做不出来,直线和轻便多义线都试过,为什么?
发表于 2004-5-30 14:27:00 | 显示全部楼层
st = 180 * 3.1415926 / 180
ed = 360 * 3.1415926 / 180
改成 st = Atn(1) * 4
ed = Atn(1) * 8
 楼主| 发表于 2004-6-1 16:33:00 | 显示全部楼层



我已经把我设计轴承时,自己设置的各点的位置标明在CAD图上,已经发到论坛上,请结合我设计的程序找出其中的错误,特别是为什么做不出剖面线.

本帖子中包含更多资源

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

x
发表于 2004-6-1 20:45:00 | 显示全部楼层
  1. '图案填充
  2. Dim hatchObj As AcadHatch
  3. Dim patternName As String
  4. Dim PatternType As Long
  5. Dim bAssociativity As Boolean
  6. Dim b As Double
  7. PatternType = 0
  8. patternName = "ANSI31"
  9. bAssociativity = True   '填充图案与边界相关联
  10. '创建填充对象
  11. Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)
  12. '创建填充边界
  13. Dim OuterLoop(0 To 0) As AcadEntity Dim points1(0 To 11) As Double
  14. points1(0) = ax0: points1(1) = ay0
  15. points1(2) = ax1: points1(3) = ay1
  16. points1(4) = ax2: points1(5) = ay2
  17. points1(6) = ax13: points1(7) = ay13
  18. points1(8) = ax12: points1(9) = ay12
  19. points1(10) = ax11: points1(11) = ay11
  20. Set OuterLoop(0) = ThisDrawing.ModelSpace.AddLightWeightPolyline(points1) '上填充区域' 计算凸度
  21. b = Sqr((ax12 - ax13) ^ 2 + (ay12 - ay13) ^ 2) / 2
  22. b = (r - Sqr(((ax12 + ax13) / 2 - yx1) ^ 2 + ((ay12 + ay13) / 2 - yx2) ^ 2)) / b
  23. OuterLoop(0).SetBulge 3, b '设置凸度
  24. OuterLoop(0).Closed = True '闭合'向填充对象添加填充边界
  25. hatchObj.AppendOuterLoop (OuterLoop)
  26. '用Evaluate方法进行求值,并显示填充
  27. hatchObj.Evaluate
  28. hatchObj.Color = acGreen
  29. ThisDrawing.Regen TrueSet hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)
  30. hatchObj.PatternAngle = 3.14159 / 2 '填充角度
  31. points1(0) = ax9: points1(1) = ay9
  32. points1(2) = ax4: points1(3) = ay4
  33. points1(4) = ax3: points1(5) = ay3
  34. points1(6) = ax15: points1(7) = ay15
  35. points1(8) = ax14: points1(9) = ay14
  36. points1(10) = ax10: points1(11) = ay10
  37. Set OuterLoop(0) = ThisDrawing.ModelSpace.AddLightWeightPolyline(points1) '下填充区域
  38. OuterLoop(0).SetBulge 3, -b
  39. OuterLoop(0).Closed = True
  40. '向填充对象添加填充边界
  41. hatchObj.AppendOuterLoop (OuterLoop)
  42. '用Evaluate方法进行求值,并显示填充
  43. hatchObj.Evaluate
  44. hatchObj.Color = acGreen
  45. ThisDrawing.Regen True
原程序的填充区域是错误的,没有理解ACAD的规则,这是填充部分改写的代码。由于机器上没有安装VB,附件是VBA的代码,测试用的。

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-28 05:48 , Processed in 0.164816 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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