Пример #1
0
        public static void GenerateNCS()
        {
            doc = Application.DocumentManager.Add(string.Empty);
            using (doc.LockDocument())
            {
                ed             = doc.Editor;
                db             = doc.Database;
                IdTextStylePik = db.GetTextStylePIK();

                using (var t = db.TransactionManager.StartTransaction())
                {
                    // Форма стартовых настроек
                    Options.Show();

                    // Чтение палитры NCS
                    var colorBookNcs = ColorBook.ReadFromFile(Options.Instance.NCSFile);

                    // Запрос точки начала генерации палитр цветов
                    var ptStart = ed.GetPointWCS("Точка вставки");

                    // Расположение цветов в модели
                    var cs = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
                    PlacementColors(cs, colorBookNcs, ptStart);

                    t.Commit();
                }
            }
        }
Пример #2
0
        public static ColorBook ReadFromFile([NotNull] string NcsFile)
        {
            var colorBookNcs = new ColorBook("NCS");

            using (var exlPack = new ExcelPackage(new FileInfo(NcsFile)))
            {
                var wsNcs = exlPack.Workbook.Worksheets["NCS"];
                var row   = 1;
                do
                {
                    row++;

                    var nameNcs = wsNcs.Cells[row, 1].Text;
                    if (string.IsNullOrEmpty(nameNcs))
                    {
                        break;
                    }

                    var r = GetByte(wsNcs.Cells[row, 2].Text);
                    if (r.Failure)
                    {
                        Inspector.AddError($"Ошибка в ячейке [{row},2] - {r.Error}");
                        continue;
                    }

                    var g = GetByte(wsNcs.Cells[row, 3].Text);
                    if (g.Failure)
                    {
                        Inspector.AddError($"Ошибка в ячейке [{row},2] - {g.Error}");
                        continue;
                    }

                    var b = GetByte(wsNcs.Cells[row, 4].Text);
                    if (b.Failure)
                    {
                        Inspector.AddError($"Ошибка в ячейке [{row},2] - {b.Error}");
                        continue;
                    }

                    var colorItem = new ColorItem(nameNcs, r.Value, g.Value, b.Value);
                    colorBookNcs.Colors.Add(colorItem);
                } while (true);
            }

            return(colorBookNcs);
        }
Пример #3
0
        private static void PlacementColors(BlockTableRecord cs, [NotNull] ColorBook colorBookNcs, Point3d ptStart)
        {
            var t = db.TransactionManager.TopTransaction;

            double widthLayout  = Options.Instance.Width;
            double heightLayout = Options.Instance.Height;

            var widthCells  = widthLayout - widthLayout * 0.1;
            var heightCells = heightLayout - heightLayout * 0.1;

            var columns = Options.Instance.Columns;
            var rows    = Options.Instance.Rows;

            // Определение длины и высоты для каждой ячейки цвета
            CellWidth  = widthCells / columns;
            CellHeight = heightCells / rows;

            Margin     = CellWidth * 0.1;
            TextHeight = Convert.ToInt32(CellWidth * 0.09);

            var ptLayout = ptStart;

            var progress = new ProgressMeter();

            progress.SetLimit(colorBookNcs.Colors.Count);
            progress.Start("Расстановка цветов...");

            // Кол листов
            double cellsCount = columns * rows;
            var    layCount   = Convert.ToInt32(Math.Ceiling(colorBookNcs.Colors.Count / cellsCount));

            var index = 0;

            for (var l = 1; l < layCount + 1; l++)
            {
                // создание рамки листа
                AddLayout(ptLayout, l, widthLayout, heightLayout, cs, t);
                var ptCellFirst = new Point2d(ptLayout.X + (widthLayout - widthCells) * 0.5,
                                              ptLayout.Y - (heightLayout - heightCells) * 0.5);

                // Заполнение ячейками цветов
                for (var r = 0; r < rows; r++)
                {
                    var isBreak = false;
                    for (var c = 0; c < columns; c++)
                    {
                        index++;
                        if (index == colorBookNcs.Colors.Count)
                        {
                            isBreak = true;
                            break;
                        }

                        var colorItem = colorBookNcs.Colors[index];
                        var ptCell    = new Point2d(ptCellFirst.X + c * CellWidth, ptCellFirst.Y - r * CellHeight);
                        colorItem.Create(ptCell, cs, t);
                        progress.MeterProgress();
                    }

                    if (isBreak)
                    {
                        break;
                    }
                }

                ptLayout = new Point3d(ptLayout.X, ptLayout.Y + heightLayout, 0);
            }

            progress.Stop();
        }