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)

  • 相关阅读:
    记一次模型调试问题:使用TextLSTM/RNN学习不动,损失和acc均无变化
    机器学习常用损失函数
    java多线程使用mdc追踪日志
    搜索笔记整理
    pytorch加载bert模型报错
    Transformer源代码解释之PyTorch篇
    matplotlib画图并设置风格
    PyTorch实现断点继续训练
    通过sklearn使用tf-idf提取英文关键词
    通过依存关系生成邻接矩阵
  • 原文地址:https://www.cnblogs.com/swtool/p/SWTOOL_00016.html
Copyright © 2011-2022 走看看