乐筑天下

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

获取复合线上的极点

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:29:12 | 显示全部楼层 |阅读模式
如果我有一条线,它是这样做的:LineStart=1.0,1.0,0.0,我想从&#039定义极点;线路起点和039;在:PtA=4.0,1.75,1.0>PtB=7.0,2.5,2.0PtC=10.0,3.25,3.0 可以制作满足该平面的ucs
然后可以从wcs转换点->ucs坐标现在它们都将具有相同的z值,polarpoint将起作用
现在将点变换回世界(wcs)
这不是最有效的解决方案,它'这可能是最不需要数学知识的解决方案
你想用这些分数做什么?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:50:02 | 显示全部楼层
取一条一定长度的线,将其拆分为用户定义的较小长度
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 12:58:30 | 显示全部楼层
不是很漂亮,但大致是这样的:
  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 13:07:03 | 显示全部楼层
X=X1+distance/dLength*DX是您需要的数学,您已经在使用它了
不需要角度或极点,下面是一个示例,函数PointOnLineAtDistance(P1,P2,Dist为Double)作为变量 将P3(2)变暗为双精度 Dim dblLength为Double dblLength=长度(P1,P2) P3(0)=P1(0)+(距离/长度)*(P2(0)-P1(0))
 P3(1)=P1(1)+(距离/长度)*(P2(1)-P1(1))
 P3(2)=P1(2)+(距离/长度)*(P2(2)-P1(2))
 PointOnLineAtDistance=P3结束函数
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 16:07:29 | 显示全部楼层
有时我看不见森林里的森林……谢谢你,我一直在犹豫是否要发布我所拥有的(因为它太分散了),我还在学习……很高兴我这么做了
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2009-1-31 17:38:32 | 显示全部楼层
我们都还在学习
如果不发布您的代码,我不会'我没有真正理解你的问题
我经常想方设法抵制插入临时对象来帮助数学的诱惑
你可以很容易地摆脱这条线。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-8 06:02 , Processed in 1.364000 second(s), 65 queries .

© 2020-2025 乐筑天下

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