找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2073|回复: 4

[VBA程序]:空间一点到面的垂线

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2007-12-2 14:30:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
空间一点到面的垂线

  1. Sub P2Region()
  2.     On Error GoTo E:
  3.     Dim M(5) As Double
  4.     Dim P1 As Variant, P2 As Variant, P3 As Variant, P4 As Variant
  5.     ThisDrawing.Utility.InitializeUserInput 1, ""
  6.     P1 = ThisDrawing.Utility.GetPoint(, "平面上的第一点:")
  7.     ThisDrawing.Utility.InitializeUserInput 1, ""
  8.     P2 = ThisDrawing.Utility.GetPoint(, "平面上的第二点:")
  9.     ThisDrawing.Utility.InitializeUserInput 1, ""
  10.     P3 = ThisDrawing.Utility.GetPoint(, "平面上的第三点:")
  11.     '判断三点是否在一条直线上
  12.     If ThreeP_IsOnline(P1, P2, P3) = True Then
  13.        ThisDrawing.Utility.Prompt "所选三点共线" & vbCrLf
  14.        Exit Sub
  15.     End If
  16.     ThisDrawing.Utility.InitializeUserInput 1, ""
  17.     P4 = ThisDrawing.Utility.GetPoint(, "空间一点:")
  18.     M(0) = P2(0) - P1(0)
  19.     M(1) = P2(1) - P1(1)
  20.     M(2) = P2(2) - P1(2)
  21.     M(3) = P3(0) - P1(0)
  22.     M(4) = P3(1) - P1(1)
  23.     M(5) = P3(2) - P1(2)
  24.     '计算平面方程系数( Ax+By+Cz+D=0)
  25.     Dim A As Double, B As Double, C As Double, D As Double
  26.     A = M(1) * M(5) - M(2) * M(4)
  27.     B = -(M(0) * M(5) - M(2) * M(3))
  28.     C = M(0) * M(4) - M(1) * M(3)
  29.     D = -A * P1(0) - B * P1(1) - C * P1(2)
  30.     Dim T As Double
  31.     T = -(A * P4(0) + B * P4(1) + C * P4(2) + D) / (A ^ 2 + B ^ 2 + C ^ 2)
  32.     Dim P5(2) As Double
  33.     P5(0) = T * A + P4(0)
  34.     P5(1) = T * B + P4(1)
  35.     P5(2) = T * C + P4(2)
  36.     ThisDrawing.ModelSpace.AddPoint P5
  37.     ThisDrawing.ModelSpace.AddLine P4, P5
  38.     ThisDrawing.SetVariable "PDMODE", 35
  39.     Exit Sub
  40. E:
  41.    ThisDrawing.Utility.Prompt Err.Description & vbCrLf
  42. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-4-8 10:31:21 | 显示全部楼层
哇!!太好了啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-7-29 22:40:30 | 显示全部楼层
学习学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-14 19:40:33 | 显示全部楼层
哇!!太好了啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2010-2-18 04:00:42 | 显示全部楼层
学习学习!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-6 00:29 , Processed in 0.490057 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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