public BaseNewPrimitiveView(NewPrimitiveViewModel viewModel, ILoggerFacade logger)
        {
            this.viewModel = viewModel;
            this.logger    = logger;

            translation = new TranslateTransform3D();
            scale       = new ScaleTransform3D();
            rotation    = new RotateTransform3D();

            Transform = new Transform3DGroup
            {
                Children = { rotation, scale, translation }
            };
            PrimitivesPickService.SetPrimitiveData(this, viewModel.Model);
        }
        public Visual3D Create(object item)
        {
            Visual3D result = null;

            item.MatchClass <SnappedCylinder>(cylinderData => result   = CreateCylinderView(cylinderData));
            item.MatchClass <SnappedCone>(coneData => result           = CreateConeView(coneData));
            item.MatchClass <SnappedSphere>(sphereData => result       = CreateSphereView(sphereData));
            item.MatchClass <SnappedStraightGenCylinder>(sgc => result = CreateSgcView(sgc));
            item.MatchClass <SnappedBendedGenCylinder>(bgc => result   = CreateBgcView(bgc));
            item.MatchClass <SnappedCuboid>(cuboidData => result       = CreateCuboidView(cuboidData));

            Contract.Assume(result != null);
            PrimitivesPickService.SetPrimitiveData(result, item as SnappedPrimitive);
            return(result);
        }