コード例 #1
0
 public void AKR_RandomPainting()
 {
     CommandStart.Start(doc =>
     {
         using (var DocLock = doc.LockDocument())
         {
             // Произвольная покраска участка, с % распределением цветов зон покраски.
             if (_randomPainting == null)
             {
                 _randomPainting = new RandomPaintService();
             }
             _randomPainting.Start();
         }
     });
 }
コード例 #2
0
        private void FormImage_Fire(object sender, EventArgs e)
        {
            try
            {
                Bitmap bitmap = getBitmapForColorArea((Bitmap)sender);
                using (var lockDoc = _doc.LockDocument())
                {
                    using (var t = _db.TransactionManager.StartTransaction())
                    {
                        // Проверка блока зоны покраски. если нет, то копирование из шаблона с блоками.
                        RandomPaintService.CheckBlockColorAre(_db);

                        clearPreviusBlocks();
                        _idsInsertBlRefColorArea = new List <ObjectId>();

                        // блок шаблона зоны покраски
                        var bt = t.GetObject(_db.BlockTableId, OpenMode.ForRead) as BlockTable;
                        var cs = t.GetObject(_db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
                        _idCS = cs.Id;
                        var btrColorArea           = t.GetObject(bt[Settings.Default.BlockColorAreaName], OpenMode.ForRead) as BlockTableRecord;
                        var blRefColorAreaTemplate = new BlockReference(Point3d.Origin, btrColorArea.Id);
                        cs.AppendEntity(blRefColorAreaTemplate);
                        t.AddNewlyCreatedDBObject(blRefColorAreaTemplate, true);
                        _idBlRefColorAreaTemplate = blRefColorAreaTemplate.Id;
                        RandomPaintService.SetDynParamColorAreaBlock(blRefColorAreaTemplate, _colorAreaSize);
                        _idColCopy = new ObjectIdCollection();
                        _idColCopy.Add(_idBlRefColorAreaTemplate);

                        Point3d ptStart = new Point3d(_colorAreaSize.ExtentsColorArea.MinPoint.X, _colorAreaSize.ExtentsColorArea.MaxPoint.Y, 0);
                        _layersColorArea = new Dictionary <Color, ObjectId>();

                        ProgressMeter progressMeter = new ProgressMeter();
                        progressMeter.SetLimit(bitmap.Width * bitmap.Height);
                        progressMeter.Start("Вставка блоков зон покраски");

                        for (int i = 0; i < bitmap.Width * bitmap.Height; i++)
                        {
                            if (HostApplicationServices.Current.UserBreak())
                            {
                                break;
                            }
                            progressMeter.MeterProgress();
                            int     x        = i / bitmap.Height;
                            int     y        = i % bitmap.Height;
                            Point3d position = ptStart.Add(new Vector3d(x * _colorAreaSize.LenghtSpot, -(y + 1) * _colorAreaSize.HeightSpot, 0));
                            insertSpot(position, getLayerId(bitmap.GetPixel(x, y), _layersColorArea));
                        }
                        progressMeter.Stop();
                        blRefColorAreaTemplate.Erase(true);
                        t.Commit();

                        _doc.Editor.Regen();
                        _doc.Editor.WriteMessage("\nГотово");
                    }
                }
            }
            catch (System.Exception ex)
            {
                Logger.Log.Error(ex, "FormImage_Fire()");
            }
        }