FamilyManagerNewType Method |
Add a new family type with a given name and makes it be the current type.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 27.0.4.0 (27.0.4.0)
Syntaxpublic FamilyType NewType(
string typeName
)
Public Function NewType (
typeName As String
) As FamilyType
public:
FamilyType^ NewType(
String^ typeName
)
member NewType :
typeName : string -> FamilyType Parameters
- typeName String
- The name of new family type.
Return Value
FamilyType
Exceptions
Examplepublic void EditFamilyTypes(Document document, FamilyInstance familyInstance)
{
if ((null == document) || (null == familyInstance.Symbol))
{
return;
}
Family family = familyInstance.Symbol.Family;
if (null == family)
{
return;
}
Document familyDoc = document.EditFamily(family);
if (null == familyDoc)
{
return;
}
FamilyManager familyManager = familyDoc.FamilyManager;
if (null == familyManager)
{
return;
}
using (Transaction newFamilyTypeTransaction = new Transaction(familyDoc, "Add Type to Family"))
{
int changesMade = 0;
newFamilyTypeTransaction.Start();
FamilyType newFamilyType = familyManager.NewType("2X2");
if (newFamilyType != null)
{
FamilyParameter familyParam = familyManager.get_Parameter("b");
if (null != familyParam)
{
familyManager.Set(familyParam, 2.0);
changesMade += 1;
}
familyParam = familyManager.get_Parameter("h");
if (null != familyParam)
{
familyManager.Set(familyParam, 2.0);
changesMade += 1;
}
}
if (2 == changesMade)
{
newFamilyTypeTransaction.Commit();
}
else
{
newFamilyTypeTransaction.RollBack();
}
if (newFamilyTypeTransaction.GetStatus() != TransactionStatus.Committed)
{
return;
}
}
LoadOpts loadOptions = new LoadOpts();
family = familyDoc.LoadFamily(document, loadOptions);
if (null != family)
{
ISet<ElementId> familySymbolIds = family.GetFamilySymbolIds();
foreach (ElementId id in familySymbolIds)
{
FamilySymbol familySymbol = family.Document.GetElement(id) as FamilySymbol;
if ((null != familySymbol) && familySymbol.Name == "2X2")
{
using (Transaction changeSymbol = new Transaction(document, "Change Symbol Assignment"))
{
changeSymbol.Start();
familyInstance.Symbol = familySymbol;
changeSymbol.Commit();
}
break;
}
}
}
}
class LoadOpts : IFamilyLoadOptions
{
public bool OnFamilyFound(bool familyInUse, out bool overwriteParameterValues)
{
overwriteParameterValues = true;
return true;
}
public bool OnSharedFamilyFound(Family sharedFamily, bool familyInUse, out FamilySource source, out bool overwriteParameterValues)
{
source = FamilySource.Family;
overwriteParameterValues = true;
return true;
}
}
See Also