2011-08-02 3 views

답변

0

작업중인 프로젝트에 패밀리 문서를 이미로드 했습니까? 그렇지 않다면 Document.LoadFamilySymbol 또는 Document.LoadFamily을 사용하여 패밀리를 프로젝트에로드 할 수 있습니다. 그렇지 않으면, 당신은 아래의 코드와 유사한 사용할 수 있습니다 찾고있는 가족의 기호를 확인하는 방법은 다음과 같습니다

UIApplication application = commandData.Application; 
UIDocument uiDocument = application.ActiveUIDocument; 
Document document = application.ActiveUIDocument.Document; 

FilteredElementCollector familyCollector = new FilteredElementCollector(document); 
familyCollector.OfClass(typeof(FamilySymbol)); 

FamilySymbol familySymbolToFind = null; 

foreach (FamilySymbol familySymbol in familyCollector) 
{ 
    //To search by FamilySymbol name 
    if (familySymbol.Name == "[Name of FamilySymbol to find]") 
    familySymbolToFind = familySymbol; 
    //To search by Family name 
    else if (familySymbol.Family.Name = "[Name of Family to find]") 
    familySymbolToFind = familySymbol; 
} 

uiDocument.PromptForFamilyInstancePlacement(familySymbolToFind); 
0

이 코드를 시도를 (을 System.Linq 필요) 및 .NET4

FamilySymbol symbol = GetElements<FamilySymbol>(commandData.Application.ActiveUIDocument.Document) 
          .Where(item => item.Name == "NameYouWant") 
          .First(); 
commandData.Application.ActiveUIDocument.PromptForFamilyInstancePlacement(symbol); 


    /// <summary> 
    /// Get the collection of elements of the specified type. 
    /// <para>The specified type must derive from Element, or you can use Element but you get everything :)</para> 
    /// </summary> 
    /// <typeparam name="T">The type of element to get</typeparam> 
    /// <returns>The list of elements of the specified type</returns> 
    public IEnumerable<T> GetElements<T>(Document document) where T : Element 
    { 
     FilteredElementCollector collector = new FilteredElementCollector(document); 
     collector.OfClass(typeof(T)); 
     return collector.Cast<T>(); 
    } 
-1

그들은 (두 번째 해결 방법은 else if line이 = 대신 ==이 필요합니다.)

두 번째 해결 방법에서는 필자가 올바른 가족 이름과 가족을 사용했는지 확인하기 위해이 방법을 사용했습니다. 기호 이름 :

foreach (FamilySymbol familySymbol in familyCollector) 
{ 
    if (familySymbol.Name == "Put your Family Name here" && familySymbol.Family.Name == "Put your Family Symbol Name here") 
         familySymbolToFind = familySymbol; 
}