2017-05-16 4 views
1

Ich habe eine FamilyInstance pFam und eine Autodesk.Revit.DB.View pView. Ich möchte wissen, ob pFam in pView sichtbar ist. Ich habe versucht,Ermitteln ist ein FamilyInstance ist in einer Ansicht

if (pFam.IsHidden(pView) 
    continue; 

Leider verwenden, das nur mir sagt, wenn das Element soll verborgen werden, was nicht der Fall ist. Aber, das Element ist nicht in jedem View sichtbar, und unter diesem Umstand will ich (oder will lieber nicht) etwas passieren. Es gibt keine Visible oder IsVisible Eigenschaften für FamilyInstance s ... Kennt jemand einen Weg, um diese Situationen zu behandeln?

Danke!

Antwort

1

Ich habe herausgefunden, dass die Verwendung eines für diese Ansicht spezifischen FilteredElementCollector der zuverlässigste Weg ist, um zu erkennen, ob ein Element in einer Ansicht sichtbar ist. Es gibt so viele verschiedene Arten, die Sichtbarkeit eines Elements zu kontrollieren, dass es unpraktisch wäre, dies auf andere Weise zu bestimmen.

Unten ist die Dienstprogrammfunktion, die ich verwende, um dies zu erreichen. Beachten Sie, dass dies für jedes Element und nicht nur für Familieninstanzen funktioniert.

Der Kategoriefilter wird verwendet, um Elemente, die nicht der gewünschten Kategorie angehören, zu entfernen, bevor der langsamere Parameterfilter verwendet wird, um das gewünschte Element zu finden. Es ist wahrscheinlich möglich, dies mit cleverer Verwendung von Filtern weiter zu beschleunigen, aber ich habe festgestellt, dass es für mich in der Praxis schnell genug ist.

Wenn Sie ReSharper nicht haben, löschen Sie die [NotNull] Anmerkungen, die Sie sehen.

+0

Vielen Dank dafür, Colin! Ich habe es zu [The Building Coder Samples] hinzugefügt (https://github.com/jeremytammik/the_building_coder_samples) [CmdViewsShowingElements] (https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/CmdViewsShowingElements.cs), beschrieben in der Diskussion von [Ermitteln von Ansichten, die ein Element anzeigen] (http://thebuildingcoder.typepad.com/blog/2016/12/determining-views-showing-an-element.html). –

+0

Ich habe auch diese Diskussion und einige Hinweise zu früheren verwandten Themen auf dem Building Coder zusammengefasst: [Abrufen von Elementen in Sicht sichtbar] (http://thebuildingcoder.typepad.com/blog/2017/05/retrieving-elements-visible-in- view.html). Danke nochmal! –

Verwandte Themen