Support
Eyeshot Frequently Asked Questions
How do I see if Eyeshot ViewportLayout control is active?
When the Eyeshot ViewportLayout control is active the Coordinate System Icon shows the axis labels XYZ, otherwise it doesn't.
Why selection does not work properly over a Remote Desktop Connection?
I most of the cases RDC reduces the color depth to 16 bits while Eyeshot selection needs at least 24bit. Please try changing your RDC Display settings to: True Color (24bit). Only visibleByPick and visibleByBox selection modes are affected by this limitation.
How do I change the line/arc/ellipse on screen thickness?
Changing the Entity.LineWeigth property value. This value also affects the entity width during printing. Values less than one are correctly rendered only on paper.
Is it possible to mark some entities as UNselectable?
Yes, setting the Entity.Selectable property to false.
How do I make some entities temporary not visible?
Yes, setting the Entity.Visible property to false.
How do I know what OpenGL version I am using?
Calling the Viewport.OpenglVersion and Viewport.OpenglRenderer properties.
How can I improve the frame rate when drawing heavy semi-transparent objects?
Try setting the Viewport.Entities.FrontFacingOnly = true. This prevents back-facing semi-transparent triangles to be drawn, increasing considerably the frame rate.
When should I use prefer Entity.TransformBy() method to Translate() / Rotate() / Scale()?
They do exactly the same thing: transform your entity vertices. By the way there is one important difference, if you need to apply more than one operation Entity.TransformBy() will be faster because it modifies the entity vertices only once.
I can move, rotate and scale meshes as long as they are not yet added to the Viewport. After they are added, no action is taken. When I manipulate a Quad, it works fine. What can I do?
Complex objects need to be regenerated after transformations, try adding a call to ViewportLayout.Entities.Regen().
How do I prevent too many labels to be drawn on screen?
Label classes expose the OnScreenPosition property that allow you to know their position on the screen 2D surface. Using this information you can subdivide the screen surface in a grid and prevent multiple labels to be drawn in the same grid cell. The right place to do all of this is the ViewportLayout.Viewport[i].DrawOvelay() method that needs to be overridden. Just before calling the base class implementation you will set the specific label Visible property to true/false.
How can I speed up texture loading?
Preparing all the texture images with dimensions power of two, like 128x128, 256x256, 512x512, ...
I am trying to add a multi-million vertices Mesh to the Eyeshot Viewport but I get an OpenGL error related to running out of memory. What can I do?
Switch to a 64-bit Operating System.
My texture looks poorly when is applied on the model, why?
Try setting the Material.MinifyingFunction = Linear.
How do I change the background color of my TextOnly labels?
Using the FillColor property.
How do I draw some entities on a plane different from XY?
See the Transformations code sample.
How do I show current FPS (Frame Per Second) rate?
Setting the ViewportLayout.ShowFps property to true.
Why I get a System.StackOverflowException when I change the color of my entitiy to semi-transparent?
Semi-transparent entities require a pre-processing step that doesn't check for invalid triangles. It is very likely that your geometry contains one or more invalid triangles. One solution to this problem can be to check the area of each entity's triangle using the devDept.Eyeshot.Entities.Triangle.Area() method and remove the invalid ones before adding the entity to the viewport master entity collection.
Why the shadow is not visible on some machines?
The new Eyeshot shadow is implemented using OpenGL Shading Language. Generally the minimum OpenGL version supporting it is version 2.0.
How do I know if Eyeshot is using hardware acceleration on a specific machine?
Check the return value of the ViewportLayout.IsHardwareAccelerated property.
Why shouldn't I use the Viewport.SaveFile()/OpenFile() methods to store my models?
These commands can be very attractive to save and load models in you program but have a serious pitfall: they are based on standard .NET serialization. This means that any change on the Eyeshot binaries (dll versions, dll names, type names, etc.) will invalidate all your existing files. We strongly recommend to implement your own file format (simply writing entities properties and recreating entities during file loading) if you need continuity between different Eyeshot DLL versions. Another option can be to use one of the standard format supported (DWG/DXF/IGES) where applicable.
Why I cannot hide a semi-transparent entity setting the Visible property to false?
Transparency involves the need of a geometry pre-processing every time the model changes. Considering that this is true also for shadow and bounding box we recommend to call the ViewportLayout.Entities.UpdateBoundingBox() method every time you need to update the visibility status of a semi-transparent entity.
When should I call Regen() after transforming my entity?
ViewportLayout.Entities.Regen() is necessary only if the entity is already in the master entity collection (ViewportLayout.Entities). If not, it will be called automatically by Eyeshot.
Is it possible to use Eyeshot in a WPF form?
The short answer is yes using the WindowsFormHost control. The long answer is that after many tests we concluded that there is no reason for doing it. If you really want to use WPF controls is more effective to create a Windows Forms application and insert a WPF region that contains WPF controls. We strongly recommend to read the following article on the subject: WPF vs Windows Forms.
Why Eyeshot is so slow on some machines?
3D graphics comes not for free and some machines with legacy or very cheap graphics adapters run OpenGL in software emulation.
How do I add entities to the ViewportLayout control from a different thread?
Adding entities from a different thread is not allowed. You can however fill a separate List
If the Eyeshot ViewportLayout control is located on a different tab I cannot interact with it until is displayed, why?
The Eyeshot ViewportLayout control is fully initialized when the Control.OnHandleCreated() is called, therefore when it has a valid window handle.
How do I disable the view rotation in one of the Eyeshot viewports?
To disable all interactive rotations you need to set the ViewportLayout.Viewport[i].Rotate.Enabled property to false.
If I call myEntity.ApplyMaterial() using a semi-transparent material, my entity isn't displayed as semi-transparent, why?
The Eyeshot semi-transparent object pre-processing kernel accepts only entities with monolithic color or material, like the ones you specify with Entity.ColorMethod as byEntity, byLayer or byParent.
Is there a way to programmatically Pan?
Yes, using the ViewportLayout.Viewports[i].PanCamera() method.
Which is the best way to turn the Viewport into a XY plane 2D Viewport?
Just set the ViewportLayout.Viewports[i].Camera.ProjectionMode = Orthographic and ViewportLayout.Viewports[i].SetView(viewType.Top)
When I set Visible to false to some of my entities their Planar shadow is still visible, why?
The Planar shadow is rebuilt every time the model changes in terms of adding or removing some entities. To update it manually just call the ViewportLayout.Entities.UpdateBoundingBox() method.
Why I cannot load the designer when I use the x64 version of the Eyeshot DLL?
Because the Visual Studio IDE only runs as a 32-bit process and therefore can load x86 and AnyCPU (as x86) assemblies only.
