Here is what I have for creating the Material and for verifying that it exists or not.
static string materialName = "Clear";
static public void createMaterialClear(double mocValue)
{
Document acActiveDoc = AcadApp.DocumentManager.MdiActiveDocument;
Database acCurDb = acActiveDoc.Database;
Mapper mapper1 = new Mapper(Projection.InheritProjection, Tiling.Tile, Tiling.Tile,
AutoTransform.TransformObject, Matrix3d.Identity);
ImageFileTexture mttr = new ImageFileTexture();
MaterialMap map = new MaterialMap();
EntityColor eclr = new EntityColor(250, 250, 250);
MaterialColor mc = new MaterialColor(Method.Override, 1, eclr);
MaterialDiffuseComponent mdc = new MaterialDiffuseComponent(mc, map);
MaterialSpecularComponent mck = new MaterialSpecularComponent(mc, map, 1);
MaterialOpacityComponent moc = new MaterialOpacityComponent(mocValue, map);
MaterialRefractionComponent mrfr = new MaterialRefractionComponent(1.5, map);
Material Mat = new Material();
Mat.Name = materialName;
Mat.Description = "material";
Mat.Diffuse = mdc;
Mat.Specular = mck;
Mat.Refraction = mrfr;
Mat.Reflectivity = 1;
Mat.Reflection = map;
Mat.Opacity = moc;
Mat.Ambient = mc;
Mat.Bump = map;
Mat.SelfIllumination = 0;
Mat.Translucence = 0.1;
ObjectId MatId = ObjectId.Null;
using (Transaction tr = acActiveDoc.TransactionManager.StartTransaction())
{
MatId = ObjectId.Null;
if (zzExistMaterial(Mat.Name))
return;
else
{
using (DBDictionary dict = (DBDictionary)tr.GetObject
(acCurDb.MaterialDictionaryId, OpenMode.ForWrite))
{
MatId = dict.SetAt(Mat.Name, Mat);
tr.AddNewlyCreatedDBObject(Mat, true);
}
tr.Commit();
}
}
}
static public bool zzExistMaterial(string matname)
{
Document acActiveDoc = AcadApp.DocumentManager.MdiActiveDocument;
Database acCurDb = acActiveDoc.Database;
bool doesTheMaterialAlreadyExist = false;
ObjectId id = ObjectId.Null;
using (Transaction tr = acActiveDoc.TransactionManager.StartTransaction())
{
using (DBDictionary dict = (DBDictionary)tr.GetObject(acCurDb.MaterialDictionaryId, OpenMode.ForRead))
{
if (dict.Contains(matname))
id = dict.GetAt(matname);
if (id != ObjectId.Null)
doesTheMaterialAlreadyExist = true;
}
tr.Commit();
}
return doesTheMaterialAlreadyExist;
}