乐筑天下

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

得到复合线上的极点

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:29:12 | 显示全部楼层 |阅读模式
如果我有一条这样的线

LineStart= 1.0,1.0,0.0
LineEnd= 13.0,4.0,4.0
,我想从'LineStart'定义极点:
PtA= 4.0,1.75,1.0
PtB= 7.0,2.5,2.0
PtC= 10.0,3.25,3.0
我如何解决这个问题?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:50:02 | 显示全部楼层
平面可以包括任意3个点
可以制作满足该平面的ucs
然后您可以从wcs->ucs坐标转换点
现在它们都将具有相同的z值,polarpoint将起作用
现在将点转换回世界(wcs)
这不是最有效的解决方案,可能是需要最少数学知识的解决方案
你想用这些积分做什么?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:58:30 | 显示全部楼层
取一条长度为一定长度的行,并将其分解为用户定义的较小长度。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 13:07:03 | 显示全部楼层
不漂亮,但沿着这些路线的东西:
  1. Public Sub PickPointsPipe()
  2.     Dim objCirc As AcadCircle
  3.     Dim dblOD As Double
  4.     Dim varFtpt As Variant
  5.     Dim varSdpt As Variant
  6.     Dim objTempLine As AcadLine
  7.     Dim dblDist As Double
  8.    
  9.     Dim dblRunLeng As Double
  10.     Dim dblFullStk As Double
  11.     Dim dblAngle As Double
  12.     Dim varLastPt As Variant
  13.    
  14.     Dim objEnts() As AcadEntity
  15.     Dim objPipe As Acad3DSolid
  16.     Dim varRegions As Variant
  17.     Dim varItem As Variant
  18. On Error GoTo Done
  19.   With ThisDrawing
  20.    varFtpt = .Utility.GetPoint(, vbCr & " Pick point to start pipe: ")
  21.    varSdpt = .Utility.GetPoint(varFtpt, vbCr & " Pick point to end pipe: ")
  22.    
  23.    Dim dblVec(0 To 2) As Double
  24.    dblVec(0) = varSdpt(0) - varFtpt(0): dblVec(1) = varSdpt(1) - varFtpt(1): dblVec(2) = varSdpt(2) - varFtpt(2)
  25.   
  26.    Dim dblVal As Double
  27.    dblVal = Sqr(dblVec(0) * dblVec(0) + dblVec(1) * dblVec(1) + dblVec(2) * dblVec(2))
  28.    Dim dblVecNorm(0 To 2) As Double
  29.    dblVecNorm(0) = dblVec(0) / dblVal: dblVecNorm(1) = dblVec(1) / dblVal: dblVecNorm(2) = dblVec(2) / dblVal
  30.   End With
  31.    
  32.    With ThisDrawing
  33.    
  34.     Set objTempLine = .ModelSpace.AddLine(varFtpt, varSdpt)
  35.     dblDist = objTempLine.Length
  36.    
  37.     dblRunLeng = 10#
  38.     dblAngle = .Utility.AngleFromXAxis(varFtpt, varSdpt)
  39.    
  40.     dblFullStk = (dblDist / dblRunLeng)
  41.     objTempLine.Delete
  42.      varLastPt = .Utility.PolarPoint(varFtpt, dblAngle, dblRunLeng)
  43.    
  44.    
  45.     Dim counter As Double
  46.     counter = 1
  47.     Do While dblFullStk > counter
  48.       
  49.        varLastPt = .Utility.PolarPoint(varFtpt, dblAngle, dblRunLeng)
  50.        Set objTempLine = .ModelSpace.AddLine(varFtpt, varLastPt)
  51.       
  52.        Set objCirc = .ModelSpace.AddCircle(varFtpt, 1#)
  53.        objCirc.Normal = dblVecNorm
  54.     ReDim objEnts(0)
  55.     Set objEnts(0) = objCirc
  56.     varRegions = .ModelSpace.AddRegion(objEnts)
  57.     Set objPipe = .ModelSpace.AddExtrudedSolid(varRegions(0), dblRunLeng, 0)
  58.     objPipe.Update
  59.     objTempLine.Delete
  60.   Debug.Print varLastPt(0) & "," & varLastPt(1) & "," & varLastPt(2)
  61.   varFtpt = varLastPt
  62.    
  63.     counter = counter + 1
  64.     For Each varItem In objEnts
  65.    varItem.Delete
  66. Next
  67. For Each varItem In varRegions
  68.    varItem.Delete
  69. Next
  70.    
  71.     Loop
  72. End With
  73. Done:
  74. If Err Then MsgBox Err.Description
  75. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 16:07:29 | 显示全部楼层
X=X1+距离/长度*DX是您需要的数学,并且您已经在使用它。
不需要角度或极点
下面是一个示例
函数PointOnLineAt距离感(P1, P2, Dist As Double)As Variant
Dim P3(2)As Double
Dim dblL长度As Double
dblL长度=长度(P1, P2)
P3(0)=P1(0)+(Dist/dblL长度)*(P2(0)-P1(0))
P3(1)=P1(1)+(Dist/dblL长度)*(P2(1)-P1(1))
P3(2)=P1(2)+(Dist/dblL长度)*(P2(2)-P1(2))
PointOnLineAt远程=P3
结束函数
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 17:38:32 | 显示全部楼层
有时我看不到森林里的森林……谢谢你
我在发布我的东西时犹豫不决(因为它太分散了),我还在学习……很高兴我这么做了
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 17:58:28 | 显示全部楼层
我们都还在学习。
如果没有发布您的代码,我不会真正理解您的问题。
我经常尽力抵制插入临时对象来帮助计算的诱惑。
您可以轻松摆脱这条线。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-8 05:55 , Processed in 4.267431 second(s), 66 queries .

© 2020-2025 乐筑天下

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