2014-06-23 1 views
1

다음 설정이 있습니다. 파일 A는 벽, 객실, 가구 등이있는 내 건축 모델입니다. 파일 B는 번개 도구가있는 전자 기계 파일이며, 소켓, ... 파일 A는 파일 B에 링크되어 있으므로 파일 B는 링크 된 파일입니다.Autodesk Revit Architecture 2014 .NET API 링크가있는 인스턴스에 대한 C 공간 찾기

현재 주어진 방 안에있는 요소의 목록을 생성하는 Revit에서 추가 기능을 만들고 있습니다. 이제 HOST 파일 (파일 A)에있는 요소에 대해이 목록을 생성하는 것이 그리 어렵지 않고 모든 요소를 ​​반복하고 Instance인지 확인한 다음 .Room 속성을 Instance으로 가져옵니다.

그러나 연결된 문서 (파일 B)의 인스턴스의 경우 .Room 속성은 항상 null을 반환합니다.

누군가가 이미이 문제에 대한 해결책을 찾지 못해서 바랬습니다. 지금 볼 수있는 유일한 해결책은 링크 된 문서를 BIND하여 그룹으로 변환하는 것입니다. 그러나, 1 : 나는 API를 통한 링크를 BIND 할 가능성을 보지 못했습니다. 2 : 그룹으로 변환하면 링크 된 문서의 모든 장점이 사라집니다.

답변

1

내가 한 것은 Document.GetRoomAtPoint (XYZ 지점) 메서드를 사용하고 호스트 파일에서 요소의 원점을 전달하는 것입니다.

당신은 당신의 호스트와 링크 된 문서 사이의 좌표를 변환하는 몇 가지 논리가 필요합니다 - 자세한 내용은 제레미 Tammik에 의해이 게시물을 참조 : http://thebuildingcoder.typepad.com/blog/2013/11/determining-host-document-location-of-a-linked-element.html

당신은 Application.Documents 속성을 통해 링크 된 문서에 액세스 할 수 있습니다. 로드 된. 서가 호스트 모델에 링크 된. 서를 식별하기 위해 일부 논리가 필요합니다. TransmissionData.GetAllExternalFileReferenceIds() 및 TransmissionData.transmissionData.GetLastSavedReferenceData (elId)를 사용하여 ExternalFileReference 객체를 검색하고 현재로드 된 모든 문서와 비교할 수 있습니다.

+0

기하학적 검사를하는 것은 내가 염두에 두었던 해결책 중 하나입니다. 너의 것은 매우 효과적이지만! 감사. 그러나 최종 답을 표시하지는 않습니다. 왜냐하면 인스턴스의 .Room 속성이 올바르게 채워지지 않기 때문에입니다. – KenGey

+1

인스턴스의 .Room 속성을 채우도록 관리하는 유일한 방법은 모두를 복사하는 것입니다. 링크 된 파일의 객실을 호스트 파일로 가져옵니다. 대안 (및 MEP의 더 정확한 방법)은 모델에 공백을 만드는 것입니다. Autodesk의 Space Naming Utility를 사용하여 링크 된 파일의 룸 이름을 새로 생성 된 공간으로 복사 할 수 있습니다. –

관련 문제