public static void SetDynamicParameterValue(this BlockReference block, string parameterName, object parameterValue) { if (block.IsDynamicBlock) { DynamicBlockReferencePropertyCollection pc = block.DynamicBlockReferencePropertyCollection; DynamicBlockReferenceProperty prop = pc .Cast <DynamicBlockReferenceProperty>() .FirstOrDefault(p => p.PropertyName.Equals(parameterName, StringComparison.InvariantCulture)); if (prop != null) { if (prop.PropertyTypeCode == (short)DynamicPropertyTypes.Distance) { prop.Value = parameterValue; } else if (prop.PropertyTypeCode == (short)DynamicPropertyTypes.Visibility) { object val = prop.GetAllowedValues() .First(n => n.ToString() == parameterValue.ToString()); prop.Value = val; } } else { throw new ArgumentException("No parameter " + parameterName); } } }