예제 #1
0
        private void Compute()
        {
            // build imposition solutions
            impositionTool = ImpositionTool.Instantiate(Factory, ImpSettings);
            // -> margins
            impositionTool.SpaceBetween        = ImpSpace;
            impositionTool.Margin              = ImpMargin;
            impositionTool.MinMargin           = ImpRemainingMargin;
            impositionTool.HorizontalAlignment = HorizontalAlignment;
            impositionTool.VerticalAlignment   = VerticalAlignment;
            // -> patterns
            impositionTool.AllowRotationInColumns = AllowColumnRotation;
            impositionTool.AllowRotationInRows    = AllowRowRotation;
            impositionTool.AllowBothDirection     = AllowBothDirection;
            // -> offset
            impositionTool.ImpositionOffset = Offset;
            try
            {
                // instantiate ProgressWindow and launch process
                ProgressWindow progress = new ProgressWindow();
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GenerateImpositionSolutions), progress);
                progress.ShowDialog();

                LoadSolutions();
            }
            catch (PicToolTooLongException /*ex*/)
            {
                MessageBox.Show(
                    string.Format(Properties.Resources.ID_ABANDONPROCESSING, PicToolArea.MaxNoSegments)
                    , Application.ProductName
                    , MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #2
0
        public void BuildLayout()
        {
            Pic.Factory2D.Control.FormImpositionSettings formSettings = new Pic.Factory2D.Control.FormImpositionSettings();
            if (null != _cardboardFormatLoader)
                formSettings.FormatLoader = _cardboardFormatLoader;

            // get offset
            Vector2D impositionOffset = Component.ImpositionOffset(CurrentParameterStack);
            // initialize form with offsets
            formSettings.OffsetX = impositionOffset.X;
            formSettings.OffsetY = impositionOffset.Y;

            if (DialogResult.OK == formSettings.ShowDialog())
            {
                using (PicFactory factory = new PicFactory())
                {
                    // build factory entities
                    Component.CreateFactoryEntities(factory, CurrentParameterStack);
                    if (_reflectionX) factory.ProcessVisitor(new PicVisitorTransform(Transform2D.ReflectionX));
                    if (_reflectionY) factory.ProcessVisitor(new PicVisitorTransform(Transform2D.ReflectionY));
                    // build imposition solutions
                    if (formSettings.Mode == 0)
                        _impositionTool = new ImpositionToolCardboardFormat(factory, formSettings.CardboardFormat);
                    else
                        _impositionTool = new ImpositionToolXY(factory, formSettings.NumberDirX, formSettings.NumberDirY);
                    // -> margins
                    _impositionTool.HorizontalAlignment = formSettings.HorizontalAlignment;
                    _impositionTool.VerticalAlignment = formSettings.VerticalAlignment;
                    _impositionTool.SpaceBetween = new Vector2D(formSettings.ImpSpaceX, formSettings.ImpSpaceY);
                    _impositionTool.Margin = new Vector2D(formSettings.ImpMarginLeftRight, formSettings.ImpMarginBottomTop);
                    _impositionTool.MinMargin = new Vector2D(formSettings.ImpRemainingMarginLeftRight, formSettings.ImpRemainingMarginBottomTop);
                    // -> allowed patterns
                    _impositionTool.AllowRotationInColumnDirection = formSettings.AllowColumnRotation;
                    _impositionTool.AllowRotationInRowDirection = formSettings.AllowRowRotation;
                    // -> offsets
                    _impositionTool.ImpositionOffset = new Vector2D(formSettings.OffsetX, formSettings.OffsetY);
                    // instantiate ProgressWindow and launch process
                    ProgressWindow progress = new ProgressWindow();
                    System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GenerateImpositionSolutions), progress);
                    progress.ShowDialog();
                    // show dialog
                    if (null != _solutions && _solutions.Count > 0)
                    {
                        Pic.Factory2D.Control.FormImposition form = new Pic.Factory2D.Control.FormImposition();
                        form.Solutions = _solutions;
                        form.Format = formSettings.CardboardFormat;
                        if (DialogResult.OK == form.ShowDialog(this))
                        {
                        }
                    }
                }
            }            
        }
        private void onOK(object sender, EventArgs e)
        {
            // build factory entities
            try
            {
                // load file
                Pic.Factory2D.PicFactory factory      = new PicFactory();
                PicLoaderDes             picLoaderDes = new PicLoaderDes(factory);
                using (DES_FileReader fileReader = new DES_FileReader())
                {
                    fileReader.ReadFile(_drawingName, picLoaderDes);
                }

                // build imposition solutions
                if (Mode == 0)
                {
                    _impositionTool = new ImpositionToolCardboardFormat(factory, CurrentCardboardFormat);
                }
                else
                {
                    _impositionTool = new ImpositionToolXY(factory, NumberDirX, NumberDirY);
                }
                // -> margins
                _impositionTool.HorizontalAlignment = HorizontalAlignment;
                _impositionTool.VerticalAlignment   = VerticalAlignment;
                _impositionTool.SpaceBetween        = new Vector2D(ImpSpaceX, ImpSpaceY);
                _impositionTool.Margin    = new Vector2D(ImpMarginLeftRight, ImpMarginBottomTop);
                _impositionTool.MinMargin = new Vector2D(ImpRemainingMarginLeftRight, ImpRemainingMarginBottomTop);
                // -> allowed patterns
                _impositionTool.AllowRotationInColumnDirection = AllowColumnRotation;
                _impositionTool.AllowRotationInRowDirection    = AllowRowRotation;
                // -> offsets
                _impositionTool.ImpositionOffset = Offset;
                _solutions = new List <ImpositionSolution>();

                // instantiate ProgressWindow and launch process
                ProgressWindow progress = new ProgressWindow();
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GenerateImpositionSolutions), progress);
                progress.ShowDialog();

                if (null != _solutions && _solutions.Count > 0)
                {
                    FormLayoutViewer form = new FormLayoutViewer();
                    // set solutions
                    form.Solutions   = _solutions;
                    form.Format      = CurrentCardboardFormat;
                    form.DrawingName = Path.GetFileNameWithoutExtension(_drawingName);
                    // show imposition dlg
                    if (DialogResult.OK == form.ShowDialog(this))
                    {
                        _outputFilePath = form.OutputFilePath;
                        _result         = form.Result;
                    }
                    else
                    {
                        _result = 0;
                        return;
                    }
                }
            }
            catch (PicToolTooLongException /*ex*/)
            {
                MessageBox.Show(
                    string.Format(Properties.Resources.ID_ABANDONPROCESSING
                                  , Pic.Factory2D.Properties.Settings.Default.AreaMaxNoSegments)
                    , Application.ProductName
                    , MessageBoxButtons.OK
                    , MessageBoxIcon.Stop);
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
            if (null != LayoutValidated)
            {
                LayoutValidated(sender, new LayoutCtrlEventArgs(_result, GetOutputFile()));
            }
        }