Revit Api - Материал с текстурой из пути к файлу - PullRequest
0 голосов
/ 16 октября 2019

Кто-нибудь знает, как программно создать материал Revit и добавить текстуру из файла?

Сейчас я делаю небольшой грязный хак, где я ищу "Землю", которая является стандартной, и изменяюпуть к текстуре с помощью AssetProperty. Основная проблема с этим решением - ситуация, когда у меня нет этого материала в проекте: P

Я знаю только, как создать цветную текстуру:

    static public Material CreateColorMaterial(Document doc, Color color, string name, bool isTransparency = false)
    {
        SubTransaction createMaterial = new SubTransaction(doc);
        createMaterial.Start();
        //Try to copy an existing material.  If it is not available, create a new one.
        Material materialNew = GetMaterial(name, doc);
        if (materialNew != null)
        {
            createMaterial.Commit();
            return materialNew;
        }

        ElementId idNew = Material.Create(doc, name);
        materialNew = doc.GetElement(idNew) as Material;

        if(isTransparency)
            materialNew.Transparency = 99;

        materialNew.Color = color;
        createMaterial.Commit();

        SubTransaction createPropertySets = new SubTransaction(doc);
        createPropertySets.Start();

        //Create a new structural asset and set properties on it.
        StructuralAsset structuralAsssetColor = new StructuralAsset("ColorStructuralAsset" + name, Autodesk.Revit.DB.StructuralAssetClass.Generic);
        structuralAsssetColor.DampingRatio = .5;

        PropertySetElement pseStructural = PropertySetElement.Create(doc, structuralAsssetColor);

        //Create a new thermal asset and set properties on it.
        ThermalAsset thermalAssetColor = new ThermalAsset("ColorThermalAsset" + name, Autodesk.Revit.DB.ThermalMaterialType.Solid);
        thermalAssetColor.Porosity = 0.1;
        thermalAssetColor.Permeability = 0.2;
        thermalAssetColor.Compressibility = .5;
        thermalAssetColor.ThermalConductivity = .5;

        //Create PropertySets from assets and assign them to the material.
        PropertySetElement pseThermal = PropertySetElement.Create(doc, thermalAssetColor);
        createPropertySets.Commit();
        SubTransaction setPropertySets = new SubTransaction(doc);
        setPropertySets.Start();
        materialNew.SetMaterialAspectByPropertySet(MaterialAspect.Structural, pseStructural.Id);
        materialNew.SetMaterialAspectByPropertySet(MaterialAspect.Thermal, pseThermal.Id);

        setPropertySets.Commit();
        return materialNew;
    }

1 Ответ

0 голосов
/ 17 октября 2019

Решает ли ваша проблема решение Building Coder для установки пути текстуры материала в EditScope?

...