Get material image path from Ceramic Schema
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
I am trying to get all image material path from project materials.
Thanks to Jeremy: https://thebuildingcoder.typepad.com/blog/2017/10/material-texture-path.html
https://thebuildingcoder.typepad.com/blog/2019/04/set-material-texture-path-in-editscope.html
I was able to get a image path from Generic schema asset.
FilteredElementCollector fec
= new FilteredElementCollector(doc);
IEnumerable<Material> targetMaterials
= fec.OfClass(typeof(Material)).OfType<Material>();
List<string> mat = new List<string>();
foreach (Material material in targetMaterials) {
using (Transaction t = new Transaction(doc)) {
t.Start("Change texture path");
try
{
ElementId appearanceAssetId = material.AppearanceAssetId;
AppearanceAssetElement appearanceAssetElem
= doc.GetElement(appearanceAssetId) as AppearanceAssetElement;
mat.Add("appearanceAsset "+appearanceAssetElem.Name.ToString());
using (AppearanceAssetEditScope editScope
= new AppearanceAssetEditScope(doc))
{
Asset editableAsset = editScope.Start(appearanceAssetId);
mat.Add("editableAsset "+editableAsset.Name.ToString());
AssetProperty assetProperty = editableAsset.
FindByName("generic_diffuse");
Asset connectedAsset = assetProperty.
GetSingleConnectedAsset() as Asset;
mat.Add("ConnectedAsset "+ connectedAsset.Name.ToString());
if (connectedAsset == null)
{
assetProperty.AddConnectedAsset("UnifieldBitmap");
connectedAsset = assetProperty.GetSingleConnectedAsset();
}
else
{
AssetPropertyString path = connectedAsset.
FindByName("unifiedbitmap_Bitmap")
as AssetPropertyString;
mat.Add("Path "+path.Value.ToString());
}
}
}
catch (Exception ex) {
}
mat.Add("-------------------------");
App.WriteToTxt(mat);
t.Commit();
t.Dispose();
}
For the test purpouse I have created project with 5 materials. 3of them are creating manualy using .png from user/desktop folder. And another two are downloaded form Autedesk material library using images from: C:\Program Files (x86)\Common Files\Autodesk Shared\Materials\Textures\2\Mats.
Here is a Log file from this code.
You can see there is a problem with CeramicSchema(Autodesk Material Library).
So is there a way to get image path from this materials?
2.) what does ["string"] stand for, for example in: connectedAsset["unifiedbitmap_Bitmap"] , because when I write it like this, error: "cannot convert from string to int"pop out
Thanks