Пример #1
0
        //----------------------------------------------------------
        public static void set_appearance_asset(Document doc, Material material)
        {
            try
            {
                var asset = new FilteredElementCollector(doc).OfClass(typeof(AppearanceAssetElement)).First(x => x.Name == "Generic");

                AppearanceAssetElement assetElem = asset as AppearanceAssetElement;

                AppearanceAssetElement assetElemNew = assetElem.Duplicate(material.Name + DateTime.Now.ToString("ddMMyyHHmmss"));

                AppearanceAssetEditScope editScope = new AppearanceAssetEditScope(doc);
                Asset editableAsset = editScope.Start(assetElemNew.Id);
                AssetPropertyDoubleArray4d genericDiffuseProperty = editableAsset.FindByName("generic_diffuse") as AssetPropertyDoubleArray4d;
                genericDiffuseProperty.SetValueAsColor(material.Color);
                AssetPropertyDouble genericTransparency = editableAsset.FindByName("generic_transparency") as AssetPropertyDouble;
                genericTransparency.Value = Convert.ToDouble(material.Transparency) / 100;

                editScope.Commit(true);
                material.AppearanceAssetId = assetElemNew.Id;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #2
0
        //----------------------------------------------------------
        public void SetColorAppearanceAsset(Document doc, Material material)
        {
            try
            {
                var           list = new FilteredElementCollector(doc).OfClass(typeof(AppearanceAssetElement)).ToList();
                List <string> name = new List <string>();
                foreach (AppearanceAssetElement e in list)
                {
                    name.Add(e.Name);
                }
                string newName = "";
                for (var i = 0; i < 10000000; i++)
                {
                    if (name.Any(x => x == material.Name + "(" + i.ToString() + ")") == false)
                    {
                        newName = material.Name + "(" + i.ToString() + ")";
                        break;
                    }
                }

                AppearanceAssetElement assetElem = list[0] as AppearanceAssetElement;

                AppearanceAssetElement assetElemNew = assetElem.Duplicate(newName);

                AppearanceAssetEditScope editScope = new AppearanceAssetEditScope(doc);
                Asset editableAsset = editScope.Start(assetElemNew.Id);
                AssetPropertyDoubleArray4d genericDiffuseProperty = editableAsset["generic_diffuse"] as AssetPropertyDoubleArray4d;
                genericDiffuseProperty.SetValueAsColor(material.Color);
                AssetPropertyDouble genericTransparency = editableAsset["generic_transparency"] as AssetPropertyDouble;
                genericTransparency.Value = Convert.ToDouble(material.Transparency) / 100;

                editScope.Commit(true);
                material.AppearanceAssetId = assetElemNew.Id;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }