AutoCAD.NET API2018二次开发第九章

视图视口拆分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//运行时
using Autodesk.AutoCAD.Runtime;
//数据库
using Autodesk.AutoCAD.DatabaseServices;
//应用程序服务
using Autodesk.AutoCAD.ApplicationServices;
//几何
using Autodesk.AutoCAD.Geometry;

namespace AutoDemo13
{
    public class Class1
    {
        //视口拆分上下两个 水平
        [CommandMethod("SZSK")]
        public static void SZSK()
        {
            //获取当前文档
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            //获取当前数据库
            Database acDb = acDoc.Database;
            using (Transaction acTran = acDb.TransactionManager.StartTransaction())
            {
                //当前视口表记录
                ViewportTable acViewPT = acTran.GetObject(acDb.ViewportTableId, OpenMode.ForRead) as ViewportTable;
                if (acViewPT.Has("view11") == false)
                {
                    acTran.GetObject(acDb.ViewportTableId, OpenMode.ForWrite);
                    //获取记录表
                    ViewportTableRecord acViewPTR_L = new ViewportTableRecord();
                    //名字
                    acViewPTR_L.Name = "view11";
                    //左下角位置
                    acViewPTR_L.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0, 0);
                    //右上角位置
                    acViewPTR_L.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(1, 0.5);
                    acViewPT.Add(acViewPTR_L);
                    ViewportTableRecord acViewPTR_U = new ViewportTableRecord();
                    acViewPTR_U.Name = "view11";
                    //左下角位置
                    acViewPTR_U.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0, 0.5);
                    //右上角位置
                    acViewPTR_U.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(1, 1);
                    acViewPT.Add(acViewPTR_U);
                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRList = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRList.Name == "*Active")
                        {
                            acTran.GetObject(oi, OpenMode.ForWrite);
                            acViewRList.Erase();
                        }
                    }
                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRListR = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRListR.Name == "view11")
                        {
                            acViewRListR.Name = "*Active";
                            acDoc.Editor.UpdateTiledViewportsFromDatabase();
                        }
                    }
                    acTran.Commit();
                }
            }

        }

        //拆分成四个窗口
        [CommandMethod("FoSzSk")]
        public static void FoSzSk()
        {
            //获取当前文档
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            //获取当前数据库
            Database acDb = acDoc.Database;
            using (Transaction acTran = acDb.TransactionManager.StartTransaction())
            {
                //当前视口表记录
                ViewportTable acViewPT = acTran.GetObject(acDb.ViewportTableId, OpenMode.ForRead) as ViewportTable;
                if (acViewPT.Has("view11") == false)
                {
                    acTran.GetObject(acDb.ViewportTableId, OpenMode.ForWrite);
                    //获取记录表
                    ViewportTableRecord acViewPTR_L = new ViewportTableRecord();
                    //名字
                    acViewPTR_L.Name = "view11";
                    //左下角位置
                    acViewPTR_L.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0, 0);
                    //右上角位置
                    acViewPTR_L.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 0.5);
                    acViewPT.Add(acViewPTR_L);

                    ViewportTableRecord acViewPTR_U = new ViewportTableRecord();
                    acViewPTR_U.Name = "view11";
                    //左下角位置
                    acViewPTR_U.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0, 0.5);
                    //右上角位置
                    acViewPTR_U.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 1);
                    acViewPT.Add(acViewPTR_U);


                    ViewportTableRecord acViewPTR_U1 = new ViewportTableRecord();
                    acViewPTR_U1.Name = "view11";
                    //左下角位置
                    acViewPTR_U1.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 0.5);
                    //右上角位置
                    acViewPTR_U1.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(1, 1);
                    acViewPT.Add(acViewPTR_U1);


                    ViewportTableRecord acViewPTR_U2 = new ViewportTableRecord();
                    acViewPTR_U2.Name = "view11";
                    //左下角位置
                    acViewPTR_U2.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 0);
                    //右上角位置
                    acViewPTR_U2.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(1, 0.5);
                    acViewPT.Add(acViewPTR_U2);


                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRList = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRList.Name == "*Active")
                        {
                            acTran.GetObject(oi, OpenMode.ForWrite);
                            acViewRList.Erase();
                        }
                    }
                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRListR = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRListR.Name == "view11")
                        {
                            acViewRListR.Name = "*Active";
                            acDoc.Editor.UpdateTiledViewportsFromDatabase();
                        }
                    }
                    acTran.Commit();
                }
            }

        }

        //垂直拆分两个
        [CommandMethod("FoSzSkTo")]
        public static void FoSzSkTo()
        {
            //获取当前文档
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            //获取当前数据库
            Database acDb = acDoc.Database;
            using (Transaction acTran = acDb.TransactionManager.StartTransaction())
            {
                //当前视口表记录
                ViewportTable acViewPT = acTran.GetObject(acDb.ViewportTableId, OpenMode.ForRead) as ViewportTable;
                if (acViewPT.Has("view11") == false)
                {
                    acTran.GetObject(acDb.ViewportTableId, OpenMode.ForWrite);
                    //获取记录表
                    ViewportTableRecord acViewPTR_L = new ViewportTableRecord();
                    //名字
                    acViewPTR_L.Name = "view11";
                    //左下角位置
                    acViewPTR_L.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0, 0);
                    //右上角位置
                    acViewPTR_L.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 1);
                    acViewPT.Add(acViewPTR_L);

                    ViewportTableRecord acViewPTR_U = new ViewportTableRecord();
                    acViewPTR_U.Name = "view11";
                    //左下角位置
                    acViewPTR_U.LowerLeftCorner = new Autodesk.AutoCAD.Geometry.Point2d(0.5, 0);
                    //右上角位置
                    acViewPTR_U.UpperRightCorner = new Autodesk.AutoCAD.Geometry.Point2d(1, 1);
                    acViewPT.Add(acViewPTR_U);


                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRList = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRList.Name == "*Active")
                        {
                            acTran.GetObject(oi, OpenMode.ForWrite);
                            acViewRList.Erase();
                        }
                    }
                    foreach (ObjectId oi in acViewPT)
                    {
                        ViewportTableRecord acViewRListR = acTran.GetObject(oi, OpenMode.ForRead) as ViewportTableRecord;
                        if (acViewRListR.Name == "view11")
                        {
                            acViewRListR.Name = "*Active";
                            acDoc.Editor.UpdateTiledViewportsFromDatabase();
                        }
                    }
                    acTran.Commit();
                }
            }

        }

        //设置视口显示范围 垂直
        [CommandMethod("SzFw")]
        public static void SzFw()
        {
            //获取当前文档
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            //获取当前数据库
            Database acDb = acDoc.Database;
            //开始事务
            using (Transaction acTran = acDb.TransactionManager.StartTransaction())
            {
                //当前视口表记录
                ViewportTable acViewPT = acTran.GetObject(acDb.ViewportTableId, OpenMode.ForRead) as ViewportTable;

                foreach (ObjectId oi in acViewPT)
                {
                    ViewportTableRecord acViewTR = acTran.GetObject(oi, OpenMode.ForRead)as ViewportTableRecord;

                    if (acViewTR.Name == "*Active")
                    {
                        Application.SetSystemVariable("CVPORT", acViewTR.Number);
                        if (acViewTR.Number == 2)
                        {
                            ViewTableRecord vtr = acDoc.Editor.GetCurrentView();
                            vtr.CenterPoint = new Autodesk.AutoCAD.Geometry.Point2d(50, 50);
                            vtr.Width = 100;
                            vtr.Height = 100;
                            acDoc.Editor.SetCurrentView(vtr);
                        }
                        if (acViewTR.Number == 3)
                        {
                            ViewTableRecord vtr = acDoc.Editor.GetCurrentView();
                            vtr.CenterPoint = new Autodesk.AutoCAD.Geometry.Point2d(25, 25);
                            vtr.Width = 50;
                            vtr.Height = 50;
                            acDoc.Editor.SetCurrentView(vtr);
                        }

                    }
                }


                acTran.Commit();
            }

        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值