public class ConduitGripOverrule : GripOverrule
{
public static bool OverrulesOn = false;
public static ConduitGripOverrule CndtOverrule
= new ConduitGripOverrule
(); public override void GetGripPoints(Entity entity, GripDataCollection grips, double curViewUnitSize, int gripSize, Vector3d curViewDir, GetGripPointsFlags bitFlags)
{
Polyline plyLine = entity as Polyline;
SegmentType previousSegmentType = SegmentType.Empty;
for (int i = 0; i < plyLine.NumberOfVertices; i++)
{
if (plyLine.GetSegmentType(i) == SegmentType.Line)
{
LineSegment3d lseg = plyLine.GetLineSegmentAt(i);
if (previousSegmentType != SegmentType.Line)
{
ConduitGripData cndtGripDataStartPoint
= new ConduitGripData
(); cndtGripDataStartPoint.GripPoint = lseg.StartPoint;
cndtGripDataStartPoint.GripType = GripType.StartPoint;
cndtGripDataStartPoint.Direction = lseg.Direction;
grips.Add(cndtGripDataStartPoint);
}
ConduitGripData cndtGripDataMidPoint
= new ConduitGripData
(); cndtGripDataMidPoint.GripPoint = lseg.MidPoint;
cndtGripDataMidPoint.GripType = GripType.MidPoint;
cndtGripDataMidPoint.Direction = lseg.Direction;
grips.Add(cndtGripDataMidPoint);
ConduitGripData cndtGripDataEndPoint
= new ConduitGripData
(); cndtGripDataEndPoint.GripPoint = lseg.EndPoint;
cndtGripDataEndPoint.GripType = GripType.EndPoint;
cndtGripDataEndPoint.Direction = lseg.Direction;
grips.Add(cndtGripDataEndPoint);
}
previousSegmentType = plyLine.GetSegmentType(i);
}
//base.GetGripPoints(entity, grips, curViewUnitSize, gripSize, curViewDir, bitFlags);
}
public override void MoveGripPointsAt(Entity entity, GripDataCollection grips, Vector3d offset, MoveGripPointsFlags bitFlags)
{
base.MoveGripPointsAt(entity, grips, offset, bitFlags);
}
//public override void MoveGripPointsAt(Entity entity, IntegerCollection indices, Vector3d offset)
//{
// base.MoveGripPointsAt(entity, indices, offset);
//}
}