/// <summary> /// Инициализация необходимых параметров для работы с Компас 3D. /// </summary> public BuilderOfBlank() { _kompas = KompasWrapper.Instance; _kompas.ShowCAD(); _startX = 0; _startY = _startX; }
/// <summary> /// Построить модель стакана в САПР Компас 3D. /// </summary> /// <param name="photoFrame">Шаблон стакана.</param> /// <exception cref="InvalidOperationException"> /// Вызывается тогда, когда параметры стакана /// имеют недопустимые значения.</exception> public void Build(IGlass glass) { if (glass.IsValid == false) { var msg = String.Format("Шаблон стакана имеет" + " недопустимые параметры для построения."); throw new InvalidOperationException(msg); } _kompas.ShowCAD(); _startX = 0; _startY = 0; _glass = glass; _calcParams = new CalcParams(glass); var doc = _kompas.Document3D; doc.Create(); var part = (ksPart)doc.GetPart((short)Part_Type.pTop_Part); var sketchBase = (ksEntity)part.NewEntity( (short)Obj3dType.o3d_sketch); sketchBase.name = "Эскиз основания"; var basePlane = (ksEntity)part.GetDefaultEntity( (short)Obj3dType.o3d_planeXOY); var sketchDefBase = (ksSketchDefinition)sketchBase.GetDefinition(); sketchDefBase.SetPlane(basePlane); sketchBase.Create(); var sketchCutSide = (ksEntity)part.NewEntity( (short)Obj3dType.o3d_sketch); sketchCutSide.name = "Эскиз вырезанных внутренностей"; var offsetCutPlane = _kompas.CreateOffsetPlane( part, basePlane, glass.Height); var sketchDefCutSide = (ksSketchDefinition)sketchCutSide.GetDefinition(); sketchDefCutSide.SetPlane(offsetCutPlane); sketchCutSide.Create(); GenerateBlank2d(sketchDefBase); GenerateBlank3d(sketchBase, part); GenerateCutSide2d(sketchDefCutSide); GenerateCutSide3d(sketchCutSide, part); if (glass.Filleted) { FilletedBottomAndTop(glass, part); } }