/// <summary> /// Окрашивание места для хвата в чёрный /// </summary> /// <param name="iPart">Интерфейс детали</param> /// <param name="side">Направление</param> private void CreateBlackColor(ksPart iPart, bool side) { //Получение радиуса ручки var X = _modelelParameters.Parameter(ParametersName.HandleRadius).Value; //Получение длины гладкой части var Y = _modelelParameters.Parameter(ParametersName.ConnectionLength).Value + 5; var Z = 0; //Получаем массив граней объекта ksEntityCollection entityCollectionPart = (ksEntityCollection)iPart.EntityCollection((short)Obj3dType.o3d_face); //Сортируем грани по заданным координатам if (side == true) { entityCollectionPart.SelectByPoint(X, Y, Z); } else { entityCollectionPart.SelectByPoint(X, -Y, Z); } //Получаем первый элмент массива ksEntity element = entityCollectionPart.First(); //Получаем интерфейс управления цветом детали ksColorParam colorParam = element.ColorParam(); //Назначаем цвет colorParam.color = 333333; //Применяем изменения element.Update(); }
/// <summary> /// Построение держателя для блинов /// </summary> /// <param name="iPart">Интерфейс детали</param> /// <param name="side">Направление</param> private void CreateHolder(ksPart iPart, bool side) { //Получаем массив граней объекта ksEntityCollection entityCollectionPart = (ksEntityCollection)iPart.EntityCollection((short)Obj3dType.o3d_face); //Получаем длину гладкой части var Y = _modelelParameters.Parameter(ParametersName.ConnectionLength).Value / 2; //Получаем длину места хвата var Y1 = _modelelParameters.Parameter(ParametersName.GripLength).Value / 2; var Y2 = 15; //Сортируем грани по координатам if (side == false) { entityCollectionPart.SelectByPoint(0, -(Y + Y1 + Y2), 0); } if (side == true) { entityCollectionPart.SelectByPoint(0, (Y + Y1 + Y2), 0); } //Получаем первый элемент массива var planeDetal = entityCollectionPart.First(); //Создаем новый эскиз ksEntity iSketch = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_sketch); //Получаем интерфейс свойств эскиза ksSketchDefinition iDefinitionSketch = (ksSketchDefinition)iSketch.GetDefinition(); //Устанавливаем плоскость эскиза iDefinitionSketch.SetPlane(planeDetal); //Создание эскиза iSketch.Create(); //Создание нового 2Д документа ksDocument2D iDocument2D = (ksDocument2D)iDefinitionSketch.BeginEdit(); //Получение радиуса рукоятки var rad = _modelelParameters.Parameter(ParametersName.HolderRadius).Value; //Создание кругов iDocument2D.ksCircle(0, 0, 3, 1); iDocument2D.ksCircle(0, 0, rad, 1); //Создание эскиза iDefinitionSketch.EndEdit(); //Получение глубины выдавливания var depth = _modelelParameters.Parameter(ParametersName.HolderLength).Value; //Выполнение выдавливания ExctrusionSketch(iPart, iSketch, depth, true); }
/// <summary> /// Метод создает фаску в 45' /// </summary> public bool Create(double dist, Point3d coor) { try { ksEntityCollection edge = (ksEntityCollection)_app.Part.EntityCollection((short)Obj3dType.o3d_edge); if ((edge != null) && (edge.SelectByPoint(coor.X, coor.Y, coor.Z)) && (edge.GetCount() != 0)) { ksEntity chamfer = (ksEntity)_app.Part.NewEntity((short)Obj3dType.o3d_chamfer); ksChamferDefinition chDef = (ksChamferDefinition)chamfer.GetDefinition(); if (chDef != null) { chDef.tangent = true; chDef.SetChamferParam(false, dist, dist); ksEntityCollection chamferCollection = (ksEntityCollection)chDef.array(); chamferCollection.Clear(); chamferCollection.Add(edge.GetByIndex(0)); chamfer.Create(); } } return(true); } catch { return(false); } }
/// <summary> /// создание фаски /// </summary> /// <param name="param"></param> public void CreateChamfer(Parameters param) { double Lenght1 = param.Lenght1; double Lenght2 = param.Lenght2; double Angle1 = param.Angle1; var doc = (ksDocument3D)_kompas.ActiveDocument3D(); ksPart part2 = (ksPart)doc.GetPart((short)Part_Type.pTop_Part); // новый компонент if (part2 != null) { ksEntityCollection collect2 = (ksEntityCollection)part2.EntityCollection((short)Obj3dType.o3d_face); if (collect2 != null && collect2.SelectByPoint(0, 0, Lenght1 + 5 + Lenght2) && collect2.GetCount() != 0) { ksEntity entityChamfer = (ksEntity)part2.NewEntity((short)Obj3dType.o3d_chamfer); if (entityChamfer != null) { ksChamferDefinition ChamferDef = (ksChamferDefinition)entityChamfer.GetDefinition(); if (ChamferDef != null) { ChamferDef.tangent = false; ChamferDef.SetChamferParam(true, Angle1, Angle1); ksEntityCollection arr = (ksEntityCollection)ChamferDef.array(); // динамический массив объектов if (arr != null) { for (int i = 0, count = collect2.GetCount(); i < count; i++) { arr.Add(collect2.GetByIndex(i)); } entityChamfer.Create(); } } } } } }
/// <summary> /// Построение места для хвата /// </summary> private void CreateGrip(ksPart iPart, bool side) { //Объявление объекта плоскости ksEntity planeDetal = null; var direction = true; //Если длина гладкого места равна 0 if (_modelelParameters.Parameter(ParametersName.ConnectionLength).Value == 0) { //Получаем интерфейс базовой плоскости ХОY planeDetal = (ksEntity)iPart.GetDefaultEntity((short)Obj3dType.o3d_planeXOZ); if (side == true) { direction = false; } } else { //Получаем массив граней объекта ksEntityCollection entityCollectionPart = (ksEntityCollection)iPart.EntityCollection((short)Obj3dType.o3d_face); //Получаем длину гладкой части var Y = _modelelParameters.Parameter(ParametersName.ConnectionLength).Value / 2; //Сортируем грани по принадлежности к координатам if (side == false) { entityCollectionPart.SelectByPoint(0, -Y, 0); } if (side == true) { entityCollectionPart.SelectByPoint(0, Y, 0); } //Получение первой грани массива planeDetal = entityCollectionPart.First(); } //Создаем новый эскиз ksEntity iSketch = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_sketch); //Получаем интерфейс свойств эскиза ksSketchDefinition iDefinitionSketch = (ksSketchDefinition)iSketch.GetDefinition(); //Устанавливаем плоскость эскиза iDefinitionSketch.SetPlane(planeDetal); //Создание эскиза iSketch.Create(); //Создание нового 2Д документа ksDocument2D iDocument2D = (ksDocument2D)iDefinitionSketch.BeginEdit(); //Получение радиуса ручки var rad = _modelelParameters.Parameter(ParametersName.HandleRadius).Value; //Создание круга iDocument2D.ksCircle(0, 0, rad, 1); //Создание эскиза iDefinitionSketch.EndEdit(); //Получение глубины выдавливания var depth = _modelelParameters.Parameter(ParametersName.GripLength).Value / 2; //Выполнение выдавливания ExctrusionSketch(iPart, iSketch, depth, direction); }