protected override void SubViewportDraw(ViewportDraw vd) { Teigha.GraphicsInterface.Viewport vp = vd.Viewport; Matrix3d mat = vp.WorldToEyeTransform; Point3d p0 = mat * m_pts[0]; Point3d p2 = mat * m_pts[2]; m_pts[1] = new Point3d(p0.X, p2.Y, p2.Z); m_pts[3] = new Point3d(p2.X, p0.Y, p2.Z); mat = vp.EyeToWorldTransform; m_pts[1] = m_pts[1].TransformBy(mat); m_pts[3] = m_pts[3].TransformBy(mat); vd.SubEntityTraits.FillType = FillType.FillNever; vd.Geometry.Polygon(m_pts); vp = null; }
protected override void SubViewportDraw(ViewportDraw vd) { Point3d ptComputed = new Point3d(); Point3d pDrawAtDrag; if (computeDragPoint(ref ptComputed)) { pDrawAtDrag = ptComputed; } using (Teigha.GraphicsInterface.Viewport pViewport = vd.Viewport) { if (m_pOwner.Model == null || m_pOwner.Model.RenderType.GetHashCode() < 2 /*Teigha.GraphicsSystem.RenderType.kDirect*/) { // Commented since renderTypes implemented, so no need to translate objects for kDirect renderType Vector3d vpDirection = pViewport.ViewDirection; Point3d vpOrigin = pViewport.CameraLocation; Vector3d vecTmp = ptComputed - vpOrigin; double ptLength = vecTmp.DotProduct(vpDirection); ptComputed -= vpDirection * ptLength; } Point2d ptDim = pViewport.GetNumPixelsInUnitSquare(m_point); Vector3d v = new Vector3d(m_pOwner.GRIPSIZE / ptDim.X, 0, 0); v = v.TransformBy(pViewport.WorldToEyeTransform); double dGripSize = v.Length; Point3d ptOnScreen = ptComputed.TransformBy(pViewport.WorldToEyeTransform); using (SubEntityTraits pSubTraits = vd.SubEntityTraits) { pSubTraits.FillType = FillType.FillAlways; } Point3dCollection ptColl = new Point3dCollection(); ptColl.Add(new Point3d(ptOnScreen.X - dGripSize, ptOnScreen.Y - dGripSize, ptOnScreen.Z)); ptColl.Add(new Point3d(ptOnScreen.X + dGripSize, ptOnScreen.Y - dGripSize, ptOnScreen.Z)); ptColl.Add(new Point3d(ptOnScreen.X + dGripSize, ptOnScreen.Y + dGripSize, ptOnScreen.Z)); ptColl.Add(new Point3d(ptOnScreen.X - dGripSize, ptOnScreen.Y + dGripSize, ptOnScreen.Z)); vd.Geometry.PolygonEye(ptColl); } }
// this more informative callback may be used to implement subentities selection public override SelectionReactorResult Selected(PathNode pthNode, Teigha.GraphicsInterface.Viewport viewInfo) { return(SelectionReactorResult.NotImplemented); }