CAD二开—WblockCloneObjects函数用法

public void WblockCloneObjects(
    ObjectIdCollection identifiers, 
    ObjectId id, 
    IdMapping mapping, 
    Autodesk.AutoCAD.DatabaseServices.DuplicateRecordCloning cloning, 
    [MarshalAs(UnmanagedType.U1)] bool deferTranslation
);

其中各个参数的意义如下:

  1. identifiers:需要拷贝的源数据库中的对象ID集合,对象ID可以是实体对象ID,也可以是存储实体的块表记录对象ID;
  2. id:指定目标数据库中用于存放源数据库拷贝实体的所属者对象ID,可以是某个块表记录ID,也可以是BlockTableId;
  3. mapping:用于存储源数据库中拷贝对象id与目标数据库中新对象id之间的映射关系;
  4. cloning:若目标数据库中有相同记录,重复记录处理方式:Ignore(忽略),Replace(替换);
以下分别通过两种方式(拷贝实体和拷贝块表记录)实现了用A图纸中的图元替换B图纸中的块表记录,快速实现图框模板定制。
		//拷贝实体
 		public void CloneEntity()
        {
   
            try
            {
   
                string defaultPath = new DirectoryInfo(typeof(CommandDetail).Assembly.Location).Parent.FullName;
                string stdBlkPath = Path.Combine(Path.Combine(defaultPath, "config"), "B.dwg");
                string titlePath = Path.Combine(Path.Combine(defaultPath, "config"), "A.dwg");
                Database titleDb = new Database(false, true);
                titleDb.ReadDwgFile(titlePath, System.IO.FileShare.Read, true, null);
                titleDb.CloseInput(true);

                Database stdBlkDb = new Database(false, true);
                stdBlkDb.ReadDwgFile(stdBlkPath, System.IO.FileShare.ReadWrite, true, null);
                stdBlkDb.CloseInput(true);

                Point3d rbPos = new Point3d(titleDb.Extmax.X, titleDb.Extmin.Y, 0);
                Matrix3d mt = Matrix3d.Displacement(rbPos.GetVectorTo(Point3d.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值