zoukankan      html  css  js  c++  java
  • autocad.net中blocktable,blocktablerecord,blockreference,modelspace,paperspace,layout,viewport的关系(待进一步测试)

    测试代码:

            [CommandMethod("test")]
            public static void test()
            {
                Document doc = Application.DocumentManager.MdiActiveDocument;
                Database db = doc.Database;
                Editor ed = doc.Editor;
                //定义所有的视口ID集合
                ObjectIdCollection viewportIDs = new ObjectIdCollection();
                viewportIDs = db.GetViewports(true);
                List<ObjectId> objectsIdsErase = new List<ObjectId>();
                PromptEntityOptions peo = new PromptEntityOptions("
    请选择一个视口!");
                peo.SetRejectMessage("
    当前选择的图元不是视口!");
                peo.AddAllowedClass(typeof(Viewport), true);
                PromptEntityResult per = ed.GetEntity(peo);
                if (per.Status != PromptStatus.OK)
                    return;
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    //获取当前空间的块表记录
                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
                    //获取当前空间中的当前布局
                    Layout lay = (Layout)tr.GetObject(btr.LayoutId, OpenMode.ForRead);
                    //布局名称
                    ed.WriteMessage("
    LayoutName:" + lay.LayoutName);
                    //布局ID
                    ed.WriteMessage("
    Id:" + lay.Id.ToString());
                    ed.WriteMessage("
    ObjectId:" + lay.ObjectId.ToString());
                    ed.WriteMessage("
    btr.LayoutId:" + btr.LayoutId);
                    //当前空间ID
                    ed.WriteMessage("
    CurrentSpaceId:" + lay.BlockTableRecordId.ToString());
                    //通过选择集方式访问视口对象
                    Viewport vp = (Viewport)tr.GetObject(per.ObjectId, OpenMode.ForRead);
                    ed.WriteMessage("
    ViewPort OwnerId:" + vp.OwnerId);
                    ed.WriteMessage("
    Layout OwnerId:" + lay.OwnerId);
                    ed.WriteMessage("
    btr OwnerId:" + btr.OwnerId);
                    
                    //取得图纸空间中所有浮动视口对象
                    Viewport Vports = (Viewport)tr.GetObject(db.PaperSpaceVportId, OpenMode.ForRead);
                    foreach (ObjectId id in viewportIDs)
                    {
                        //通过遍历视口ID方式访问视口对象
                        Viewport vp1 = id.GetObject(OpenMode.ForRead) as Viewport;
                    }
                    Matrix3d PsToMsTransForm = PaperToModel(vp);
                    //取得当前图形中所有的BlockTable
                    BlockTable bt = (BlockTable)db.BlockTableId.GetObject(OpenMode.ForRead);
                    //取得当前图形中所有的BlockTable
                    BlockTable bt_other = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                    //取得当前空间的所有块表记录
                    BlockTableRecord btr_CurrentSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
                    ed.WriteMessage("
    " + btr_CurrentSpace.Name);
                    //取得模型空间中所有的块表记录
                    BlockTableRecord btr_model = (BlockTableRecord)bt["*Model_Space"].GetObject(OpenMode.ForRead);
                    ed.WriteMessage("
    " + btr_model.Name);
                    //取得图纸空间中所有的块表记录
                    BlockTableRecord btr_paper = (BlockTableRecord)bt["*Paper_Space"].GetObject(OpenMode.ForRead);
                    ed.WriteMessage("
    " + btr_paper.Name);
                    //取得块名为TestBlock的记录
                    BlockTableRecord btr_block = (BlockTableRecord)bt["TestBlock"].GetObject(OpenMode.ForRead);
                    ed.WriteMessage("
    块名为:{0},块属于{1}" , btr_block.Name,btr_block.OwnerId);
                    tr.Commit();
                }
            }

    测试结果:

    LayoutName:Layout1
    Id:(8796087794144)
    ObjectId:(8796087794144)
    btr.LayoutId:(8796087794144)
    CurrentSpaceId:(8796087794096)
    ViewPort OwnerId:(8796087794096)
    Layout OwnerId:(8796087794080)
    btr OwnerId:(8796087793696)
    *Paper_Space
    *Model_Space
    *Paper_Space
    块名为:TestBlock,块属于(8796087793696)

  • 相关阅读:
    CNN超参数优化和可视化技巧详解
    人工智能技术入门该读哪些书
    深度学习全优化方法总结比较(转)
    在分类中如何处理训练集中不平衡问题
    支持向量机SVM 参数选择
    如何使用网格搜索来优化深度学习模型中的超参数(Keras)
    JavaScript权威设计--Window对象(简要学习笔记十三)
    JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)
    JavaScript权威设计--JavaScript函数(简要学习笔记十一)
    JavaScript权威设计--JavaScript函数(简要学习笔记十)
  • 原文地址:https://www.cnblogs.com/swtool/p/SWTOOL_00016.html
Copyright © 2011-2022 走看看