Установка величины прозрачности новому материалу с помощью .NET
Чтобы назначить величину прозрачности новому материалу в AutoCAD .NET API используется класс MaterialOpacityComponent. Следующий код добавляет новый материал в Библиотеку материалов с прозрачностью 90.
- [CommandMethod("AddMaterialToLibrary")]
 - public static void AddMaterialToLibrary()
 - {
 - Document doc = Application.DocumentManager.MdiActiveDocument;
 - String sMaterialName = "MyMaterial";
 - String sTextureMapPath = @"C:\test.jpg";
 - using (Transaction acTrans = doc.TransactionManager.StartTransaction())
 - {
 - // Получаем библиотеку материалов
 - DBDictionary matLib =
 - (DBDictionary)acTrans.GetObject(
 - doc.Database.MaterialDictionaryId, OpenMode.ForRead);
 - // Если материала в библиотеке нет
 - if (matLib.Contains(sMaterialName) == false)
 - {
 - // Создаём изображение карты текстуры
 - ImageFileTexture tex = new ImageFileTexture();
 - tex.SourceFileName = sTextureMapPath;
 - // Создаём карту материала
 - double uScale = 15, vScale = 20;
 - double uOffset = 25, vOffset = 30;
 - Matrix3d mx = new Matrix3d(new double[]{
 - uScale, 0, 0, uScale * uOffset,
 - 0, vScale, 0, vScale * vOffset,
 - 0, 0, 1, 0,
 - 0, 0, 0, 1});
 - Mapper mapper = new Mapper(
 - Projection.Cylinder, Tiling.Tile, Tiling.Tile,
 - AutoTransform.None, mx);
 - MaterialMap map =
 - new MaterialMap(Source.File, tex, 1.0, mapper);
 - MaterialDiffuseComponent mdc =
 - new MaterialDiffuseComponent(new MaterialColor(), map);
 - MaterialRefractionComponent mrc =
 - new MaterialRefractionComponent(2.0, map);
 - // Устанавливаем непрозрачность
 - MaterialOpacityComponent moc =
 - new MaterialOpacityComponent(0.1, map);
 - // Создаём новый материал
 - Material mat = new Material();
 - mat.Name = sMaterialName;
 - mat.Diffuse = mdc;
 - mat.Refraction = mrc;
 - mat.Opacity = moc;
 - mat.Mode = Mode.Realistic;
 - mat.Reflectivity = 1.0;
 - mat.IlluminationModel = IlluminationModel.BlinnShader;
 - // Добавляем в библиотеку материалов
 - matLib.UpgradeOpen();
 - matLib.SetAt(sMaterialName, mat);
 - acTrans.AddNewlyCreatedDBObject(mat, true);
 - acTrans.Commit();
 - }
 - }
 - }
 
Интересно, что в приведенном выше коде, параметр процент (percentage) MaterialOpacityComponent может быть установлен в значение от 0 до 1, где 0 указывает на «не ненепрозрачность» (полная прозрачность) и 1 указывает на полную непрозрачность («не прозрачность»). J
При редактировании нового материала средствами AutoCAD, мы видим слово «прозрачность» и его количество имеет значение от 0 до 100, где 0 означает отсутствие прозрачности (полностью непрозрачный) и 100 означает полностью прозрачный («не непрозрачный»).
 
Из-за этой особенности, например, если величина прозрачности 75, в коде процент непрозрачности должен быть установлен в 0.25.
Обсуждение: http://adn-cis.org/forum/index.php?topic=7112
Опубликовано 26.05.2016