【问题标题】:IntersectWith.None VB.NET AutoCADIntersectWith.None VB.NET AutoCAD
【发布时间】:2018-03-15 05:46:01
【问题描述】:

我对 IntersectWith 函数有疑问

我在 VBA 中使用过这个函数,它有一个选项Intersect.None

但是当我从 VB.NET 调用函数时,这个选项不存在。 我尝试使用可用的选项,但都检测到不正确的交叉点

yourCADObjectII.IntersectWith(myText, Intersect.ExtendBoth, points, New IntPtr(0), New IntPtr(0)) 

yourCADObjectII.IntersectWith(myText, Intersect.OnBothOperands, points, IntPtr.Zero, IntPtr.Zero)

yourCADObjectII.IntersectWith(myText, Intersect.ExtendArgument, points, IntPtr.Zero, IntPtr.Zero)

yourCADObjectII.IntersectWith(myText, Intersect.ExtendThis, points, IntPtr.Zero, IntPtr.Zero)

我不知道如何在 VB.NET 中使用 IntersectWith,就像在 VBA 中使用 Intersect.None 选项一样。

我尝试检测文本字符串与闭合折线,文本在折线内,我想检测文本是否与LWPolyline 相交。

文字有不同的旋转,折线有不同的几何形状。

【问题讨论】:

    标签: vb.net autocad


    【解决方案1】:

    我认为您正在正确实施 IntersectWith 并且您的问题不在于您提到的内容。从内存中,当您尝试对 DBText 与任何其他对象使用 intersectwith 时,它实际上并不会计算与文本本身的交集,而是与其边界框计算交集。而且那个边界框并不总是完全适合文本。它有时比文本大(取决于旋转)。或者有时它比文本小,尤其是在使用 (y, j, q,g, etc...)等字母时

    因此,最好的办法是尝试找到适合旋转文本的边界框,方法是找到适合相同文本且没有旋转的边界框,然后旋转该框(使用闭合的折线捕获所有 4 个角) 现在您的问题变成了两条折线的交集,而不是文本和折线。然后你可以使用 intersectWith 来获取交点

    【讨论】:

    • 谢谢,我会根据您的想法为我的程序找到解决方案。
    【解决方案2】:

    据了解,COM/ActiveX IntersectWith 方法没有任何Intersect.None 选项。它有一个 acExtendNone 选项,其 .NET 等效项为 Intersect.OnBothOperands

    COM                  .NET
    
    acExtendNone         Intersect.OnBothOperands  Does not extend either object.
    
    acExtendThisEntity   Intersect.ExtendThis      Extends the base object.
    
    acExtendOtherEntity  Intersect.ExtendArgument  Extends the object passed as an argument.
    
    acExtendBoth         Intersect.ExtendBoth      Extends both objects.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多