天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 100|回复: 0

实现类似CAD中的Block创建块义命令程序

[复制链接]
  • TA的每日心情
    开心
    昨天 08:01
  • 签到天数: 82 天

    [LV.6]常住居民II

    1585

    主题

    204

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
    发表于 2024-3-9 11:08:23 | 显示全部楼层 |阅读模式
    1. [CommandMethod("CreateBlock")]
    2. public void CreateBlock()
    3. {
    4.     Database db = HostApplicationServices.WorkingDatabase;
    5.     Editor ed = Autodesk.<a href="http://bbs.mjtd.com/forum-41-1.html" target="_blank" class="relatedlink">AutoCAD</a>.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
    6.     using (DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument())
    7.     {
    8.         ObjectId blockId = ObjectId.Null;                   //用于返回所创建的块的对象Id
    9.         BlockTableRecord record = new BlockTableRecord();   //创建一个BlockTableRecord类的对象,表示所要创建的块
    10.         record.Name = "MyBlock";                            //设置块名  
    11.         record.Origin = new Point3d(0, 0, 0);               //设置块的基点
    12.         using (Transaction trans = db.TransactionManager.StartTransaction())
    13.         {
    14.             BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForWrite);//以写的方式打开块表
    15.             if (!bt.Has(record.Name))
    16.             {
    17.                 //选择对象
    18.                 PromptSelectionResult res = ed.GetSelection();
    19.                 if (res.Status == PromptStatus.OK)
    20.                 {
    21.                     foreach (ObjectId id in res.Value.GetObjectIds())
    22.                     {
    23.                         Entity ent = trans.GetObject(id, OpenMode.ForWrite) as Entity;
    24.                         Entity NewEnt = (Entity)ent.Clone();
    25.                         record.AppendEntity(NewEnt);
    26.                     }
    27.                 }
    28.                 bt.Add(record);                             //在块表中加入块
    29.                 trans.AddNewlyCreatedDBObject(record, true);//通知事务处理
    30.             }
    31.             else
    32.             {
    33.                 ed.WriteMessage("此图块名已存在,请检查!");
    34.             }
    35.             trans.Commit();
    36.         }
    37.     }
    38. }
    复制代码

     

     

     

     

    实现类似CAD中的Block创建块义命令程序
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-17 20:21 , Processed in 0.063007 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表