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: 25.0.0.0 (25.0.0.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;
}
}
Public Sub EditFamilyTypes(document As Document, familyInstance As FamilyInstance)
If (document Is Nothing) OrElse (familyInstance.Symbol Is Nothing) Then
Return
End If
Dim family As Family = familyInstance.Symbol.Family
If family Is Nothing Then
Return
End If
Dim familyDoc As Document = document.EditFamily(family)
If familyDoc Is Nothing Then
Return
End If
Dim familyManager As FamilyManager = familyDoc.FamilyManager
If familyManager Is Nothing Then
Return
End If
Using newFamilyTypeTransaction As New Transaction(familyDoc, "Add Type to Family")
Dim changesMade As Integer = 0
newFamilyTypeTransaction.Start()
Dim newFamilyType As FamilyType = familyManager.NewType("2X2")
If newFamilyType IsNot Nothing Then
Dim familyParam As FamilyParameter = familyManager.Parameter("b")
If familyParam IsNot Nothing Then
familyManager.[Set](familyParam, 2.0)
changesMade += 1
End If
familyParam = familyManager.Parameter("h")
If familyParam IsNot Nothing Then
familyManager.[Set](familyParam, 2.0)
changesMade += 1
End If
End If
If 2 = changesMade Then
newFamilyTypeTransaction.Commit()
Else
newFamilyTypeTransaction.RollBack()
End If
If newFamilyTypeTransaction.GetStatus() <> TransactionStatus.Committed Then
Return
End If
End Using
Dim loadOptions As New LoadOpts()
family = familyDoc.LoadFamily(document, loadOptions)
If family IsNot Nothing Then
Dim familySymbolIds As ISet(Of ElementId) = family.GetFamilySymbolIds()
For Each id As ElementId In familySymbolIds
Dim familySymbol As FamilySymbol = TryCast(family.Document.GetElement(id), FamilySymbol)
If (familySymbol IsNot Nothing) AndAlso familySymbol.Name = "2X2" Then
Using changeSymbol As New Transaction(document, "Change Symbol Assignment")
changeSymbol.Start()
familyInstance.Symbol = familySymbol
changeSymbol.Commit()
End Using
Exit For
End If
Next
End If
End Sub
Private Class LoadOpts
Implements IFamilyLoadOptions
Public Function OnFamilyFound(familyInUse As Boolean, ByRef overwriteParameterValues As Boolean) As Boolean Implements IFamilyLoadOptions.OnFamilyFound
overwriteParameterValues = True
Return True
End Function
Public Function OnSharedFamilyFound(sharedFamily As Family, familyInUse As Boolean, ByRef source As FamilySource, ByRef overwriteParameterValues As Boolean) As Boolean Implements IFamilyLoadOptions.OnSharedFamilyFound
source = FamilySource.Family
overwriteParameterValues = True
Return True
End Function
End Class
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also