乐筑天下

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

BRep:将EllipticalArc3d转换为Ellipse在2018年无效,但在2016年有效

[复制链接]

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2018-3-14 10:28:20 | 显示全部楼层 |阅读模式
大家好。
所以我在一个Face's Loops中循环,然后在它的边缘中循环。一切都很好,直到我得到一个用于nativecurve的EllipticalArc。
我基本上是在跟踪边缘以将其转换为PolyLine。我知道Gile已经编写了一些将区域转换为PolyLines的类,但在我发现之前就已经存在这段代码了。我希望我可以修复(我认为是)一行代码,然后我就可以重新启动并运行,而不是重写我的东西来使用Gile的代码。
正如我所说,这在Acad2016中存在并有效,但在2018年不起作用。
这是一个快速片段...我怀疑错误的代码是“新椭圆”行,我希望有人能指出我做错了什么。
  1. Dim F As BRep.Face = --some face--
  2. For Each L As BRep.BoundaryLoop In F.Loops
  3.         Dim bClosed As Boolean = False
  4.         Dim bErr As Boolean = False
  5.         Dim iEdgeCount As Integer = 0
  6.        
  7.         Do Until bClosed Or bErr
  8.                 Dim E As BRep.Edge = L.Edges(iEdgeCount)
  9.                 Dim C As Curve3d = E.Curve
  10.                 Dim extC As ExternalCurve3d = C
  11.                 Dim nativeCurve As Curve3d = extC.NativeCurve
  12.                 If extC.IsEllipticalArc Then
  13.                         Dim ellArc3d As EllipticalArc3d = nativeCurve
  14.                         Dim VecToUse As Vector3d = ellArc3d.Normal
  15.                         Dim ellActual As New Ellipse(ellArc3d.Center, VecToUse, ellArc3d.MajorAxis * ellArc3d.MajorRadius, ellArc3d.MinorRadius / ellArc3d.MajorRadius, ellArc3d.StartAngle, ellArc3d.EndAngle)
  16.        
  17.                 End If
  18.                 iEdgeCount += 1
  19.         Loop
  20. Next

EllArc3d看起来和我预期的一样,这意味着StartPoint和EndPoint在它们应该在的地方:请参阅EllArc3d.jpg.
但是当我使用相同的“New Ellipse”命令时,StartPoint和EndPoint是不同的:请参阅ellActual.jpg.
完整的面部显示在AntiSwirlFace.jpg.我已经对我特别有问题的椭圆曲线进行了BOLDED。该几何中还有其他椭圆曲线,它们都在做类似的事情。

0ynkjybnkp2.JPG

0ynkjybnkp2.JPG


akasonhs5dl.JPG

akasonhs5dl.JPG


rskgixik40j.JPG

rskgixik40j.JPG

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

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

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2018-3-14 14:41:52 | 显示全部楼层
知道了...
  1. Dim ellArc3d As EllipticalArc3d = nativeCurve
  2. Dim c2 As Curve = Curve.CreateFromGeCurve(ellArc3d)
  3. Dim ellActual As Ellipse = TryCast(c2, Ellipse)

回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-3-14 14:53:00 | 显示全部楼层
很高兴我能帮忙,欢迎来到沼泽地!
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-3-14 14:56:31 | 显示全部楼层
嗨,这是由于EllipticalArc3d StartAngle和EnAngle属性对应于Ellipse StartParam和EndParam。这不是AutoCAD 2018特有的,它在以前的版本中是相同的。我们可以从它的StartParam和EndParam计算Ellipse StartAngle和EnAngle,Tan(Angle)/Tan(Parameter)=MinorRadius/MajorRadiusEllipticalArc3d ea=(EllipticalArc3d)curve.NativeCurve;。
双比例=ea.MinorRadius/ea.MajorRadius;。
双start Angle=Math.Atan2(Math.Sin(ea.StartAngle)*比率,Math.Cos(ea.StartAngle));。
双endAngle=Math.Atan2(Math.Sin(ea.EndAngle)*比率,Math.Cos(ea.EndAngle));。
椭圆el=新的椭圆(ea.Center,ea.Normal,ea.MajorAxis*ea.MajorRadius,比率, start Angle, endAngle));。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2018-3-14 16:06:46 | 显示全部楼层

这就是你!...
我一直认为ActivistInvestor是Tony T的克隆人。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2018-3-14 16:17:20 | 显示全部楼层
谢谢杰夫和吉尔!
Gile,永远记住答案背后的信息!非常感谢!
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2018-3-14 18:42:27 | 显示全部楼层

原来是你!...
我一直认为ActivistInvestor是Tony T的克隆。

我也这么认为。深度克隆。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2018-3-14 20:14:47 | 显示全部楼层

原来是你!...
我一直认为ActivistInvestor是Tony T的克隆...就像托尼经历了一次濒死体验,变成了一个好人
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 11:02 , Processed in 0.221375 second(s), 82 queries .

© 2020-2025 乐筑天下

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