2017-10-03 29 views
0

私はVBAで、この機能を使用していたIntersectWith.None VB.NET AutoCADの

IntersectWith機能に問題があり、それがオプションIntersect.None

を持っているしかし、私はVB.NETこれから関数を呼び出すときオプションは存在しません。 私が利用可能なオプションを使用しようとするが、すべては私がIntersect.NoneオプションでVBAに使用されるようにVB.NETでIntersectWithを使用する方法がわからない

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) 

間違った交差点を検出します。

文字列を検出しようとしましたが、閉じたポリラインとテキストがポリラインの内側にあり、テキストがLWPolylineと交差するかどうかを検出したいと思います。

テキストの回転が異なり、ポリラインのジオメトリが異なります。

答えて

0

知る限り、COM/ActiveX IntersectWithメソッドにはIntersect.Noneオプションがありません。それには、Intersect.OnBothOperandsという.NET対応のacExtendNoneオプションがあります。

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. 
0

私はあなたが正しくIntersectWithを実装していると思いますが、あなたの問題はあなたが言及したものではないと思います。メモリから、他のオブジェクトとのDBTextのためにintersectwithを使用しようとすると、実際にテキスト自体との交差点が計算されるのではなく、その境界ボックスが計算されます。そして、その境界ボックスがテキストを正確に合わせるとは限りません。テキストよりも大きくなることがあります(回転によって異なります)。場合によっては、(y、j、q、gなど...)のような文字を使用する場合は、テキストよりも小さい場合があります。

したがって、回転したテキストに合った境界ボックスを見つけてみてください回転しないで同じテキストに収まるバウンディングボックス(閉じたポリラインを使用して4つのコーナーをすべてキャプチャ) 問題は、テキストとポリラインではなく2つのポリラインの交点になります。交差点を得るためにintersectWithを使用することができます

+0

ありがとう、私は私のプログラムの解決策を見つけるためにあなたの考えを回避するつもりです。 –

関連する問題