• Jig时原点总是有显示,jig后再添加进btr, jig前不能处理属性添加到块,所以要先添加进btr,再clone(),再删除原来的,再将clone的添加进btr OK 解决问题


            //记录修改为不同的颜色
            private static Document doc = Application.DocumentManager.MdiActiveDocument;
            
    private static Editor ed = doc.Editor;
            
    private static Database db = doc.Database;
            
    private static Dictionary<shortstring> dicIColorValue = new Dictionary<shortstring>();
            
    public void DeColorGroup(DataView dvAllData, System.Windows.Forms.TreeNode node)
            {
                doc 
    = Application.DocumentManager.MdiActiveDocument;
                ed 
    = doc.Editor;
                db 
    = doc.Database;
                dicIColorValue 
    = new Dictionary<shortstring>();

                
    string strFile = dvAllData.RowFilter;
                
    using (DocumentLock docLock = doc.LockDocument())
                {
                    SetEntColor(doc, ed, db, node, dvAllData, dicIColorValue);
                    dvAllData.RowFilter 
    = strFile;

                    
    string strEsc = string.Format("{0}{1}", (char)3, (char)3);
                    doc.SendStringToExecute(strEsc 
    + "cmdAddLabel\n"truefalsefalse);
                    
    //AddLabel(db, doc, ed, dicIColorValue);
                }
            }

            [CommandMethod(
    "cmdAddLabel")]
            
    public void AddLabel()
            {
                
    string strPath = Info.appPath + @"\Acad\Blocks\Label\ColorLabel.dwg";
                
    using (Transaction tr = doc.TransactionManager.StartTransaction())
                {
                    BlockTable bt; BlockTableRecord btr;
                    ArxHlb.CADEntAdd.GetBtBtr(db, tr, 
    out bt, out btr, OpenMode.ForWrite);

                    Point3d pt 
    = new Point3d();
                    Point3d ptBase 
    = pt;
                    List
    <Entity> lstEnt = new List<Entity>();
                    DBObjectCollection objs 
    = new DBObjectCollection();

                    
    foreach (short iColor in dicIColorValue.Keys)
                    {
                        BlockReference refEnt 
    = ArxHlb.CADEntAdd.AddBlockDwgEasy(db, tr,
                            strPath, 
    "*U", pt, 0);

                        
    //得到实体高
                        refEnt.Explode(objs);
                        
    double H = 0;
                        
    foreach (DBObject obj in objs)
                        {
                            
    if (obj is Polyline)
                            {
                                H 
    = ((Polyline)obj).ConstantWidth;
                                
    break;
                            }
                        }

                        Dictionary
    <stringstring> dicAtt = new Dictionary<stringstring>();
                        dicAtt.Add(
    "LABEL", dicIColorValue[iColor]);
                        ArxHlb.CADAtt.SetAttValue(tr, refEnt, dicAtt);

                        ArxHlb.CADEntEdit.ChangeEntAndBlockColor(db, tr,
                            refEnt, Color.FromColorIndex(ColorMethod.ByLayer, iColor));

                        lstEnt.Add(refEnt.Clone() 
    as BlockReference);
                        refEnt.Erase();

                        pt 
    = new Point3d(pt.X, pt.Y + H * 1.50);
                    }

                    
    if (!ArxHlb.CADJig.Jig(ed, lstEnt, ptBase, "\n请选择颜色标签插入点")) return;

                    
    for (int i = 0; i < lstEnt.Count; i++)
                    {
                        btr.AppendEntity(lstEnt[i]);
                        tr.AddNewlyCreatedDBObject(lstEnt[i], 
    true);
                    }

                    tr.Commit();
                }
            }
  • 相关阅读:
    读你必须知道的.NET(二)
    读你必须知道的.NET(四)
    读你必须知道的.NET(三)
    顺序表(线性表)操作的思想及实现之C#版
    HBase原理、基本概念、基本架构3
    HBase学习之深入理解Memstore6
    hadoop学习笔记之hbase完全分布模式安装5
    hbase学习 rowKey的设计4
    WPF开源收集
    请注释你那该死的代码(转载类)
  • 原文地址:https://www.cnblogs.com/houlinbo/p/2108067.html
Copyright © 2020-2023  润新知