2017-10-03 7 views
0

Ich habe ein Problem mit der Funktion intersectWithIntersectWith.None VB.NET AutoCAD

ich diese Funktion mit VBA verwendet haben, und es hat eine Option Intersect.None

Aber wenn ich rufe die Funktion von VB.NET dieser Option existiert nicht. Ich versuche, um die verfügbaren Optionen zu verwenden, aber alle erkennen eine falsche Kreuzung

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) 

Ich weiß nicht, wie IntersectWith in VB.NET zu verwenden, wie ich mit der Intersect.None Option in VBA verwendet.

Ich habe versucht, eine Textzeichenfolge im Vergleich zu einer geschlossenen Polylinie zu erkennen, der Text ist innerhalb einer Polylinie, ich möchte erkennen, ob der Text mit der LWPolyline schneidet.

Der Text hat verschiedene Rotationen und die Polylinie hat eine andere Geometrie.

Antwort

0

Soweit bekannt, die COM/ActiveX IntersectWith Methode hat keine Intersect.None Option. Es hat eine acExtendNone Option, deren .NET-Äquivalent Intersect.OnBothOperands ist.

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

Ich denke, Sie implementieren IntersectWith korrekt und Ihr Problem ist nicht mit dem, was Sie erwähnten. Wenn Sie versuchen, DBText mit einem anderen Objekt zu verwenden, berechnet es aus dem Speicher nicht die Schnittmenge mit dem Text selbst, sondern mit seiner Begrenzungsbox. Und diese Bounding Box passt nicht immer genau zum Text. Es ist manchmal größer als der Text (abhängig von der Rotation). Oder manchmal ist es kleiner als der Text, besonders wenn Sie Buchstaben wie (y, j, q, g, etc ...) verwenden.

So ist Ihre beste Wette zu versuchen, die Bounding-Box zu finden, die zu Ihrem gedrehten Text passt, indem Sie suchen die Begrenzungsbox, die denselben Text ohne Drehung anpasst, dann diese Box drehen (mit einer geschlossenen Polylinie, um alle 4 Ecken zu erfassen) Jetzt wird Ihr Problem Kreuzung von zwei Polylinien anstelle von Text und Polylinie. Und dann können Sie intersectWith verwenden, um Schnittpunkte zu erhalten

+0

Danke, ich werde um Ihre Idee arbeiten, um eine Lösung für mein Programm zu finden. –