wy553989962 发表于 2011-5-9 16:30:21

那我想问下,怎么遍历所有图层,将所有图层的颜色改成同一种颜色?

请高手指教,谢谢

      public void changeLayerColors()
      {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //以写的方式打开层表
                LayerTable It = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForWrite);
                //遍历层表
                foreach (ObjectId layerId in It)
                {
                  LayerTableRecord Itr = (LayerTableRecord)trans.GetObject(layerId, OpenMode.ForWrite);
                  //修改图层的颜色为1号颜色
                  Color layerColor = Color.FromColorIndex(ColorMethod.ByColor, 1);
                  //设置图层颜色
                  Itr.Color = layerColor;
                }
                trans.Commit();
            }
      }
这是我自己的编辑的程序,但载入后没有效果,不知道错在哪里,希望高手能指导我一下

sieben 发表于 2011-5-9 19:02:26

Color layerColor = Color.FromColorIndex(ColorMethod.ByAci, 1);

wy553989962 发表于 2011-5-10 11:57:53

回复 sieben 的帖子

谢谢啊,呵呵。。高手啊,那我想问下,这个ByAci是什么意思?跟我那个ByColor有什么区别吗?

sieben 发表于 2011-5-10 13:31:21

本帖最后由 sieben 于 2011-5-10 13:36 编辑

这个我现在也说不清楚
Aci 可以说是颜色表达方式或说是颜色组合方式
有些色系直接使用编号来定义颜色,或者直接使用一个名字,或者使用RGB三原色获四色来表示颜色,这个我说不清楚.
ColorMethod.ByAci 可以说是AutoCAD自己定义的色系
1是红色,2是黄色,3是绿色等,序号前七八个及后面的255 256 是较另类的颜色,中间的两百多个颜色和RGB颜色基本是个顺序对应关系.

wy553989962 发表于 2011-5-10 16:58:40

回复 sieben 的帖子

恩,这个颜色的索引值我晓得,但是有些资料我看到就是使用的是bycolor这个方式,是在创建层的时候,通过颜色索引值的方式定义一个颜色,我不太明白他们之间有什么区别?
页: [1]
查看完整版本: 那我想问下,怎么遍历所有图层,将所有图层的颜色改成同一种颜色?