明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索

[几何] 几何类使用相关

    [复制链接]
发表于 2010-10-26 10:56:00 | 显示全部楼层

第一个例子中,以下两句编译错误,请明示:


var line = ls2d.ToCurve(Matrix3d.Identity)
var arc = ca2d.ToCurve(Matrix3d.Identity)

 楼主| 发表于 2010-10-26 15:05:00 | 显示全部楼层

这里是调用曲线转换类

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=77565&star=1#26703

发表于 2010-10-26 16:34:00 | 显示全部楼层
本帖最后由 作者 于 2010-11-2 22:23:41 编辑

你那些Ge曲线类文章都是很好的参考,我用VB.NET转换了第一个例子,缺少ToCurve,无法编译。
  1.     ''' <summary>
  2.     ''' 使用Ge曲线的简单例子
  3.     ''' 对直线和圆求交点,并返回交点分隔的部分
  4.     ''' </summary>
  5.     <CommandMethod("t9")> Public Sub t9()
  6.         'Ge直线
  7.         Dim l2d As New Line2d(Point2d.Origin, Vector2d.XAxis)
  8.         'Ge圆
  9.         Dim ca2d As New CircularArc2d(New Point2d(5, 5), 15)
  10.         '交点集合
  11.         Dim pnts As New List(Of Point2d)
  12.         '交点处的参数集合
  13.         Dim pars1 = New List(Of Double)
  14.         Dim pars2 = New List(Of Double)
  15.         '求交
  16.         Using cci2d As New CurveCurveIntersector2d(l2d, ca2d)
  17.             Dim i As Integer = 0
  18.             Do While i < cci2d.NumberOfIntersectionPoints
  19.                 pnts.Add(cci2d.GetIntersectionPoint(i))
  20.                 Dim k = cci2d.GetIntersectionParameters(i)
  21.                 pars1.Add(k(0))
  22.                 pars2.Add(k(1))
  23.                 i += 1
  24.             Loop
  25.         End Using
  26.         Dim Ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  27.         Dim Db As Database = HostApplicationServices.WorkingDatabase
  28.         Dim j As Integer = 1
  29.         pnts.ForEach(Sub(p)
  30.                          Ed.WriteMessage(vbLf & "第{0}个交点为:{1}", j, p)
  31.                          j += 1
  32.                      End Sub)
  33.         '转换结果为Db曲线()
  34.         Using tr = Db.TransactionManager.StartTransaction
  35.             Dim btr As BlockTableRecord = Db.CurrentSpaceId.GetObject(OpenMode.ForWrite)
  36.             pars1.Sort()
  37.             Dim ls2d As New LineSegment2d(l2d.EvaluatePoint(pars1(0)), l2d.EvaluatePoint(pars1(1)))
  38.             Dim line = ls2d.ToCurve(Matrix3d.Identity)
  39.             btr.AppendEntity(line)
  40.             tr.AddNewlyCreatedDBObject(line, True)
  41.             pars2.Sort()
  42.             ca2d.SetInterval(New Interval(pars2(0), pars2(1), 0))
  43.             Dim arc = ca2d.ToCurve(Matrix3d.Identity)
  44.             btr.AppendEntity(arc)
  45.             tr.AddNewlyCreatedDBObject(arc, True)
  46.             tr.Commit()
  47.         End Using
  48.     End Sub
 楼主| 发表于 2010-10-26 21:56:00 | 显示全部楼层
有时间我直接把C#的dll最新版贴上吧
发表于 2010-10-30 19:34:00 | 显示全部楼层
学习了,这样的贴一顶要顶!!!
发表于 2010-12-24 20:24:03 | 显示全部楼层
嗯,看看学习学习
发表于 2011-11-8 09:58:26 | 显示全部楼层
学习啊![em0]
发表于 2012-6-12 09:38:55 | 显示全部楼层
支持,初学多看看程序
发表于 2012-6-21 17:16:08 | 显示全部楼层
楼主,你是如何确定你想要返回什么样的弧就返回什么样的弧呢?比如说,相交后我只想要劣弧,或只想要优弧,通过什么条件可以得到想要的结果?
 楼主| 发表于 2012-6-21 23:48:06 | 显示全部楼层
这个判断不难吧 首尾的角度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 05:27 , Processed in 0.140642 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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