明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2786|回复: 1

毕业论文源码共享---过点向曲线做直线

[复制链接]
发表于 2006-4-23 14:44 | 显示全部楼层 |阅读模式
本人思路如下,选定一点和一个曲线,然后随便定义一个线长度,以线长和选定点,循环角度画直线,然后求直线与曲线的交点,再删除原直线,以选定点和交点为直线的两端重新画直线,累了很长时间才搞定的,刚学VBA,欢迎大家提意见啊,
  1. Dim angle As Double
  2. Dim p1 As Variant '定义起始点
  3. Dim p2(0 To 2) As Double '定义末点
  4. Dim p5(0 To 2) As Double '定义变点
  5. Dim lineObj As AcadLine '定义直线
  6. Dim lineobj2 As AcadLine '定义重新画的直线
  7. Dim curveobj As AcadObject '定义选择曲线
  8. Dim intersectpoint As Variant '定义交点
  9. frmprogramme.Hide
  10. p1 = ThisDrawing.Utility.GetPoint(, "选取坝体上某一点")
  11. ThisDrawing.Utility.GetEntity curveobj, pickedpoint, "请选定曲线"
  12. For angle = 180 To 360 Step 5 '开始按角度循环
  13. Dim realangle As Double
  14. realangle = ThisDrawing.Utility.AngleToReal(angle, acDegreeMinuteSeconds) '角度由弧度转换为角度
  15. p2(0) = p1(0) + 100 * Cos(realangle)
  16. p2(1) = p1(1) + 100 * Sin(realangle)
  17. p2(2) = p1(2)
  18. Set lineObj = ThisDrawing.ModelSpace.addline(p1, p2) '初始画线
  19. intersectpoint = lineObj.IntersectWith(curveobj, acExtendThisEntity) '得到交点
  20. If UBound(intersectpoint) <> -1 Then '去除空点
  21. p5(0) = intersectpoint(0): p5(1) = intersectpoint(1): p5(2) = 0 '定义重新画线的端点
  22. Set lineobj2 = ThisDrawing.ModelSpace.addline(p1, p5) '重新画线
  23. lineobj2.color = Int(255 * Rnd + 1) '定义直线颜色为随机颜色
  24. lineobj2.Highlight True '亮显直线
  25. lineobj2.Update '更新直线
  26. End If
  27. lineObj.Delete '删除原直线
  28. Next angle '重新开始下一个循环
  29. frmprogramme.Show
另外,如果哪位兄弟会标高的话,请随后跟贴,我还有一步是做选定直线上一点,返回直线的标高,并根据这个标高,选择相同标高的一个曲线,如果有高手的话,请教一下啊
发表于 2012-2-6 04:47 | 显示全部楼层
好东西啊,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 10:43 , Processed in 0.135127 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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