private DrawingEnumerator getSelectedDrawings()
        {
            DrawingHandler myDrawingHandler = new DrawingHandler();
            DrawingEnumerator selectedDrawings = myDrawingHandler.GetDrawingSelector().GetSelected();

            return selectedDrawings;
        }
Exemplo n.º 2
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            //Idea is to get only objects in selected view
            ViewBase      view;
            DrawingObject dob;

            var    handler = new DrawingHandler();
            Picker picker  = handler.GetPicker();

            picker.PickObject("Select any object in intended view", out dob, out view);

            var reinforcement = view.GetAllObjects(typeof(ReinforcementBase));

            DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.BY_COMMIT);

            foreach (ReinforcementBase reinf in reinforcement)
            {
                if (reinf.Hideable.IsHidden)
                {
                    reinf.Hideable.ShowInDrawingView();
                    reinf.Modify();
                }
            }
            DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.INSTANT);
            handler.GetActiveDrawing().CommitChanges();
            Tekla.Structures.Model.Operations.Operation.DisplayPrompt("Operation finished");
        }
Exemplo n.º 3
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            var handler   = new DrawingHandler();
            var selection = handler.GetDrawingObjectSelector().GetSelected();


            PointList     pointlist = new PointList();
            List <double> X         = new List <double>();
            List <double> Y         = new List <double>();

            while (selection.MoveNext())
            {
                if (selection.Current is Polygon)
                {
                    Polygon polygon = selection.Current as Polygon;
                    pointlist = polygon.Points;

                    foreach (Point i in pointlist)
                    {
                        X.Add(i.X);
                        Y.Add(i.Y);
                    }
                }
            }
            int n = X.Count;

            double area = polygonArea(X, Y, n) / 1000000;

            string msg = String.Format("Polygon area is: {0} m2", Math.Round(area, 3));

            System.Windows.Forms.MessageBox.Show(msg);
        }
Exemplo n.º 4
0
        public void DrawWith(DrawingHandler drawingHandler)
        {
            try
            {
                _oldObject = Native.SelectObject(_memDc, HBitmap);

                if (_graphics == null)
                {
                    _graphics = Graphics.FromHdc(_memDc);

                    _graphics.CompositingQuality = CompositingQuality.HighSpeed;
                    _graphics.SmoothingMode      = SmoothingMode.AntiAlias;
                }

                //using (_graphics)
                //{
                drawingHandler(_graphics);
                //}
            }
            finally
            {
                Native.SelectObject(_memDc, _oldObject);
                //Native.ReleaseDC(IntPtr.Zero, screenDc);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 绘制上翼板左右倾斜时的零件标记;
        /// </summary>
        private void DrawPartMarkNormal()
        {
            mMrPartList.Remove(mMainBeam);

            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                CMrMark mrMark = mrPart.GetBeamDoorFrontViewInfo().GetPartMarkNormal();

                if (null == mrMark)
                {
                    continue;
                }
                DS.SelectObject(mrPart.mPartInDrawing);
            }

            mMrPartList.Add(mMainBeam);

            DS.SelectObject(mMainBeam.mPartInDrawing);

            //绘制主梁上的螺钉标记;
            DrawMainBeamBoltMark(1);

            CDimTools.GetInstance().DrawMarkByMacro();
        }
        /// <summary>
        /// 绘制主梁与Y轴平行时的零件标记;
        /// </summary>
        private void DrawYParallelPartMark()
        {
            Vector zVector = new Vector(0, 0, 1);

            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                Vector normal = mrPart.mNormal;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector))
                {
                    continue;
                }
                DS.SelectObject(mrPart.mPartInDrawing);

                //2.对螺钉组进行标注;
                List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList();

                foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
                {
                    Vector boltNormal = mrBoltArray.mNormal;

                    if (!CDimTools.GetInstance().IsTwoVectorParallel(boltNormal, zVector))
                    {
                        continue;
                    }
                    DS.SelectObject(mrBoltArray.mBoltInDrawing);
                }
            }
            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Executes a macro in the view.
        /// </summary>
        /// <param name="macroName">Macro name.</param>
        public void RunMacro(string macroName)
        {
            Model          CurrentModel   = new Model();
            DrawingHandler DrawingHandler = new DrawingHandler();

            if (DrawingHandler.GetActiveDrawing() != null)
            {
                macroName = @"..\drawings\" + macroName;
            }

            if (CurrentModel.GetConnectionStatus())
            {
                if (!Path.HasExtension(macroName))
                {
                    macroName += ".cs";
                }

                while (Operation.IsMacroRunning())
                {
                    Thread.Sleep(100);
                }

                Operation.RunMacro(macroName);
            }
        }
Exemplo n.º 8
0
        private static DrawingEnumerator getSelectedDrawings()
        {
            DrawingHandler    myDrawingHandler = new DrawingHandler();
            DrawingEnumerator selectedDrawings = myDrawingHandler.GetDrawingSelector().GetSelected();

            return(selectedDrawings);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            DrawingHandler MyDrawingHandler = new DrawingHandler();

            PrintAttributes printAttributes = new PrintAttributes();

            printAttributes.Scale = 1.0;
            printAttributes.PrintToMultipleSheet = false;
            printAttributes.NumberOfCopies       = 1;
            printAttributes.Orientation          = DotPrintOrientationType.Auto;
            printAttributes.PrintArea            = DotPrintAreaType.EntireDrawing;
            printAttributes.PrinterInstance      = "PDF_594x420";

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                while (SelectedDrawings.MoveNext())
                {
                    Drawing currentDrawing = SelectedDrawings.Current;

                    //Get print attributes: we need only PrinterInstance
                    MyDrawingHandler.PrintDrawing(currentDrawing, printAttributes);
                }
            }
        }
Exemplo n.º 10
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            try
            {
                Model                   model             = new Model();
                DrawingHandler          drawingHandler    = new DrawingHandler();
                DrawingObjectEnumerator drawingObjectEnum = drawingHandler.GetDrawingObjectSelector().GetSelected();
                ArrayList               ModelObjectArray  = new ArrayList();

                if (drawingObjectEnum.GetSize() > 0)
                {
                    while (drawingObjectEnum.MoveNext())
                    {
                        if (drawingObjectEnum.Current is Tekla.Structures.Drawing.Part)
                        {
                            Tekla.Structures.Drawing.Part part = drawingObjectEnum.Current as Tekla.Structures.Drawing.Part;
                            ModelObjectArray.Add(model.SelectModelObject(new Identifier(part.ModelIdentifier.ID)));
                        }
                        if (drawingObjectEnum.Current is Tekla.Structures.Drawing.Bolt)
                        {
                            Tekla.Structures.Drawing.Bolt bolt = drawingObjectEnum.Current as Tekla.Structures.Drawing.Bolt;
                            ModelObjectArray.Add(model.SelectModelObject(new Identifier(bolt.ModelIdentifier.ID)));
                        }
                    }
                }

                Tekla.Structures.Model.UI.ModelObjectSelector modelObjectSelector = new Tekla.Structures.Model.UI.ModelObjectSelector();
                modelObjectSelector.Select(ModelObjectArray);
                akit.Callback("acmd_display_selected_object_dialog", "", "main_frame");
            }
            catch { }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 绘制主梁法向朝X方向的零件标记;
        /// </summary>
        private void DrawXVectorPartMark()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                Vector vector = mrPart.mNormal;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(vector, new Vector(0, 0, 1)))
                {
                    continue;
                }
                if (!mrPart.IsHaveBolt())
                {
                    continue;
                }

                DS.SelectObject(mrPart.mPartInDrawing);

                //2.绘制螺钉组标记;
                List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList();

                foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
                {
                    if (CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1)))
                    {
                        DS.SelectObject(mrBoltArray.mBoltInDrawing);
                    }
                }
            }

            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 12
0
        public static void CreateStraightDimension(double distance)
        {
            PointList pointList = new PointList();
            ViewBase  view;
            Point     firstPoint;
            Point     SecondPoint;

            Picker picker = new DrawingHandler().GetPicker();

            picker.PickTwoPoints("Pick first point", "Pick second point", out firstPoint, out SecondPoint, out view);
            pointList.Add(firstPoint);
            pointList.Add(SecondPoint);

            Vector direction = new Vector(firstPoint.Y - SecondPoint.Y, SecondPoint.X - firstPoint.X, firstPoint.Z);

            StraightDimensionSet sds = new StraightDimensionSetHandler().CreateDimensionSet(view, pointList, direction, distance);

            sds.Attributes.LeftLowerTag.Add(new TextElement("LeftLow"));
            sds.Attributes.LeftMiddleTag.Add(new TextElement("LeftMiddle"));
            sds.Attributes.LeftUpperTag.Add(new TextElement("LeftUpper"));
            sds.Attributes.RightLowerTag.Add(new TextElement("RightLow"));
            sds.Attributes.RightMiddleTag.Add(new TextElement("RightMiddle"));
            sds.Attributes.RightUpperTag.Add(new TextElement("RightUpper"));

            bool isOk = sds.Modify();
        }
Exemplo n.º 13
0
        static void PickPoints(int numberToPick, ref PointList pointList, ref ViewBase view)
        {
            if (Repeat)
            {
                view = lastView;
                foreach (Point point in lastPoints)
                {
                    pointList.Add(new Point(point));
                }
                return;
            }

            var picker = new DrawingHandler().GetPicker();
            int ii     = numberToPick;

            lastPoints.Clear();
            while (--ii != -1)
            {
                Point point;
                picker.PickPoint("Pick point", out point, out view);
                pointList.Add(point);
                lastPoints.Add(new Point(point));
            }
            lastView = view;
        }
Exemplo n.º 14
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            var handler   = new DrawingHandler();
            var selection = handler.GetDrawingObjectSelector().GetSelected();

            DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.BY_COMMIT);

            double rotang = 0;

            while (selection.MoveNext())
            {
                if (selection.Current is MarkBase)
                {
                    MarkBase mark = selection.Current as MarkBase;
                    mark.Attributes.RotationAngle             = rotang;
                    mark.Attributes.PlacingAttributes.IsFixed = true;
                    mark.Modify();
                }
                else
                {
                    Text text = selection.Current as Text;
                    text.Attributes.Angle = rotang;
                    text.Attributes.PlacingAttributes.IsFixed = true;
                    text.Modify();
                }
            }
            DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.INSTANT);
            handler.GetActiveDrawing().CommitChanges();
        }
Exemplo n.º 15
0
        /// <summary>
        /// 绘制主梁法向朝Y方向的零件标记;
        /// </summary>
        private void DrawYVectorPartMark()
        {
            BuildLeftAndRightPart();

            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                Vector normal = mrPart.mNormal;

                //如果零件的法向量与Z轴平行;
                if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)))
                {
                    DS.SelectObject(mrPart.mPartInDrawing);

                    List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList();

                    foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
                    {
                        if (CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1)))
                        {
                            DS.SelectObject(mrBoltArray.mBoltInDrawing);
                        }
                    }
                }
                else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(1, 0, 0)))
                {
                    DS.SelectObject(mrPart.mPartInDrawing);
                }
            }

            CDimTools.GetInstance().DrawMarkByMacro();
        }
        public override List <InputDefinition> DefineInput()
        {
            //
            // This is an example for selecting two points; change this to suit your needs.
            //
            List <InputDefinition> inputs         = new List <InputDefinition>();
            DrawingHandler         drawingHandler = new DrawingHandler();

            if (drawingHandler.GetConnectionStatus())
            {
                Picker picker = drawingHandler.GetPicker();

                ViewBase  view   = null;
                PointList points = new PointList();

                StringList prompts = new StringList();
                prompts.Add("Pick first point");
                prompts.Add("Pick second point");

                picker.PickPoints(2, prompts, out points, out view);
                inputs.Add(InputDefinitionFactory.CreateInputDefinition(view, points));
            }

            return(inputs);
        }
        private void btnShow_Click(object sender, EventArgs e)
        {
            lblMessage.Text = "";

            DrawingHandler MyDrawingHandler = new DrawingHandler();
            int            nDrawings        = 0;

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                int iCounter = 0;
                while (SelectedDrawings.MoveNext())
                {
                    iCounter++;
                }
                nDrawings = iCounter;
            }

            progressBar1.Minimum = 0;
            progressBar1.Maximum = nDrawings;
            progressBar1.Step    = 1;

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                int iCounter = 1;
                while (SelectedDrawings.MoveNext())
                {
                    progressBar1.PerformStep();

                    Drawing      currentDrawing = SelectedDrawings.Current;
                    ListViewItem currentRow     = new ListViewItem(currentDrawing.Mark);

                    currentRow.SubItems.Add(currentDrawing.Name);
                    string strHeight = currentDrawing.Layout.SheetSize.Height.ToString();
                    string strWidth  = currentDrawing.Layout.SheetSize.Width.ToString();
                    currentRow.SubItems.Add(strWidth + "x" + strHeight);
                    string PrinterInstance = "QP_" + strWidth + "x" + strHeight;

                    //TSM.Operations.Operation.DisplayPrompt("Drawing " + currentDrawing.Name + ": " + iCounter.ToString() + "/" + nDrawings.ToString());
                    lblMessage.Text = "";
                    lblMessage.Text = "Drawing " + currentDrawing.Name + ": " + iCounter.ToString() + "/" + nDrawings.ToString();
                    iCounter++;

                    if (chkPDF.Checked)
                    {
                        WriteCurrentDrawing(currentDrawing, PrinterInstance);
                    }

                    if (chkDWG.Checked)
                    {
                        PrintToFile(currentDrawing);
                    }
                }
            }

            //TSM.Operations.Operation.DisplayPrompt("Write command completed!");
            lblMessage.Text    = "Write command completed!";
            progressBar1.Value = 0;
        }
Exemplo n.º 18
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            try
            {
                Model          model          = new Model();
                DrawingHandler drawingHandler = new DrawingHandler();

                ArrayList ModelObjectArray = new ArrayList();

                if (drawingHandler.GetActiveDrawing() != null)
                {
                    DrawingObjectEnumerator drawingObjectEnum = drawingHandler.GetDrawingObjectSelector().GetSelected();
                    while (drawingObjectEnum.MoveNext())
                    {
                        Tekla.Structures.Drawing.ModelObject dModelObject = (Tekla.Structures.Drawing.ModelObject)drawingObjectEnum.Current;
                        ModelObjectArray.Add(model.SelectModelObject(dModelObject.ModelIdentifier));
                    }
                }
                else
                {
                    ModelObjectEnumerator modelObjectEnum = model.GetModelObjectSelector().GetSelectedObjects();
                    while (modelObjectEnum.MoveNext())
                    {
                        Tekla.Structures.Model.ModelObject modelObject = (Tekla.Structures.Model.ModelObject)modelObjectEnum.Current;
                        ModelObjectArray.Add(model.SelectModelObject(modelObject.Identifier));
                    }
                }

                Tekla.Structures.Model.UI.ModelObjectSelector modelObjectSelector = new Tekla.Structures.Model.UI.ModelObjectSelector();
                modelObjectSelector.Select(ModelObjectArray);
                akit.Callback("acmdCreateViewBySelectedObjectsExtrema", "", "main_frame");
                akit.Callback("acmd_interrupt", "", "main_frame");
            }
            catch { }
        }
Exemplo n.º 19
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            try
            {
                Model          model          = new Model();
                DrawingHandler drawingHandler = new DrawingHandler();

                ArrayList ModelObjectArray = new ArrayList();

                if (drawingHandler.GetActiveDrawing() != null)
                {
                    DrawingObjectEnumerator drawingObjectEnum = drawingHandler.GetDrawingObjectSelector().GetSelected();
                    if (drawingObjectEnum.GetSize() > 0)
                    {
                        while (drawingObjectEnum.MoveNext())
                        {
                            Tekla.Structures.Drawing.ModelObject dModelObject = (Tekla.Structures.Drawing.ModelObject)drawingObjectEnum.Current;
                            ModelObjectArray.Add(model.SelectModelObject(dModelObject.ModelIdentifier));
                        }
                    }

                    Tekla.Structures.Model.UI.ModelObjectSelector modelObjectSelector = new Tekla.Structures.Model.UI.ModelObjectSelector();
                    modelObjectSelector.Select(ModelObjectArray);
                }

                akit.Callback("acmdZoomToSelected", "", "main_frame");
            }
            catch { }
        }
        /// <summary>
        /// Connects the drawing interface.
        /// </summary>
        /// <returns>A boolean value indicating whether the interface is connected.</returns>
        public bool Connect()
        {
            try
            {
                if (this.connection == null)
                {
                    this.connection = new TSDrawingConnection();

                    SeparateThread.Execute(
                        delegate
                    {
                        TSDrawingConnection.SetMessageExecutionStatus(
                            TSDrawingConnection.MessageExecutionModeEnum.BY_COMMIT);
                    });
                }

                if (this.events == null)
                {
                    this.events = new TSDrawingEvents();

                    this.RegisterEvents();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);

                this.Disconnect();
            }

            return(this.IsActive);
        }
Exemplo n.º 21
0
        /// <summary>
        /// 绘制主梁上螺钉的标记;
        /// </summary>
        public void DrawMainPartBoltMark()
        {
            CBeamTopViewSetting beamTopViewSetting = CBeamDimSetting.GetInstance().mTopViewSetting;

            bool bNeedMark = beamTopViewSetting.FindMarkValueByName(CBeamTopViewSetting.mstrBolt);

            if (!bNeedMark)
            {
                return;
            }

            List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList();

            Vector zVector = new Vector(0, 0, 1);

            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
            {
                //只有与Z轴平行的螺钉组才进行编号;
                if (!CDimTools.GetInstance().IsTwoVectorParallel(zVector, mrBoltArray.mNormal))
                {
                    continue;
                }
                DS.SelectObject(mrBoltArray.mBoltInDrawing);
            }
            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 22
0
        /// <summary>
        /// 框架结构的一键标注;
        /// </summary>
        /// <param name="nType"></param>
        public void DrawDrawingOneKey(string strDimType)
        {
            DrawingHandler drawingHandler = new DrawingHandler();
            Drawing        drawing        = drawingHandler.GetActiveDrawing();

            if (null == drawing)
            {
                return;
            }
            AssemblyDrawing assemblyDrawing = drawing as AssemblyDrawing;

            if (assemblyDrawing == null)
            {
                return;
            }
//             try
//             {
            Assembly assembly = new Assembly
            {
                Identifier = assemblyDrawing.AssemblyIdentifier
            };

            assembly.Select();
            Identifier identifier = assembly.GetMainPart().Identifier;

            TSM.Part modelObject = mModel.SelectModelObject(identifier) as TSM.Part;

            //1.首先创建自动剖面;
            if (CCommonPara.mAutoSectionType == MrAutoSectionType.MrOneKeyDim || CCommonPara.mAutoSectionType == MrAutoSectionType.MrTwoTypeDim)
            {
                CreateAutoSection(strDimType, modelObject, assemblyDrawing);
            }

            //2.对图纸进行标注;
            DrawingObjectEnumerator allViews = assemblyDrawing.GetSheet().GetAllViews();

            while (allViews.MoveNext())
            {
                if (allViews.Current != null)
                {
                    TSD.View view = allViews.Current as TSD.View;

                    if (view != null)
                    {
                        DrawDrawingByView(view, modelObject, strDimType);
                    }
                }
            }
            assemblyDrawing.IsFrozen = true;
            assemblyDrawing.PlaceViews();
            assemblyDrawing.Modify();
//             }
//             catch (System.Exception ex)
//             {
//                 string strName = assemblyDrawing.Name;
//                 MessageBox.Show("图纸" + strName + "标注失败,请确认模型或图纸内是否有问题。异常信息:" + ex.Message);
//             }

            MessageBox.Show("扬州Tekla培训石头哥提示您标注结束,感谢您对智能标注系统的支持。");
        }
Exemplo n.º 23
0
        private void WorkerThread_DoWork(object sender, DoWorkEventArgs e)
        {
            DrawingHandler dh       = new DrawingHandler();
            List <Drawing> drawings = Com.EnumtoArrayDr(dh.GetDrawingSelector().GetSelected()).OfType <TSD.Drawing>().ToList().OrderBy(x => x.Title1).ToList();
            int            count    = 1;

            foreach (TSD.Drawing Dr in drawings)
            {
                string msg = "Total Drawings" + " - Total : " + drawings.Count.ToString() + " Remaining : " + (drawings.Count - count);

                workerThread.ReportProgress(count, msg);
                if (workerThread.CancellationPending)
                {
                    e.Cancel = true;
                    break;
                }

                try
                {
                    if (dh.SetActiveDrawing(Dr, true))
                    {
                        CD.ProceedDrawing(Dr, chkDeleteDim.Checked, lbCode);
                        dh.SaveActiveDrawing();
                        dh.CloseActiveDrawing(true);
                    }
                }
                catch (Exception ex)
                { }
                count++;
            }
        }
Exemplo n.º 24
0
        /// <summary>
        /// 绘制法向与Z轴平行的中间零部件上螺钉的标记;
        /// </summary>
        public void DrawZNormalMiddleBoltMark()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector();

            foreach (CMrPart mrPart in mMrPartList)
            {
                Vector normal = mrPart.mNormal;

                double minX = mrPart.GetMinXPoint().X;
                double maxX = mrPart.GetMaxXPoint().X;

                if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mrPart.IsHaveBolt())
                {
                    continue;
                }
                if (CDimTools.GetInstance().CompareTwoDoubleValue(minX, 0) >= 0 ||
                    CDimTools.GetInstance().CompareTwoDoubleValue(maxX, 0) <= 0)
                {
                    continue;
                }
                List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList();

                foreach (CMrBoltArray mrBoltArray in mrBoltArrayList)
                {
                    if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1)))
                    {
                        continue;
                    }
                    DS.SelectObject(mrBoltArray.mBoltInDrawing);
                }
            }
            CDimTools.GetInstance().DrawMarkByMacro();
        }
Exemplo n.º 25
0
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            Model             model              = new Model();
            ModelInfo         modelInfo          = model.GetInfo();
            string            drawingsFolderPath = modelInfo.ModelPath + @"\drawings\";
            DrawingHandler    drawingHandler     = new DrawingHandler();
            DrawingEnumerator drawingEnum        = drawingHandler.GetDrawingSelector().GetSelected();

            if (drawingEnum.GetSize() == 1)
            {
                while (drawingEnum.MoveNext())
                {
                    System.Reflection.PropertyInfo propertyInfo = drawingEnum.Current.GetType().GetProperty("Identifier", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                    object value = propertyInfo.GetValue(drawingEnum.Current, null);

                    Identifier Identifier = (Identifier)value;
                    Beam       tempBeam   = new Beam();
                    tempBeam.Identifier = Identifier;

                    string             drawingFile = "";
                    bool               result      = tempBeam.GetReportProperty("DRAWING_PLOT_FILE", ref drawingFile);
                    System.IO.FileInfo file        = new System.IO.FileInfo(drawingsFolderPath + drawingFile);
                    if (file.Exists)
                    {
                        System.Diagnostics.Process.Start("Explorer.exe", @"/select, " + file.FullName);
                    }
                }
            }
        }
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            Model model = new Model();
            //Tekla.Structures.Model.UI.ModelObjectSelector modelObjectSelector = new Tekla.Structures.Model.UI.ModelObjectSelector();
            DrawingHandler          dh  = new DrawingHandler();
            DrawingObjectEnumerator doe = dh.GetDrawingObjectSelector().GetSelected();

            while (doe.MoveNext())
            {
                string CONN_CODE_END1 = "", CONN_CODE_END2 = "";
                if (doe.Current is Tekla.Structures.Drawing.Part)
                {
                    Tekla.Structures.Drawing.Part dPart = (Tekla.Structures.Drawing.Part)doe.Current;
                    Tekla.Structures.Model.Part   mPart = (Tekla.Structures.Model.Part)model.SelectModelObject((Identifier)dPart.ModelIdentifier);
                    if (mPart is Beam)
                    {
                        Beam     beam = (Beam)mPart;
                        ViewBase view = dPart.GetView();
                        mPart.GetUserProperty("CONN_CODE_END1", ref CONN_CODE_END1);
                        mPart.GetUserProperty("CONN_CODE_END2", ref CONN_CODE_END2);

                        if (CONN_CODE_END1 != "")
                        {
                            Tekla.Structures.Drawing.Text text = new Tekla.Structures.Drawing.Text(view, beam.StartPoint + new Point(200, 200), CONN_CODE_END1, new LeaderLinePlacing(beam.StartPoint));
                            text.Insert();
                        }
                        if (CONN_CODE_END2 != "")
                        {
                            Tekla.Structures.Drawing.Text text = new Tekla.Structures.Drawing.Text(view, beam.EndPoint + new Point(200, 200), CONN_CODE_END2, new LeaderLinePlacing(beam.EndPoint));
                            text.Insert();
                        }
                    }
                }
            }
        }
Exemplo n.º 27
0
 public static dynamic GetTSObject(DrawingHandler dynObject)
 {
     if (dynObject is null)
     {
         return(null);
     }
     return(dynObject.teklaObject);
 }
Exemplo n.º 28
0
        /// <summary>
        /// 绘制门式框架结构中选择的多张图纸;
        /// </summary>
        public void DrawSelectListDrawingDoor()
        {
            DrawingHandler drawingHandler = new DrawingHandler();

            foreach (CMrAssemblyDrawing mrDrawing in mrAssemblyDrawingList)
            {
                AssemblyDrawing assemblyDrawing = mrDrawing.mAssemblyDring;

                Identifier assemblyDrawingIdentifier = assemblyDrawing.AssemblyIdentifier;

                if (assemblyDrawing == null)
                {
                    continue;
                }
                try
                {
                    Assembly assembly = new Assembly
                    {
                        Identifier = assemblyDrawing.AssemblyIdentifier
                    };

                    assembly.Select();
                    Identifier identifier  = assembly.GetMainPart().Identifier;
                    Beam       modelObject = mModel.SelectModelObject(identifier) as Beam;
                    drawingHandler.SetActiveDrawing(assemblyDrawing, true);
                    DrawingObjectEnumerator allViews = assemblyDrawing.GetSheet().GetAllViews();

                    while (allViews.MoveNext())
                    {
                        if (allViews.Current != null)
                        {
                            TSD.View view = allViews.Current as TSD.View;

                            if (view != null)
                            {
                                DrawDrawingDoorByView(view, modelObject, mrDrawing.mDimType);
                            }
                        }
                    }
                    assemblyDrawing.IsFrozen = true;
                    assemblyDrawing.PlaceViews();
                    assemblyDrawing.Modify();
                    drawingHandler.SaveActiveDrawing();
                    drawingHandler.CloseActiveDrawing();
                }
                catch (System.Exception ex)
                {
                    string strName = assemblyDrawing.Name;

                    MessageBox.Show("图纸" + strName + "标注失败,请确认模型或图纸内是否有问题。异常信息:" + ex.Message);
                    drawingHandler.SaveActiveDrawing();
                    drawingHandler.CloseActiveDrawing();
                    continue;
                }
            }
            MessageBox.Show("扬州Tekla培训石头哥提示您标注结束,感谢您对智能标注系统的支持。");
        }
        public Form1()
        {
            InitializeComponent();
            base.InitializeForm();
            FootingSize.Text = "1500";
            MyModel          = new Model();
            SteelMaterials   = new List <MaterialItem>();

            MyDrawingHandler = new DrawingHandler();
        }
Exemplo n.º 30
0
        public void ReturnFullNameToTextFile()
        {
            string path     = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            string document = "drawings.csv";

            DrawingHandler drawingHandler = new DrawingHandler();

            DrawingEnumerator selectedDrawings = drawingHandler.GetDrawingSelector().GetSelected();

            string result = string.Empty;

            string title1        = string.Empty;
            string title2        = string.Empty;
            string number        = string.Empty;
            string projectNumber = string.Empty;
            string drType        = string.Empty;

            while (selectedDrawings.MoveNext())
            {
                var currentDrawingInfo = new DrawingInfo();

                Drawing drawing = selectedDrawings.Current;

                currentDrawingInfo.BaseName = drawing.GetType() + drawing.Mark;

                currentDrawingInfo.DrawingName = drawing.Name;

                drawing.GetUserProperty("PM_DRAWING_TITLE_1", ref title1);
                drawing.GetUserProperty("PM_DRAWING_TITLE_2", ref title2);
                drawing.GetUserProperty("PM_DRAWING_TYPE", ref drType);
                drawing.GetUserProperty("Nr_dokumentu", ref number);
                drawing.GetUserProperty("Nr_projektu", ref projectNumber);

                currentDrawingInfo.DrawingTitle1         = title1;
                currentDrawingInfo.DrawingTitle2         = title2;
                currentDrawingInfo.DrawingType           = drType;
                currentDrawingInfo.DrawingTitle2Expanded = this.ReturnFullTitle(title2);
                currentDrawingInfo.DrawingProjectNumber  = projectNumber;
                currentDrawingInfo.DrawingNumber         = number;

                result += currentDrawingInfo.ToString() + "\n";
            }

            var lines = result.Split('\n');

            using (StreamWriter outputFile = new StreamWriter(path + @"\" + document))
            {
                foreach (string line in lines)
                {
                    outputFile.WriteLine(line);
                }
            }

            MessageBox.Show("All done!");
        }
Exemplo n.º 31
0
        private void btnShow_Click(object sender, EventArgs e)
        {
            lblMessage.Text = "";

            DrawingHandler MyDrawingHandler = new DrawingHandler();
            int nDrawings = 0;
            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                int iCounter = 0;
                while (SelectedDrawings.MoveNext())
                {
                    iCounter++;
                }
                nDrawings = iCounter;
            }

            progressBar1.Minimum = 0;
            progressBar1.Maximum = nDrawings;
            progressBar1.Step = 1;

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                int iCounter = 1;
                while (SelectedDrawings.MoveNext())
                {
                    progressBar1.PerformStep();

                    Drawing currentDrawing = SelectedDrawings.Current;
                    ListViewItem currentRow = new ListViewItem(currentDrawing.Mark);

                    currentRow.SubItems.Add(currentDrawing.Name);
                    string strHeight = currentDrawing.Layout.SheetSize.Height.ToString();
                    string strWidth = currentDrawing.Layout.SheetSize.Width.ToString();
                    currentRow.SubItems.Add(strWidth + "x" + strHeight);
                    string PrinterInstance = "QP_" + strWidth + "x" + strHeight;

                    //TSM.Operations.Operation.DisplayPrompt("Drawing " + currentDrawing.Name + ": " + iCounter.ToString() + "/" + nDrawings.ToString());
                    lblMessage.Text = "";
                    lblMessage.Text = "Drawing " + currentDrawing.Name + ": " + iCounter.ToString() + "/" + nDrawings.ToString();
                    iCounter++;

                    if (chkPDF.Checked)
                        WriteCurrentDrawing(currentDrawing, PrinterInstance);

                    if (chkDWG.Checked)
                        PrintToFile(currentDrawing);
                }
            }

            //TSM.Operations.Operation.DisplayPrompt("Write command completed!");
            lblMessage.Text = "Write command completed!";
            progressBar1.Value = 0;
        }
Exemplo n.º 32
0
        private void SelectedDrawing_Click(object sender, EventArgs e)
        {
            this.progressBar1.Value = 0;
            DrawingHandler drawingHandler = new DrawingHandler();

            if (drawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator selected = drawingHandler.GetDrawingSelector().GetSelected();
                this.RenameDrawingTitle(selected);
            }
        }
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            string fileName = @"Reports/test.csv";

            try
            {
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }
            }
            catch { }

            int drawingNr = 1;
            DrawingHandler myDrawingHandler = new DrawingHandler();
            DrawingEnumerator selectedDrawings = myDrawingHandler.GetDrawingSelector().GetSelected();

            var csv = new StringBuilder();

            foreach (Drawing currentDrawing in selectedDrawings)
            {
                string name = currentDrawing.Title1;
                string nr = currentDrawing.Name;

                DateTime dmtDate = new DateTime(1970, 1, 1);
                int dmtDateSeconds = 0;
                currentDrawing.GetUserProperty("DR_RESP_DSGNR_DATE", ref dmtDateSeconds);
                dmtDate = dmtDate.AddSeconds(dmtDateSeconds);

                DateTime revisionDate = new DateTime(1970, 1, 1);
                int revisionDateSeconds = 0;
                string revisionMark = "";
                DateLastMark(currentDrawing, out revisionMark, out revisionDateSeconds);
                revisionDate = revisionDate.AddSeconds(revisionDateSeconds);

                string newLine = string.Format("{0} ;{1} ;{2} ;{3} ;{4} ;", name, nr, revisionMark, dmtDate.ToShortDateString(), revisionDate.ToShortDateString());
                csv.AppendLine(newLine);

                //MessageBox.Show(newLine);

                drawingNr++;
            }

            try
            {
                File.WriteAllText(fileName, csv.ToString());
            }
            catch
            {
                MessageBox.Show("write failed");
            }
        }
        public static void DateLastMark(Drawing croquis, out string revisionMark, out int revisionDateSeconds)
        {
            DrawingHandler drawingHandler = new DrawingHandler();
            Type drawingType = croquis.GetType();
            PropertyInfo propertyInfo = drawingType.GetProperty("Identifier", BindingFlags.Instance | BindingFlags.NonPublic);
            object value = propertyInfo.GetValue(croquis, null);

            Identifier identifier = (Identifier)value;
            Beam fakeBeam = new Beam { Identifier = identifier };

            revisionMark = "";
            fakeBeam.GetReportProperty("REVISION.LAST_MARK", ref revisionMark);

            revisionDateSeconds = 0;
            fakeBeam.GetReportProperty("REVISION.LAST_DATE_CREATE", ref revisionDateSeconds);
        }
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
            DrawingHandler myDrawingHandler = new DrawingHandler();
            if (myDrawingHandler.GetConnectionStatus())
            {
                DrawingObjectEnumerator selectedObjects = myDrawingHandler.GetDrawingObjectSelector().GetSelected();
                while (selectedObjects.MoveNext())
                {
                    if (selectedObjects.Current is StraightDimensionSet)
                    {
                        StraightDimensionSet curDimSet = selectedObjects.Current as TSD.StraightDimensionSet;
                        TSD.ContainerElement LUT = curDimSet.Attributes.LeftUpperTag as TSD.ContainerElement;
                        TSD.ContainerElement RUT = curDimSet.Attributes.RightUpperTag as TSD.ContainerElement;

                        curDimSet.Attributes.LeftUpperTag = RUT;
                        curDimSet.Attributes.RightUpperTag = LUT;
                        curDimSet.Modify();
                    }
                }
            }
        }
 public CircleOpening(DrawingHandler drawingHandler)
 {
     _drawingHandler = drawingHandler;
 }
Exemplo n.º 37
0
        private bool PrintToFile(Drawing currentDrawing)
        {
            bool Result = false;
            double scale = 1.0;

            if (rbtnSCALE.Checked)
            {
                //get scale of the first view
                //scale = GetScaleFromTheView();
            }

            DrawingHandler MyDrawingHandler = new DrawingHandler();
            PrintAttributes printAttributes = new PrintAttributes();
            printAttributes.Scale = scale;
            printAttributes.PrintToMultipleSheet = false;
            printAttributes.NumberOfCopies = 1;
            printAttributes.Orientation = DotPrintOrientationType.Auto;
            printAttributes.PrintArea = DotPrintAreaType.EntireDrawing;
            printAttributes.PrinterInstance = "DWG";

            string DrawingType = GetDrawingTypeCharacter(currentDrawing);

            /*
            set XS_DRAWING_PLOT_FILE_DIRECTORY=.\PlotFiles
            set XS_DRAWING_PLOT_FILE_NAME_A=%%UDA:PROJECT_USERFIELD_1%%-%%NAME.-%%%%REV_MARK?_Rev%%%%REV_MARK%%
            set XS_DRAWING_PLOT_FILE_NAME_W=%%UDA:PROJECT_USERFIELD_1%%-%%NAME.-%%%%REV_MARK?_Rev%%%%REV_MARK%%
            set XS_DRAWING_PLOT_FILE_NAME_C=%%UDA:PROJECT_USERFIELD_1%%-%%NAME.-%%%%REV_MARK?_Rev%%%%REV_MARK%%
            set XS_DRAWING_PLOT_FILE_NAME_G=%%UDA:PROJECT_USERFIELD_1%%-%%TITLE.-%%%%REV_MARK?_Rev%%%%REV_MARK%%
            set XS_DRAWING_PLOT_FILE_NAME_M=%%UDA:PROJECT_USERFIELD_1%%-%%TITLE.-%%%%REV_MARK?_Rev%%%%REV_MARK%%
             */

            //string output_path = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_DIRECTORY");
            string output_path = "c:\\pdf";
            string output_file = "out.dwg";

            Model CurrentModel = new Model();
            ProjectInfo ProjectInfo = CurrentModel.GetProjectInfo();
            if (CurrentModel.GetConnectionStatus())
            {
                output_file = ProjectInfo.ProjectNumber;
            }

            string DrawingName = "";

            //TSM.Operations.Operation.DisplayPrompt("DrawingType" + DrawingType);

            switch (DrawingType)
            {
                case "A":
                //output_file = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_NAME_A");
                case "W":
                //output_file = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_NAME_W");
                case "C":
                    //output_file = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_NAME_C");
                    DrawingName = currentDrawing.Mark;
                    DrawingName = RemoveBrackets(DrawingName);
                    break;
                case "G":
                //output_file = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_NAME_G");
                case "M":
                    //output_file = Environment.GetEnvironmentVariable("XS_DRAWING_PLOT_FILE_NAME_M");
                    DrawingName = currentDrawing.Name;
                    break;
                default:
                    goto case "A";
            }

            DrawingName = DrawingName.Replace('.', '-');
            output_file += "-" + DrawingName + ".dwg";

            if (!String.IsNullOrEmpty(output_path) && !String.IsNullOrEmpty(output_file))
                Result = MyDrawingHandler.PrintDrawing(currentDrawing, printAttributes, output_path + "\\" + output_file);

            return Result;
        }
Exemplo n.º 38
0
        private void button1_Click(object sender, EventArgs e)
        {
            DrawingHandler MyDrawingHandler = new DrawingHandler();

            PrintAttributes printAttributes = new PrintAttributes();
            printAttributes.Scale = 1.0;
            printAttributes.PrintToMultipleSheet = false;
            printAttributes.NumberOfCopies = 1;
            printAttributes.Orientation = DotPrintOrientationType.Auto;
            printAttributes.PrintArea = DotPrintAreaType.EntireDrawing;
            printAttributes.PrinterInstance = "PDF_594x420";

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();
                while (SelectedDrawings.MoveNext())
                {
                    Drawing currentDrawing = SelectedDrawings.Current;

                    //Get print attributes: we need only PrinterInstance
                    MyDrawingHandler.PrintDrawing(currentDrawing, printAttributes);
                }
            }
        }
Exemplo n.º 39
0
        private bool WriteCurrentDrawing(Drawing currentDrawing, string PrinterInstance)
        {
            bool Result = false;
            DrawingHandler MyDrawingHandler = new DrawingHandler();
            PrintAttributes printAttributes = new PrintAttributes();
            printAttributes.Scale = 1.0;
            printAttributes.PrintToMultipleSheet = false;
            printAttributes.NumberOfCopies = 1;
            printAttributes.Orientation = DotPrintOrientationType.Auto;
            printAttributes.PrintArea = DotPrintAreaType.EntireDrawing;
            printAttributes.PrinterInstance = PrinterInstance;

            Result = MyDrawingHandler.PrintDrawing(currentDrawing, printAttributes);

            return Result;
        }
Exemplo n.º 40
0
        public static void Init(GraphicsDeviceManager gdm, ContentManager cm)
		{
			_graphicsManager = gdm;
			_contentManager = cm;
			_currentScreen = new Stack<Screen>();

            //Set Events
            Drawing += new DrawingHandler(Draw);
            Exiting += new EventHandler(Exit);
            Loading += new LoadingHandler(Load);
            PoppingScreen += new PoppingScreenHandler(PopScreen);
            PushingScreen += new PushingScreenHandler(PushScreen);
            ReloadingScreen += new ReloadingScreenHandler(ReloadScreen);
            Unloading += new EventHandler(Unload);
            Updating += new UpdatingHandler(Update);
		}
 public RectOpening(DrawingHandler drawingHandler)
 {
     _drawingHandler = drawingHandler;
 }
 public static void Run(Tekla.Technology.Akit.IScript akit)
 {
     DrawingHandler drawingHandler = new DrawingHandler();
     if (drawingHandler.GetConnectionStatus())
     {
         CircleOpening program = new CircleOpening(drawingHandler);
         program.main();
     }
     else
     {
         MessageBox.Show("Ei leia joonist");
     }
 }
Exemplo n.º 43
0
        private void PaintBlueRectangle()
        {
            ArrayList ItemList = new ArrayList();
            Drawing ActivatedDrawing;
            bool DrawingFound = false;

            DrawingHandler MyDrawingHandler = new DrawingHandler();

            if (MyDrawingHandler.GetConnectionStatus())
            {
                DrawingEnumerator SelectedDrawings = MyDrawingHandler.GetDrawingSelector().GetSelected();

                while (SelectedDrawings.MoveNext() && !DrawingFound)
                {
                    ActivatedDrawing = SelectedDrawings.Current;
                    double sheetHeight = ActivatedDrawing.Layout.SheetSize.Height;
                    double sheetWidth = ActivatedDrawing.Layout.SheetSize.Width;

                    double minX = 0.0;
                    double minY = 0.0;
                    double maxX = sheetWidth;
                    double maxY = sheetHeight;

                    TSD.ContainerView currentSheet = ActivatedDrawing.GetSheet();
                    TSD.DrawingObjectEnumerator viewEnum = currentSheet.GetViews();
                    while (viewEnum.MoveNext())
                    {
                        TSD.View currentView = viewEnum.Current as TSD.View;
                        RectangleBoundingBox ViewAABB = currentView.GetAxisAlignedBoundingBox();
                        double rbbx = ViewAABB.UpperLeft.X;
                        double rbby = ViewAABB.UpperLeft.Y;
                        double rbbW = ViewAABB.Width;
                        double rbbH = ViewAABB.Height;
                        double viewScale = currentView.Attributes.Scale;
                        //MessageBox.Show("rbbx=" + Convert.ToString(rbbx) + ", rbby=" + Convert.ToString(rbby) + ", rbbW=" + Convert.ToString(rbbW) + ", rbbH=" + Convert.ToString(rbbH));
                        ItemList.Add(rbbx);
                        ItemList.Add(rbby);
                        ItemList.Add(rbbW);
                        ItemList.Add(rbbH);
                        ItemList.Add(viewScale);

                        if (ViewAABB.UpperLeft.X < minX)
                        {
                            minX = ViewAABB.UpperLeft.X;
                        }
                        if (ViewAABB.LowerLeft.Y < minY)
                        {
                            minY = ViewAABB.LowerLeft.Y;
                        }
                        if (ViewAABB.UpperRight.X > maxX)
                        {
                            maxX = ViewAABB.UpperRight.X;
                        }
                        if (ViewAABB.UpperLeft.Y > maxY)
                        {
                            maxY = ViewAABB.UpperLeft.Y;
                        }
                    }

                    double bufferWidth = Math.Abs(minX) + maxX;
                    double bufferHeight = Math.Abs(minY) + maxY;

                    //panel1.Width = (int)Convert.ToInt32(bufferWidth);
                    //panel1.Height = (int)Convert.ToInt32(bufferHeight);
                    //btnPreview2.Location = new Point(panel1.Width - btnPreview2.Size.Width - 15, panel1.Height + btnPreview2.Size.Height);
                    //checkBox1.Location = new Point((int)Convert.ToInt32(0.2 * panel1.Width), panel1.Height + checkBox1.Size.Height + 20);
                    this.Size = new System.Drawing.Size(panel1.Width + 20, panel1.Height + btnPreview2.Size.Height + 20);
                    buffer = new Bitmap((int)Convert.ToInt32(bufferWidth), (int)Convert.ToInt32(bufferHeight));

            ////////////////////////////////////////////////////////////////////////////////////////
                    /*
                                   double scaleFactorX = 297 / bufferWidth;
                                   double scaleFactorY = 210 / bufferHeight;
                                   double scaleFactor = 0;
                                   if (scaleFactorX <= scaleFactorY)
                                   {
                                       scaleFactor = scaleFactorX;
                                   }else{
                                       scaleFactor=scaleFactorY;
                                   }

                                                       panel1.Width = (int)Convert.ToInt32(bufferWidth * scaleFactor);
                                                       panel1.Height = (int)Convert.ToInt32(bufferHeight * scaleFactor);
                                                       btnPreview2.Location = new Point(panel1.Width - btnPreview2.Size.Width - 15, panel1.Height + btnPreview2.Size.Height);
                                                       checkBox1.Location = new Point((int)Convert.ToInt32(0.2*panel1.Width), panel1.Height + checkBox1.Size.Height + 20);
                                                       this.Size = new System.Drawing.Size(panel1.Width + 20, panel1.Height + btnPreview2.Size.Height + 20);
                                                       buffer = new Bitmap((int)Convert.ToInt32(bufferWidth * scaleFactor), (int)Convert.ToInt32(bufferHeight * scaleFactor));
                                      */
             //////////////////////////////////////////////////////////////////////////////////////

                    // Draw blue rectangle into the buffer
                    using (Graphics bufferGrph = Graphics.FromImage(buffer))
                    {
                        Pen drwPen = new Pen(Color.DarkBlue, 4);
                        bufferGrph.Clear(Color.White);
                        System.Drawing.Rectangle myRectangle = new System.Drawing.Rectangle((int)Convert.ToInt32(Math.Abs(minX)), (int)Convert.ToInt32(Math.Abs(maxY)-sheetHeight), (int)Convert.ToInt32(sheetWidth), (int)Convert.ToInt32(sheetHeight));

                        bufferGrph.DrawRectangle(drwPen, myRectangle);

                        for (int i = 0; i <= ItemList.Count / 5 - 1; i++)
                        {
                            int w = (int)Convert.ToInt32(ItemList[5 * i + 2]);
                            int h = (int)Convert.ToInt32(ItemList[5 * i + 3]) ;
                            int x = (int)Convert.ToInt32(ItemList[5 * i]) + (int)Convert.ToInt32(Math.Abs(minX));
                            int y = (int)Convert.ToInt32(Math.Abs(maxY) - Convert.ToDouble(ItemList[5 * i + 1]));
                            bufferGrph.DrawRectangle(new Pen(Color.Blue, 2), x, y, w, h);

                            if (checkBox1.Checked)
                            {
                                int sx, sy;
                                // Create string to draw.
                                String drawString = "Scale:" + Convert.ToString(ItemList[5 * i + 4]);
                                // Create font and brush.
                                Font drawFont = new Font("Arial", 8);
                                SolidBrush drawBrush = new SolidBrush(Color.Black);
                                // Set format of string.
                                StringFormat drawFormat = new StringFormat();
                                if (h > w)
                                {
                                    // Create point for upper-left corner of drawing.
                                    sx = x + (int)(0.5 * w); sy = y + (int)(0.25 * h);
                                    drawFormat.FormatFlags = StringFormatFlags.DirectionVertical;
                                }
                                else
                                {
                                    // Create point for upper-left corner of drawing.
                                    sx = x + (int)(0.25 * w); sy = y + (int)(0.5 * h);
                                    drawFormat.FormatFlags = StringFormatFlags.DisplayFormatControl;
                                }
                                // Draw string to screen.
                                bufferGrph.DrawString(drawString, drawFont, drawBrush, sx, sy, drawFormat);
                            }
                        }
                        //Be sure the dispose of the pench
                        drwPen.Dispose();
                    }
                    // Invalidate the panel. This will lead to a call of 'panel1_Paint'
                    panel1.Invalidate();
                    //only one loop
                    DrawingFound = true;
                }
            }
        }