Exemple #1
0
        SetAssetParamValue(DB.Visual.Asset asset, string name, Rhino.Display.ColorRGBA value, bool removeAsset = true)
        {
            var prop = asset.FindByName(name);

            switch (prop)
            {
            case DB.Visual.AssetPropertyDoubleArray3d tdProp:
                if (removeAsset)
                {
                    tdProp.RemoveConnectedAsset();
                }
                tdProp.SetValueAsXYZ(new DB.XYZ(
                                         value.R,
                                         value.G,
                                         value.B
                                         ));
                break;

            case DB.Visual.AssetPropertyDoubleArray4d fdProp:
                if (removeAsset)
                {
                    fdProp.RemoveConnectedAsset();
                }
                fdProp.SetValueAsDoubles(new double[] {
                    value.R,
                    value.G,
                    value.B,
                    value.A
                });
                break;
            }
        }
Exemple #2
0
 SetTextureDataFromAssetParam(IGH_DataAccess DA, string paramName,
                              DB.Visual.Asset asset, string schemaPropName)
 {
     // find param
     if (asset.FindByName(schemaPropName) is DB.Visual.AssetProperty prop)
     {
         var connectedAsset = prop.GetSingleConnectedAsset();
         if (connectedAsset != null)
         {
             var assetData =
                 AssetData.GetSchemaDataType(
                     // Asset schema names end in "Schema" e.g. "UnifiedBitmapSchema"
                     // They do not match the names for API wrapper
                     // types e.g. "DB.Visual.UnifiedBitmap"
                     // lets remove the extra stuff
                     connectedAsset.Name.Replace("Schema", "")
                     );
             if (assetData != null)
             {
                 SetAssetDataFromAsset(assetData, connectedAsset);
                 DA.SetData(paramName, assetData);
             }
         }
     }
 }
Exemple #3
0
        AssetParamHasNestedAsset(DB.Visual.Asset asset, string name)
        {
            // find param
            var prop = asset.FindByName(name);

            return(prop != null && prop.GetSingleConnectedAsset() != null);
        }
Exemple #4
0
 SetDataFromAssetParam(IGH_DataAccess DA, string paramName,
                       DB.Visual.Asset asset, string schemaPropName)
 {
     // find param
     if (asset.FindByName(schemaPropName) is DB.Visual.AssetProperty prop)
     {
         // determine data type, and set output
         DA.SetData(paramName, ConvertFromAssetPropertyValue(prop));
     }
 }
Exemple #5
0
        GetAssetParamValue(DB.Visual.Asset asset, string name)
        {
            // find param
            var prop = asset.FindByName(name);

            if (prop != null)
            {
                return(ConvertFromAssetPropertyValue(prop));
            }
            return(null);
        }
Exemple #6
0
        SetAssetParamValue(DB.Visual.Asset asset, string name, string value, bool removeAsset = true)
        {
            var prop = asset.FindByName(name);

            switch (prop)
            {
            case DB.Visual.AssetPropertyString stringProp:
                if (removeAsset)
                {
                    stringProp.RemoveConnectedAsset();
                }
                stringProp.Value = value;
                break;
            }
        }
Exemple #7
0
        SetAssetDataFromAsset(AssetData assetData, DB.Visual.Asset asset)
        {
            foreach (var assetPropInfo in assetData.GetAssetProperties())
            {
                // determine schema prop name associated with with asset property
                string schemaPropName = assetData.GetSchemaPropertyName(assetPropInfo);
                if (schemaPropName is null)
                {
                    continue;
                }

                // find param
                var prop = asset.FindByName(schemaPropName);
                if (prop is null)
                {
                    continue;
                }

                // determine data type, and set output
                assetPropInfo.SetValue(assetData, ConvertFromAssetPropertyValue(prop));
            }
        }
Exemple #8
0
        SetAssetParamValue(DB.Visual.Asset asset, string name, double value, bool removeAsset = true)
        {
            var prop = asset.FindByName(name);

            switch (prop)
            {
            case DB.Visual.AssetPropertyDouble doubleProp:
                if (removeAsset)
                {
                    doubleProp.RemoveConnectedAsset();
                }
                doubleProp.Value = value;
                break;

            case DB.Visual.AssetPropertyDistance distProp:
                if (removeAsset)
                {
                    distProp.RemoveConnectedAsset();
                }
                distProp.Value = value;
                break;
            }
        }
        SetAssetParamValue(DB.Visual.Asset asset, string name, double value, bool removeAsset = true)
        {
            var prop = asset.FindByName(name);

            switch (prop)
            {
            case DB.Visual.AssetPropertyDouble doubleProp:
                if (removeAsset)
                {
                    doubleProp.RemoveConnectedAsset();
                }
                doubleProp.Value = value;
                break;

            case DB.Visual.AssetPropertyDistance distProp:
                if (removeAsset)
                {
                    distProp.RemoveConnectedAsset();
                }
                distProp.Value = value * Rhino.RhinoMath.UnitScale(Rhino.RhinoDoc.ActiveDoc?.ModelUnitSystem ?? Rhino.UnitSystem.Meters, distProp.DisplayUnitType.ToUnitSystem());
                break;
            }
        }
Exemple #10
0
        SetAssetParamTexture(DB.Visual.Asset asset, string name, TextureData value)
        {
            var prop = asset.FindByName(name);

            prop.RemoveConnectedAsset();
            prop.AddConnectedAsset(value.Schema);
            var textureAsset = prop.GetSingleConnectedAsset();

            foreach (var assetPropInfo in value.GetAssetProperties())
            {
                string schemaPropName = value.GetSchemaPropertyName(assetPropInfo);
                if (schemaPropName is null)
                {
                    continue;
                }

                object fieldValue = assetPropInfo.GetValue(value);
                switch (fieldValue)
                {
                case bool boolVal:
                    SetAssetParamValue(textureAsset, schemaPropName, boolVal);
                    break;

                case string stringVal:
                    SetAssetParamValue(textureAsset, schemaPropName, stringVal);
                    break;

                case double doubleVal:
                    SetAssetParamValue(textureAsset, schemaPropName, doubleVal);
                    break;

                case Rhino.Display.ColorRGBA colorVal:
                    SetAssetParamValue(textureAsset, schemaPropName, colorVal);
                    break;
                }
            }
        }
Exemple #11
0
        private void UpdateAssetFromData(DB.Visual.Asset editableAsset, T assetData)
        {
            foreach (var assetPropInfo in _assetData.GetAssetProperties())
            {
                // skip name because it is already set
                if (assetPropInfo.Name == "Name")
                {
                    continue;
                }

                // determine schema prop name associated with with asset property
                string schemaPropName = _assetData.GetSchemaPropertyName(assetPropInfo);
                if (schemaPropName is null)
                {
                    continue;
                }

                bool hasValue = assetData.IsMarked(assetPropInfo.Name);
                if (hasValue)
                {
                    object inputValue = assetPropInfo.GetValue(assetData);

                    try
                    {
                        switch (inputValue)
                        {
                        case bool boolVal:
                            SetAssetParamValue(editableAsset, schemaPropName, boolVal);
                            break;

                        case string stringVal:
                            SetAssetParamValue(editableAsset, schemaPropName, stringVal);
                            break;

                        case double dblVal:
                            SetAssetParamValue(editableAsset, schemaPropName, dblVal);
                            break;

                        case Rhino.Display.ColorRGBA colorVal:
                            SetAssetParamValue(editableAsset, schemaPropName, colorVal);
                            break;

                        case TextureData textureVal:
                            SetAssetParamTexture(editableAsset, schemaPropName, textureVal);
                            break;

                        case AssetPropertyDouble1DMap d1dMapVal:
                            if (d1dMapVal.HasTexture)
                            {
                                SetAssetParamTexture(editableAsset, schemaPropName, d1dMapVal.TextureValue);
                            }
                            else
                            {
                                SetAssetParamValue(editableAsset, schemaPropName, d1dMapVal.Value);
                            }
                            break;

                        case AssetPropertyDouble4DMap d4dMapVal:
                            if (d4dMapVal.HasTexture)
                            {
                                SetAssetParamTexture(editableAsset, schemaPropName, d4dMapVal.TextureValue);
                            }
                            else
                            {
                                SetAssetParamValue(editableAsset, schemaPropName, d4dMapVal.ToColorRGBA());
                            }
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        AddRuntimeMessage(
                            GH_RuntimeMessageLevel.Error,
                            $"Can not set value of {inputValue} on schema property {schemaPropName}"
                            + $" | Revit API Error: {ex.Message}"
                            );
                    }
                }

                var schemaTogglePropName = _assetData.GetSchemaTogglePropertyName(assetPropInfo);
                if (schemaTogglePropName != null)
                {
                    SetAssetParamValue(editableAsset, schemaTogglePropName, hasValue);
                }
            }
        }
Exemple #12
0
        protected void SetOutputsFromAsset(IGH_DataAccess DA, DB.Visual.Asset asset)
        {
            // make sure the schemas match
            if (asset.Name.Replace("Schema", "") != _assetData.Schema)
            {
                AddRuntimeMessage(
                    GH_RuntimeMessageLevel.Warning,
                    $"Incorrect asset schema \"{asset.Name}\""
                    );
                return;
            }

            foreach (var assetPropInfo in _assetData.GetAssetProperties())
            {
                // determine schema prop name associated with with asset property
                string schemaPropName = _assetData.GetSchemaPropertyName(assetPropInfo);
                if (schemaPropName is null)
                {
                    continue;
                }

                // determine which output parameter to set the value on
                var paramInfo = _assetData.GetGHParameterInfo(assetPropInfo);
                if (paramInfo is null)
                {
                    continue;
                }

                // check the toggle if available and output only when toggle
                // is active. otherwise we assume that the property has no value
                bool sendValueToOutput    = true;
                var  schemaTogglePropName = _assetData.GetSchemaTogglePropertyName(assetPropInfo);
                if (schemaTogglePropName != null)
                {
                    // then get the asset property object and check its boolean value
                    // if false, the output will not be set
                    sendValueToOutput =
                        ((bool?)GetAssetParamValue(asset, schemaTogglePropName)) == true;
                }

                if (sendValueToOutput)
                {
                    switch (paramInfo.ExtractMethod)
                    {
                    case ExtractMethod.AssetOnly:
                        // set the value from asset to the output param
                        SetTextureDataFromAssetParam(DA, paramInfo.Name, asset, schemaPropName);
                        break;

                    case ExtractMethod.ValueOnly:
                    // to the same to value first
                    case ExtractMethod.ValueFirst:
                        // set the value from asset to the output param
                        SetDataFromAssetParam(DA, paramInfo.Name, asset, schemaPropName);
                        break;

                    case ExtractMethod.AssetFirst:
                        // first check whether asset param has a nested asset
                        if (AssetParamHasNestedAsset(asset, schemaPropName))
                        {
                            SetTextureDataFromAssetParam(DA, paramInfo.Name, asset, schemaPropName);
                        }
                        else
                        {
                            SetDataFromAssetParam(DA, paramInfo.Name, asset, schemaPropName);
                        }
                        break;
                    }
                }
                else
                {
                    DA.SetData(paramInfo.Name, null);
                }
            }
        }