Filtered element collectors are the most linear method. There is a collector argument for visible in view which can be passed to the first argument to look at elements in view versus the entire document. Assuming you don’t use 2.5d families anything in a 3d view should contain geometry if you hide annotation categories in that view.
Reference thread: Collect Elements in View using Python