Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
cuongtk2

Xin giúp Wblock với DynamicBlock

Các bài được khuyến nghị

Trong code thiếu gì để các Dynamic properties theo vào 

[CommandMethod("wblockEntity")]

        static public void wblockEntity()
        {
            Document doc = AcadApp.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            using (var tr = db.TransactionManager.StartTransaction())
            {
                PromptEntityOptions peo = new PromptEntityOptions("");
                peo.SetRejectMessage("Đối tượng không phải block");
                peo.AddAllowedClass(typeof(BlockReference), true);
                peo.Message = "Chọn Block";
                var per = ed.GetEntity(peo);

                if (per.Status != PromptStatus.OK)
                    return;
                var id = per.ObjectId;
                var btr = tr.GetObject(id, OpenMode.ForRead) as BlockTableRecord;
                var blr = tr.GetObject(id, OpenMode.ForRead) as BlockReference;

                if (blr.IsDynamicBlock)
                {
                    btr = tr.GetObject(blr.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
                }

                string FileName = "c:/temp/" + btr.Name + ".dwg";

                ObjectIdCollection ids = new ObjectIdCollection();
                foreach (ObjectId ent in btr)
                {
                    ids.Add(ent);
                }
                using (Database newDb = new Database(true, false))
                {
                   
                    db.Wblock(newDb, ids, new Point3d(), DuplicateRecordCloning.Ignore);
                    newDb.SaveAs(FileName, DwgVersion.AC1021);
                }


                tr.Commit();
            }


        }

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Đã sửa được

 [CommandMethod("wblockEntity")]

        static public void wblockEntity()
        {
            Document doc = AcadApp.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            using (var tr = db.TransactionManager.StartTransaction())
            {
                PromptEntityOptions peo = new PromptEntityOptions("");
                peo.SetRejectMessage("Đối tượng không phải block");
                peo.AddAllowedClass(typeof(BlockReference), true);
                peo.Message = "Chọn Block";
                var per = ed.GetEntity(peo);

                if (per.Status != PromptStatus.OK)
                    return;
                var id = per.ObjectId;
                var btr = tr.GetObject(id, OpenMode.ForRead) as BlockTableRecord;
                var blr = tr.GetObject(id, OpenMode.ForRead) as BlockReference;

                if (blr.IsDynamicBlock)
                {
                    btr = tr.GetObject(blr.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord;
                }

                string FileName = "c:/temp/" + btr.Name + ".dwg";
                
                using (Database newDb = db.Wblock(btr.ObjectId))
                {
                    newDb.UpdateExt(true);
                    newDb.UpdateThumbnail = 16;
                    newDb.SaveAs(FileName, DwgVersion.AC1021);
                }
              

                tr.Commit();
            }


        }

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×