コード例 #1
0
ファイル: CadHelper.cs プロジェクト: gispda/InterCad
        //Get needed Viewport information
        public static ViewportInfo[] SelectLockedViewportInfoOnLayout(
            Document dwg, string layoutName)
        {
            List <ViewportInfo> lst = new List <ViewportInfo>();

            TypedValue[] vals = new TypedValue[] {
                new TypedValue((int)DxfCode.Start, "VIEWPORT"),
                new TypedValue((int)DxfCode.LayoutName, layoutName)
            };

            PromptSelectionResult res =
                dwg.Editor.SelectAll(new SelectionFilter(vals));

            if (res.Status == PromptStatus.OK)
            {
                using (Transaction tran =
                           dwg.TransactionManager.StartTransaction())
                {
                    foreach (ObjectId id in res.Value.GetObjectIds())
                    {
                        Viewport vport = (Viewport)tran.GetObject(
                            id, OpenMode.ForRead);
                        if (vport.Number != 1 && vport.Locked)
                        {
                            ViewportInfo vpInfo = new ViewportInfo();
                            vpInfo.ViewportId    = id;
                            vpInfo.NonRectClipId = vport.NonRectClipEntityId;
                            if (!vport.NonRectClipEntityId.IsNull &&
                                vport.NonRectClipOn)
                            {
                                Polyline2d pl = (Polyline2d)tran.GetObject(
                                    vport.NonRectClipEntityId, OpenMode.ForRead);
                                vpInfo.BoundaryInPaperSpace =
                                    GetNonRectClipBoundary(pl, tran);
                            }
                            else
                            {
                                vpInfo.BoundaryInPaperSpace =
                                    GetViewportBoundary(vport);
                            }

                            Matrix3d mt = PaperToModel(vport);
                            vpInfo.BoundaryInModelSpace =
                                TransformPaperSpacePointToModelSpace(
                                    vpInfo.BoundaryInPaperSpace, mt);

                            lst.Add(vpInfo);
                        }
                    }

                    tran.Commit();
                }
            }

            return(lst.ToArray());
        }
コード例 #2
0
ファイル: CadHelper.cs プロジェクト: gispda/InterCad
        public static ViewportInfo GetViewInfo(Viewport vport, Transaction tran)
        {
            ViewportInfo vpInfo = null;

            if (vport == null)
            {
                Log4NetHelper.WriteInfoLog("视口放大太小,请放大到全视口选择实体。\n");
                return(null);
            }
            Log4NetHelper.WriteInfoLog("视口的数字" + vport.Number + "\n");
            if (vport.Number != 1 && vport.Locked)
            {
                vpInfo               = new ViewportInfo();
                vpInfo.ViewportId    = vport.ObjectId;
                vpInfo.NonRectClipId = vport.NonRectClipEntityId;
                if (!vport.NonRectClipEntityId.IsNull &&
                    vport.NonRectClipOn)
                {
                    Polyline2d pl = (Polyline2d)tran.GetObject(
                        vport.NonRectClipEntityId, OpenMode.ForRead);
                    vpInfo.BoundaryInPaperSpace =
                        GetNonRectClipBoundary(pl, tran);
                }
                else
                {
                    vpInfo.BoundaryInPaperSpace =
                        GetViewportBoundary(vport);
                }

                Matrix3d mt = PaperToModel(vport);
                vpInfo.BoundaryInModelSpace =
                    TransformPaperSpacePointToModelSpace(
                        vpInfo.BoundaryInPaperSpace, mt);
            }
            return(vpInfo);
        }