2017-10-03 4 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 옵션이 없습니다. 그것은 인 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 등 ...)와 같은 글자를 사용할 때 텍스트보다 작습니다.

그래서 가장 좋은 방법은 회전 된 텍스트에 맞는 테두리 상자를 찾는 것입니다 회전이없는 동일한 텍스트에 맞는 경계 상자 상자를 회전합니다 (닫힌 폴리선을 사용하여 네 모서리를 모두 캡처합니다) 이제 문제는 텍스트와 폴리 라인 대신 두 개의 폴리선이 교차하는 부분이됩니다. 교차점을 얻기 위해 intersectWith를 사용할 수 있습니다.

+0

감사합니다. 내 프로그램에 대한 해결책을 찾기 위해 아이디어를 찾도록 노력하겠습니다. –