| Article | 70000299 |
| Type | Wish |
| Product | Engine |
| Date Added | 2/10/2015 12:00:00 AM |
| Fixed | (4/7/2015 12:00:00 AM) |
| Submitted by | Sami Tainio |
Summary
I was looking for the lines where the triangles of the polyface intersect. For example two spheres have intersection line of a circle. Other entities have IntersectWith method that does this, but not vdPolyface.
Solution
In version 7004 we exported a new method on the vdPolyface object like below
summary>Get the intersection gPoints collection where two closed polyfaces intersect.
param name="A">First Polyface
param name="B">Second Polyface
returns>A collection of gPoints that represent the intersection lines of the two polyfaces.
public gPoints[] GetIntersectionPoints(vdPolyface A, vdPolyface B)
This method can be used as following
vdPolyface pface1 = doc.Model.Entities[0] as vdPolyface;
vdPolyface pface2 = doc.Model.Entities[1] as vdPolyface;
vdPolyface newface = new vdPolyface(doc);
gPoints[] pts = newface.GetIntersectionPoints (pface2, pface1);
foreach (gPoints item in pts)
{
vdPolyline poly = new vdPolyline(doc, item);
doc.Model.Entities.AddItem(poly);
poly.PenColor.ColorIndex = 1;
poly.LineWeight = VdConstLineWeight.LW_158;
}
doc.Redraw(true);
And in VB
Dim pf1 As VectorDraw_Professional.vdPolyface
Dim pf2 As VectorDraw_Professional.vdPolyface
Dim pf As VectorDraw_Professional.vdPolyface
Dim regions() As gPoints
Dim poly As VectorDraw_Professional.vdPolyline
Dim polyFig As vdrawi5.vdPolyline
Dim document As VectorDraw_Professional.vdDocument
Set document = VDraw1.ActiveDocument.WrapperObject
Set pf1 = document.Model.entities(0)
Set pf2 = document.Model.entities(1)
Set pf = VDraw1.CreateNewVdFigure("vdPolyface").WrapperObject
regions = pf.GetIntersectionPoints(pf1, pf2)
For i = LBound(regions) To UBound(regions)
Set polyFig = VDraw1.CreateNewVdFigure("vdPolyline")
Set poly = polyFig.WrapperObject
poly.VertexList.AddRange regions(i)
document.Model.entities.AddItem poly
polyFig.PenColor = 2
polyFig.LineWeight = LW_158
Next
VDraw1.Redraw
