Your comments
Thank you for your answer. This was useful for me.
I have no time for trying to that because my project presentation will be just in a few days. Anyway I must do that with server based database. I can't use local database like SQLite.
I am also using MSSQL Server 2012 but it is not mine. I am use a free hosting service called somee.com. It gives 15MB free MSSQL 2012 and when I load data about size of 5-9MB it loads very slow like around 60 seconds.
Is this because of using free hosting or it is normal for that given size of data.
Update#1: I store STL files in database. Firstly I convert STL file to binary, then read all bytes. To store database I partitioning it to 400KB for each part. Then I load all of part to database sequentially. Therefore its much faster to load part by part contrary loading all files in one step.
For any answer which present improved solution I will accept it. Because I know that this method is very simple and not enough for performance while getting all parts consume a lot of time(i.e for 3MB file it needs 3-5 minutes approximately).
For who's wondering, I found that I made a mistake. I am load STL files using modelimporter class. And it returns Model3DGroups, not like Model3D. So actually I store in dictionary Model3DGroup. Because of that it gives error when comparing Model3D and Model3DGroup. So I fixed the error storing to dictionary Model3DGroup.Children[0].
If you still looking for answer I have found a hit testing method a couple of days ago and it works to me perfectly.
Like you do, I am select one model from among of many model and color it differently from others.
The solution is here;
Customer support service by UserEcho
Check this site. I use that method. http://csharphelper.com/blog/2014/10/perform-hit-testing-in-a-3d-program-that-uses-wpf-xaml-and-c/