Exemplo n.º 1
0
        /// <inheritdoc />
        public void Build(ksDocument3D document3D, Parameters.Parameters parameters)
        {
            var part         = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);
            var currentPlane = (ksEntity)part.GetDefaultEntity((short)Obj3dType.o3d_planeYOZ);

            var entitySketch     = (ksEntity)part.NewEntity((short)Obj3dType.o3d_sketch);
            var sketchDefinition = (ksSketchDefinition)entitySketch.GetDefinition();

            sketchDefinition.SetPlane(currentPlane);
            entitySketch.Create();

            var sketchEdit = (ksDocument2D)sketchDefinition.BeginEdit();

            var E = parameters[ParameterName.E];
            var C = parameters[ParameterName.C];
            var D = parameters[ParameterName.D];
            var A = parameters[ParameterName.A];
            var B = parameters[ParameterName.B];

            sketchEdit.ksLineSeg(0, 0, E / 2, 0, 1);
            sketchEdit.ksLineSeg(E / 2, 0, E / 2, C, 1);
            sketchEdit.ksLineSeg(E / 2, C, D / 2, C, 1);
            sketchEdit.ksLineSeg(D / 2, C, A / 2, B, 1);
            sketchEdit.ksLineSeg(A / 2, B, 0, B, 1);
            sketchEdit.ksLineSeg(0, B, 0, 0, 1);
            sketchEdit.ksLineSeg(0, -2, 0, 16, 3);
            sketchDefinition.EndEdit();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Головная функция библиотеки
        /// </summary>
        /// <param name="command">Номер команды в меню</param>
        /// <param name="mode">Режим работы</param>
        /// <param name="kompas">интерфейс KompasObject</param>
        public void ExternalRunCommand([In] short command, [In] short mode,
                                       [In, MarshalAs(UnmanagedType.IDispatch)] object kompas)
        {
            _kompas = (KompasObject)kompas;
            if (_kompas != null)
            {
                _doc3 = (ksDocument3D)_kompas.ActiveDocument3D();
                if (_doc3 == null || _doc3.reference == 0)
                {
                    _doc3 = (ksDocument3D)_kompas.Document3D();
                    _doc3.Create(true, true);

                    _doc3.comment     = "Зубчатое колесо";
                    _doc3.drawMode    = 3;
                    _doc3.perspective = true;
                    _doc3.UpdateDocumentParam();
                }
                switch (command)
                {
                case 1:
                    PluginFrm.Instanse.Plugin = this;
                    PluginFrm.Instanse.ShowDialog();
                    break;
                }
            }
        }
        public void RebuildModel(DataTable table)
        {
            ksDocument3D doc = _kompas.ActiveDocument3D();

            var part = doc.GetPart(-1);

            var vr = part.VariableCollection;

            var count = vr.GetCount;

            List <kompasVariable> Variables = new List <kompasVariable>();

            //создаем новый список переменных
            for (int i = 0; i < count; i++)
            {
                kompasVariable VAR = new kompasVariable();
                VAR.displayName = table.Rows[i]["displayName"].ToString();
                VAR.name        = table.Rows[i]["name"].ToString();
                VAR.note        = table.Rows[i]["note"].ToString();
                VAR.value       = table.Rows[i]["value"].ToString();
                Variables.Add(VAR);
            }

            //Variables = Variables.OrderBy(o => o.name).ToList();

            //каджую новую переменную из списка записываем в модель
            foreach (var VAR in Variables)
            {
                ChangeVariableOfAssembly(VAR.name, VAR.value);
            }
            part.RebuildModel();
        }
        void ChangeVariableOfAssembly(string varName, string value)
        {
            if (varName == "value")
            {
                //
            }

            ksDocument3D doc = _kompas.ActiveDocument3D();

            var parts = doc.PartCollection(true);

            var part = doc.GetPart(-1); //parts.GetByName(partname, true, true);

            var vr = part.VariableCollection;

            var count = vr.GetCount;

            var targetVariable = vr.GetByName(varName, true, true);


            part.BeginEdit();
            targetVariable.value = Convert.ToDouble(value);
            part.Update();
            // part.RebuildModel();
            part.EndEdit(true);
            parts.Refresh();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Создание двери
        /// </summary>
        /// <param name="doorParameters"></param>
        public void BuildDoor(DoorParameters doorParameters)
        {
            ConnectToKompas();

            ksDocument3D doc = Kompas3D.Document3D();

            doc.Create();

            ksPart doorPart = doc.GetPart((short)
                                          Part_Type.pTop_Part);
            ksEntity planeXoY = doorPart.GetDefaultEntity((short)
                                                          Obj3dType.o3d_planeXOY);
            ksEntity sketch = doorPart.NewEntity((short)
                                                 Obj3dType.o3d_sketch);
            ksSketchDefinition sd = sketch.GetDefinition();

            sd.SetPlane(planeXoY);
            sketch.Create();
            ksDocument2D topSketch = sd.BeginEdit();

            DrawRectangle(topSketch,
                          -doorParameters.HeightDoor / 2.0, -doorParameters.WidthDoor / 2.0,
                          doorParameters.HeightDoor, doorParameters.WidthDoor,
                          null);
            sd.EndEdit();
            Extrude(doorPart, sketch, doorParameters.WeigthDoor,
                    (short)Direction_Type.dtNormal);
            DoorModification(doorParameters, doorPart, planeXoY);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Метод построения разъемов MIDI.
        /// </summary>
        /// <param name="document3D"></param>
        /// <param name="data"></param>
        private void MIDIBuild(ksDocument3D document3D,
                               KeyboardParametersStorage data)
        {
            part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

            var entityOffsetPlane = (ksEntity)part.NewEntity((short)Obj3dType.o3d_planeOffset);
            var entitySketch      = (ksEntity)part.NewEntity((short)Obj3dType.o3d_sketch);

            entitySketch.name = "Разъемы MIDI";

            if (entityOffsetPlane != null)
            {
                var offsetDefinition = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                if (offsetDefinition != null)
                {
                    var basePlane = (ksEntity)part.GetDefaultEntity((short)Obj3dType.o3d_planeXOZ);
                    basePlane.name = "Начальная плоскость";

                    offsetDefinition.direction = false;
                    offsetDefinition.offset    = data.BodyDepth;
                    offsetDefinition.SetPlane(basePlane);

                    entityOffsetPlane.name   = "Смещенная плоскость";
                    entityOffsetPlane.hidden = true;
                    entityOffsetPlane.Create();

                    var sketchDef = (ksSketchDefinition)entitySketch.GetDefinition();
                    if (sketchDef != null)
                    {
                        sketchDef.SetPlane(entityOffsetPlane);
                        entitySketch.Create();

                        var sketchEdit = (ksDocument2D)sketchDef.BeginEdit();

                        for (int i = 0; i < data.CommutationMIDI; i++)
                        {
                            sketchEdit.ksCircle(-(_margin), -2.5, 0.75, 1);
                            sketchEdit.ksCircle(-(_margin), -2.5, 0.7, 1);


                            sketchEdit.ksCircle(-(_margin) - 0.350, -2.5,
                                                0.05, 1);
                            sketchEdit.ksCircle(-(_margin) - 0.2625, -2.2375,
                                                0.05, 1);
                            sketchEdit.ksCircle(-(_margin), -2.150, 0.05, 1);
                            sketchEdit.ksCircle(-(_margin) + 0.2625, -2.2375,
                                                0.05, 1);
                            sketchEdit.ksCircle(-(_margin) + 0.350, -2.5,
                                                0.05, 1);

                            // Производим обновление отступа для следующего
                            // разъема.
                            _margin += 2.5;
                        }
                        sketchDef.EndEdit();
                        CutMIDI(part, entitySketch);
                    }
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Построение стакана.
        /// </summary>
        /// <param name="parameters">Параметры стакана.</param>
        /// <param name="checkFaceted">Определяем, граненый ли стакан.</param>
        public void CreateDetail(GlassfulParametrs parameters, bool checkFaceted)
        {
            if (_kompas != null)
            {
                _doc3D = (ksDocument3D)_kompas.Document3D();
                _doc3D.Create(false, true);
            }

            var wallwidth       = parameters.WallWidth;
            var highdiameter    = parameters.HighDiameter;
            var height          = parameters.Height;
            var bottomthickness = parameters.BottomThickness;
            var lowdiameter     = parameters.LowDiameter;

            _doc3D = (ksDocument3D)_kompas.ActiveDocument3D();
            _part  = (ksPart)_doc3D.GetPart((short)Part_Type.pTop_Part);

            if (checkFaceted) // Определяем реализацию, если мы нажали на чекбокс, то идем по вектке граненого стакана
            {
                BuildFaceted(wallwidth, highdiameter, height, bottomthickness, lowdiameter);
            }
            else // Иначе строим обычный стакан
            {
                GlassfulSketch(wallwidth, highdiameter, height, bottomthickness, lowdiameter);
            }
        }
        public void getParts()
        {
            ksDocument3D  doc       = _kompas.ActiveDocument3D();
            var           parts     = doc.PartCollection(true);
            List <ksPart> partsList = new List <ksPart>();

            try
            {
                var i = -1;
                while (true)
                {
                    ksPart part = doc.GetPart(i);
                    if (part == null)
                    {
                        break;
                    }
                    partsList.Add(part);
                    i++;
                }
            }
            catch (Exception)
            {
                // throw;
            }
            var ss = parts[1].VariableCollection();
            //_kompas.ksMessage()
        }
Exemplo n.º 9
0
        /// <summary>
        /// Задает ориентацию.
        /// </summary>
        /// <param name="document3D">3D документ.</param>
        /// <param name="index">Индекс.</param>
        public void SetViewProjection(ksDocument3D document3D, int index)
        {
            if (document3D == null)
            {
                return;
            }

            var projectionCollection = document3D.GetViewProjectionCollection() as ksViewProjectionCollection;

            if (projectionCollection == null)
            {
                return;
            }
            var projection = projectionCollection.Next() as ksViewProjection;

            while (projection != null)
            {
                if (projection.index == index)
                {
                    projection.SetCurrent();
                    break;
                }

                projection = projectionCollection.Next();
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Метод, создающий панель управления клавиатуры.
        /// </summary>
        /// <param name="document3D"></param>
        /// <param name="data"></param>
        public override void Build(ksDocument3D document3D,
                                   KeyboardParametersStorage data)
        {
            if (document3D == null || data == null)
            {
                throw new NullReferenceException("Метод ссылается на null объект.");
            }

            if (data.PanelDisplay == true)
            {
                DisplayBuild(document3D, data);
            }
            if (data.PanelButtons == true)
            {
                ButtonsBuild(document3D, data);
            }
            if (data.PanelKnobs == true)
            {
                KnobsBuild(document3D, data);
            }
            if (data.PanelWheel != WheelSetup.Disable)
            {
                WheelSpaceBuild(document3D, data);
                WheelBuild(document3D, data);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Строит модель.
        /// </summary>
        /// <param name="document3D">3D документ.</param>
        /// <param name="parameters">Параметры модели.</param>
        public void Build(ksDocument3D document3D, Dictionary <Parameter, ParameterData> parameters)
        {
            var modelParts = new List <IModelPart>
            {
                new ModelBody(),
                new Leaf(),
                new Glazing(),
                new WindowSill()
            };


            HideAllGeom(document3D);
            SetViewProjection(document3D, 7);
            TimeSpan _tSpan;

            for (int i = 0; i < 10; i++)
            {
                var _stopwatch = new Stopwatch();
                _stopwatch.Start();
                foreach (var modelPart in modelParts)
                {
                    modelPart.Create(document3D, parameters);
                }
                _stopwatch.Stop();
                _tSpan = _stopwatch.Elapsed;

                MessageBox.Show("Время построения: " + _tSpan.TotalSeconds.ToString());
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Главнй метод построения детали
        /// </summary>
        /// <param name="parameters">Входные параметры детали</param>
        public void CreateDetail(HandleParameters parameters)
        {
            if (_kompas != null)
            {
                _doc3D = (ksDocument3D)_kompas.Document3D();
                _doc3D.Create(false, true);
            }

            var backRadius  = parameters.BackDiameter * 5;
            var backLenght  = parameters.BackLenght * 10;
            var frontLenght = parameters.FrontLenght * 10;
            var holeRadius  = parameters.HoleDiameter * 5;
            var notchCount  = parameters.NotchCount;

            _doc3D = (ksDocument3D)_kompas.ActiveDocument3D();
            _part  = (ksPart)_doc3D.GetPart((short)Part_Type.pTop_Part);

            CreateMainSketch(backRadius, backLenght, frontLenght, holeRadius);

            RotateSketch();

            CreateNotchSketch();

            ExtrudeSketch(frontLenght, backLenght, notchCount);
        }
Exemplo n.º 13
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="document3D"></param>
 /// <param name="kompas"></param>
 /// <param name="infAir"></param>
 public CreatingModel(ksDocument3D document3D, KompasObject kompas, InfAirliner infAir)
 {
     _doc3D       = document3D;
     _kompasObj   = kompas;
     _infAirliner = infAir;
     _part        = (ksPart)_doc3D.GetPart((short)Part_Type.pTop_Part);
 }
Exemplo n.º 14
0
        /// <inheritdoc />
        public void Build(ksDocument3D document3D, Parameters.Parameters parameters)
        {
            var part    = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);
            var zxPlane = (ksEntity)part.GetDefaultEntity((short)Obj3dType.o3d_planeXOZ);

            var entityOffsetPlane     = (ksEntity)part.NewEntity((short)Obj3dType.o3d_planeOffset);
            var planeOffsetDefinition = (ksPlaneOffsetDefinition)
                                        entityOffsetPlane.GetDefinition();

            planeOffsetDefinition.direction = false;
            planeOffsetDefinition.offset    = parameters[ParameterName.B];
            planeOffsetDefinition.SetPlane(zxPlane);
            entityOffsetPlane.Create();

            var D           = parameters[ParameterName.D];
            var A           = parameters[ParameterName.A];
            var thikness    = parameters[ParameterName.WallThikness];
            var firstSketch = CreateCircleSketch(part, zxPlane,
                                                 D / 2 - thikness / 2);
            var secondSketch = CreateCircleSketch(part, entityOffsetPlane,
                                                  A / 2 - thikness / 2);

            var cutLoft            = (ksEntity)part.NewEntity((short)Obj3dType.o3d_cutLoft);
            var baseLoftDefinition = (ksCutLoftDefinition)cutLoft.GetDefinition();

            baseLoftDefinition.SetLoftParam(false, true, true);
            var sketches = (ksEntityCollection)baseLoftDefinition.Sketchs();

            sketches.Clear();
            sketches.Add(firstSketch);
            sketches.Add(secondSketch);
            cutLoft.Create();
        }
Exemplo n.º 15
0
        /// <summary>
        /// Метод запуска Компас в режиме детали, инициализации свойств Document3D, KompasPart и KompasObject
        /// </summary>
        public void InitializationKompas()
        {
            try
            {
                if (KompasObject != null)
                {
                    Document3D.close();
                }
                if (KompasObject == null)
                {
#if __LIGHT_VERSION__
                    Type t = Type.GetTypeFromProgID("KOMPASLT.Application.5");
#else
                    Type t = Type.GetTypeFromProgID("KOMPAS.Application.5");
#endif
                    KompasObject = (KompasObject)Activator.CreateInstance(t);
                }
                Document3D = (Document3D)KompasObject.Document3D();
                Document3D.Create(false, true);
                KompasPart           = (ksPart)Document3D.GetPart((short)Part_Type.pTop_Part);
                KompasObject.Visible = true;
                KompasObject.ActivateControllerAPI();
            }
            catch (Exception e)
            {
                KompasObject = null;
                InitializationKompas();
            }
        }
Exemplo n.º 16
0
        /// <summary>
        ///     Создает новый документ.
        /// </summary>
        public void NewDocument()
        {
            _doc3D = (ksDocument3D)_kompas.Document3D();

            _doc3D.Create();

            Part = (ksPart)_doc3D.GetPart((short)Part_Type.pTop_Part);
        }
Exemplo n.º 17
0
 /// <summary>
 /// Метод закрытия документа.
 /// </summary>
 public void CloseDocument()
 {
     if (KsDocumentObj != null)
     {
         KsDocumentObj.close();
         KsDocumentObj = null;
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// Метод, строящий дисплей.
        /// </summary>
        /// <param name="document3D"></param>
        /// <param name="data"></param>
        private void DisplayBuild(ksDocument3D document3D,
                                  KeyboardParametersStorage data)
        {
            // Переменные центрования.
            //
            double horCenter = data.BodyLength / 2;
            double verCenter = data.BodyDepth - ((data.BodyDepth - 15.5)
                                                 / 2);

            part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

            var entityOffsetPlane = (ksEntity)part.NewEntity((short)Obj3dType.o3d_planeOffset);
            var entitySketch      = (ksEntity)part.NewEntity((short)Obj3dType.o3d_sketch);

            entitySketch.name = "Дисплей";

            if (entityOffsetPlane != null)
            {
                var offsetDef = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                if (offsetDef != null)
                {
                    var basePlane = (ksEntity)part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);

                    basePlane.name = "Начальная плоскость";

                    offsetDef.direction = true;
                    offsetDef.offset    = data.BodyHeight;
                    offsetDef.SetPlane(basePlane);

                    entityOffsetPlane.name   = "Смещенная плоскость";
                    entityOffsetPlane.hidden = true;
                    entityOffsetPlane.Create();

                    var sketchDef = (ksSketchDefinition)entitySketch.GetDefinition();
                    if (sketchDef != null)
                    {
                        sketchDef.SetPlane(entityOffsetPlane);

                        entitySketch.Create();

                        var sketchEdit = (ksDocument2D)sketchDef.BeginEdit();

                        sketchEdit.ksLineSeg(-horCenter + 5.0, -verCenter
                                             + 3.0, -horCenter + 5.0, -verCenter - 3.0, 1);
                        sketchEdit.ksLineSeg(-horCenter + 5.0, -verCenter
                                             - 3.0, -horCenter - 5.0, -verCenter - 3.0, 1);
                        sketchEdit.ksLineSeg(-horCenter - 5.0, -verCenter
                                             - 3.0, -horCenter - 5.0, -verCenter + 3.0, 1);
                        sketchEdit.ksLineSeg(-horCenter - 5.0, -verCenter
                                             + 3.0, -horCenter + 5.0, -verCenter + 3.0, 1);

                        sketchDef.EndEdit();
                        DisplayExtruse(part, entitySketch);
                    }
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// Метод, строящий эскиз для вырезания скоса у черных клавиш.
        /// </summary>
        /// <param name="document3D">Указатель на активный документ КОМПАС-3D.</param>
        /// <param name="data">Указатель на данные.</param>
        private void BlackKeyCutSketch(ksDocument3D document3D,
                                       KeyboardParametersStorage data)
        {
            string name   = "Черные клавиши";
            double offset = (data.BodyLength / 2) - (data.BoardLength / 2)
                            + _space;

            OffsetSketchSet(document3D, data, name, offset, Obj3dType.o3d_planeYOZ);
        }
Exemplo n.º 20
0
 /// <summary>
 /// Нарисовать четырехугольник с непрямыми углами с отверстием некруглым
 /// </summary>
 internal void DrawQuadrangleWithNonCircularHole()
 {
     if (kompas != null)
     {
         kompas.Visible = true;
         ksDocument3D iDocument3D = (ksDocument3D)kompas.Document3D();
         if (iDocument3D.Create(false /*видимый*/, true /*деталь*/))
         {
             iDocument3D.fileName = "With Non-Circular Hole";
             ksPart iPart = (ksPart)iDocument3D.GetPart((short)Part_Type.pTop_Part);     // новый компонент (.pNew_Part - был)
             if (iPart != null)
             {
                 //// получим интерфейс базовой плоскости XOY
                 ksEntity planeXOY = (ksEntity)iPart.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);    // 1-интерфейс на плоскость XOY
                 ksEntity iSketch  = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_sketch);
                 if (iSketch != null)
                 {
                     // интерфейс свойств эскиза
                     ksSketchDefinition iDefinitionSketch = (ksSketchDefinition)iSketch.GetDefinition();
                     if (iDefinitionSketch != null)
                     {
                         iDefinitionSketch.SetPlane(planeXOY);
                         iSketch.Create();
                         ksDocument2D iDocument2D = (ksDocument2D)iDefinitionSketch.BeginEdit();
                         iDocument2D.ksLineSeg(-30.0, -30.0, 30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(30.0, -30.0, 0, 30.0, 1);
                         iDocument2D.ksLineSeg(0, 30.0, -60.0, 30.0, 1);
                         iDocument2D.ksLineSeg(-60.0, 30.0, -30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(-10.0, -18.660254, -28.660254, 13.660254, 1);
                         iDocument2D.ksLineSeg(-20, 18.660254, -1.339746, -13.660254, 1);
                         iDocument2D.ksArcByAngle(-24.330127, 16.160254, 5, 30.0, 210.0, 1, 1);
                         iDocument2D.ksArcByAngle(-5.669873, -16.160254, 5, 210.0, 30.0, 1, 1);
                         iDefinitionSketch.EndEdit();
                         ksEntity entityExtr = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                         if (entityExtr != null)
                         {
                             // интерфейс свойств базовой операции выдавливания
                             ksBossExtrusionDefinition extrusionDef = (ksBossExtrusionDefinition)entityExtr.GetDefinition(); // интерфейс базовой операции выдавливания
                             if (extrusionDef != null)
                             {
                                 ksExtrusionParam extrProp = (ksExtrusionParam)extrusionDef.ExtrusionParam(); // интерфейс структуры параметров выдавливания
                                 if (extrProp != null)
                                 {
                                     extrusionDef.SetSketch(iSketch);                       // эскиз операции выдавливания
                                     extrProp.direction   = (short)Direction_Type.dtNormal; // направление выдавливания (прямое)
                                     extrProp.typeNormal  = (short)End_Type.etBlind;        // тип выдавливания (строго на глубину)
                                     extrProp.depthNormal = 10;                             // глубина выдавливания
                                     entityExtr.Create();                                   // создадим операцию
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 21
0
        public void BuildTestNegative()
        {
            KeyboardParametersStorage keyboardDataNull = null;
            ksDocument3D document3DNull = null;

            var obj = new BoardCreator();

            Assert.Throws <NullReferenceException>(()
                                                   => obj.Build(document3DNull, keyboardDataNull));
        }
Exemplo n.º 22
0
        /// <summary>
        /// Скрывает все оси и геометрические обозначения.
        /// </summary>
        /// <param name="document3D">3D документ.</param>
        public void HideAllGeom(ksDocument3D document3D)
        {
            if (document3D == null)
            {
                return;
            }

            document3D.hideAllAuxiliaryGeom = true;
            document3D.hideAllSketches      = false;
        }
        public List <kompasVariable> GetVarsOfAssembly()
        {
            if (_kompas == null)
            {
                LoadKompas();
                // MessageBox.Show("КОМПАС-3D не запущен!");
                // return null;
            }

            ksDocument3D doc = _kompas.ActiveDocument3D();

            if (doc == null)
            {
                MessageBox.Show("Файл сборки не открыт!");
                return(null);
            }

            /*
             * var parts = doc.PartCollection(true);
             *
             * List<string> names = new List<string>();
             *
             * var countOfParts = parts.GetCount;
             *
             * for (int i = 0; i < countOfParts; i++)
             * {
             *  names.Add(parts.GetByIndex(i).name);
             * }
             */

            var part = doc.GetPart(-1); //parts.GetByName(partname, true, true);

            var vr = part.VariableCollection;

            var count = vr.GetCount;

            List <kompasVariable> Variables = new List <kompasVariable>();


            for (int i = 0; i < count; i++)
            {
                var VAR            = vr.GetByIndex(i);
                var kompasVariable = new kompasVariable();

                kompasVariable.displayName = VAR.displayName;
                kompasVariable.name        = VAR.name;
                kompasVariable.note        = VAR.note;
                kompasVariable.value       = VAR.value.ToString();

                Variables.Add(kompasVariable);
            }
            Variables = Variables.OrderBy(o => o.name[2]).ThenBy(o => o.name[Regex.Match(o.name, ".+(_.{1})").Groups[0].Index + 1]).ToList();
            return(Variables);
        }
Exemplo n.º 24
0
        /// <summary>
        /// Очищает 3D документ.
        /// </summary>
        private void ClearDocument(ksDocument3D document3D)
        {
            var part             = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);
            var entityCollection = (ksEntityCollection)part.EntityCollection(0);

            for (int i = entityCollection.GetCount() - 1; i > 0; i--)
            {
                var entity = (ksEntity)entityCollection.GetByIndex(i);
                document3D.DeleteObject(entity);
            }
        }
Exemplo n.º 25
0
            public IKompasCommand Init(KompasObject kompas, Blade model)
            {
                kompas.ActivateControllerAPI();
                ksDocument3D document3D = kompas.Document3D();

                document3D.Create();
                ksPart part = document3D.GetPart((short)Part_Type.pTop_Part);

                Init(part, model);
                return(this);
            }
        public void BuildTest()
        {
            KeyboardParametersStorage keyboardDataNull = null;
            ksDocument3D document3DNull = null;

            var commutationCreatorObject = new CommutationCreator();

            Assert.Throws <NullReferenceException>(()
                                                   => commutationCreatorObject.Build(document3DNull,
                                                                                     keyboardDataNull));
        }
Exemplo n.º 27
0
        /// <summary>
        /// Метод построения коммутационной панели.
        /// </summary>
        /// <param name="document3D"></param>
        /// <param name="data"></param>
        public override void Build(ksDocument3D document3D,
                                   KeyboardParametersStorage data)
        {
            if (document3D == null || data == null)
            {
                throw new NullReferenceException("Метод ссылается на null объект.");
            }

            XLRBuild(document3D, data);
            TRSBuild(document3D, data);
            MIDIBuild(document3D, data);
        }
Exemplo n.º 28
0
        /// <summary>
        /// Метод, строящий клавиатурную секцию.
        /// </summary>
        /// <param name="document3D">Указатель на активный документ КОМПАС-3D.</param>
        /// <param name="data">Указатель на данные.</param>
        public override void Build(ksDocument3D document3D,
                                   KeyboardParametersStorage data)
        {
            if (document3D == null || data == null)
            {
                throw new NullReferenceException("Метод ссылается на null объект.");
            }

            // Текущая обрабатываемая клавиша.
            KeyNote currentKey = SetCurrentNote(data);

            KeyBuild(document3D, data, currentKey);
        }
Exemplo n.º 29
0
        /// <summary>
        /// Метод, создающий колесо модуляции.
        /// </summary>
        /// <param name="document3D"></param>
        /// <param name="data"></param>
        private void WheelBuild(ksDocument3D document3D,
                                KeyboardParametersStorage data)
        {
            part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

            var entityOffsetPlane = (ksEntity)part.NewEntity((short)Obj3dType.o3d_planeOffset);
            var entitySketch      = (ksEntity)part.NewEntity((short)Obj3dType.o3d_sketch);

            entitySketch.name = "Колесо модуляции";

            if (entityOffsetPlane != null)
            {
                var offsetDef = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                if (offsetDef != null)
                {
                    var basePlane = (ksEntity)part.GetDefaultEntity((short)Obj3dType.o3d_planeYOZ);

                    basePlane.name = "Начальная плоскость";

                    offsetDef.direction = true;
                    offsetDef.offset    = 1.5;
                    offsetDef.SetPlane(basePlane);

                    entityOffsetPlane.name   = "Смещенная плоскость";
                    entityOffsetPlane.hidden = true;
                    entityOffsetPlane.Create();

                    var sketchDef = (ksSketchDefinition)entitySketch.GetDefinition();
                    if (sketchDef != null)
                    {
                        sketchDef.SetPlane(entityOffsetPlane);
                        entitySketch.Create();

                        var sketchEdit = (ksDocument2D)sketchDef.BeginEdit();

                        if (data.PanelWheel == WheelSetup.EnableFront)
                        {
                            sketchEdit.ksCircle(-data.BodyHeight + 1.0, 8.0,
                                                3.0, 1);
                        }
                        else if (data.PanelWheel == WheelSetup.EnableBack)
                        {
                            sketchEdit.ksCircle(-data.BodyHeight + 1.0,
                                                data.BodyDepth - 8.0, 3.0, 1);
                        }
                        sketchDef.EndEdit();
                        WheelExtruse(part, entitySketch);
                    }
                }
            }
        }
Exemplo n.º 30
0
        /// <inheritdoc />
        public void Build(ksDocument3D document3D, Parameters.Parameters parameters)
        {
            var part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

            var entityRotated =
                (ksEntity)part.NewEntity((short)Obj3dType.o3d_baseRotated);
            var entityRotatedDefinition =
                (ksBaseRotatedDefinition)entityRotated.GetDefinition();

            entityRotatedDefinition.directionType = 0;
            entityRotatedDefinition.SetSideParam(true, 360);
            entityRotatedDefinition.SetSketch(part.GetObjectByName("Эскиз:1", 5, false, false));
            entityRotated.Create();
        }