Eyeshot 2020 Beta

devDept Software is proud to announce the Eyeshot 2020 Beta program.

New Features

  • Added ReadGCode class and a new entity called Toolpath
  • Added the ability to draw Text entities always front-facing even when defined inside a Block
  • Added the GetLength(), GetPerimeter(), GetArea() and GetMass() methods for Entity/Face/Edge/Curve with proper linear and mass unit support.
  • Added ReadJT class to read tessellation from Siemens JT files (up to version 9.5)
  • Added native multitouch implementation in WPF control (Article and Video)
  • Added RootBlock paradigm. Eyeshot 2020 includes a default Block that represents the scene root. This means that every single piece of geometry is always defined inside a Block definition. The Model.Entities collection was moved at block level. In this version, you are always working inside the Block.Entities collection, most of the times, of a block called “RootBlock”.
  • Added seamless navigation through assemblies, with endless edit/open command combinations. (Video)
  • Added progressive Turbo representation during assembly navigation (Article)
  • Fixed Zoom/Pan/Rotate/ZoomFit lag on large assemblies when Turbo is enabled, can be controlled using Environment.Turbo.DetailedDrawingDelay property (Video)
  • Convex hull based zoom fit: slower first, lightning fast all the others (Video). Includes dedicated settings for fitting huge 2D drawings.
  • Added the ability to display/highlight collision detection intersection volumes (see CollisionDetection code sample)
  • Added support for displaying angles in the degrees/minutes/seconds format for angular dimensions
  • Added support for dimension text with a different color
  • Added the ability to load thumbnail image from DWG files
  • Added support for multiple origin symbols per Viewport (see Part1 code sample)
  • Fixed geometry illumination on BlockReference with mirror transformation
  • Added support for clipping boundary in the Picture entity
  • AssemblyDemo code sample search box (Video)
  • Added FemMesh slice feature (Screenshot)
  • Added the ability to add Radial/Diametric dimensions in Drawings environment (Video)
  • Improved texture mapping for Brep entity (Screenshot)
  • Improved small object culling and frustum culling during dynamic movements (Video)
  • Added the ability to write/read Eyeshot entities by reference
  • Added methods to customize the PDF document output (Sample document, download the file to view the 3d content)
  • Added support for the reading of the Thickness of AutoCAD curves
  • Improved BRep booleans tangency cases (Article)

Proprietary file format data integrity is not guaranteed during Beta.

New Code Samples

  • WebForms

Breaking Changes

With respect to RootBlock change:

  • Block.Entities collection is now of EntityList type
  • Environment.Entities is now a shortcut that refers the Entities collection of the Environment.CurrentBlock (normally the RootBlock if you don't work with the assembly navigation features)
  • BlockKeyedCollection, if assigned to an Environment, must have a root block defined (BlockKeyedCollection.SetRootBlock()).
  • The scene bounding box is now updated by the Environment.UpdateBoundingBox(),  Block.Entities.UpdateBoundingBox() works only at block level.
  • Block.RegenAllCurved has been removed, now you need to use Block.Entities.RegenAllCurved
  • Environment.Units property was moved to Block class
  • GetVisualRefinementDeviation() method was moved from EntityList class to Environment one
  • Property EntityList.IsOpenCurrentBlockReference was removed
  • Camera.RemoveSceneTransformation() method changed signature and behavior
  • Assembly navigation is now controlled by Environment class, moved methods and properties from EntityList to Environment are: SetCurrent(), CurrentBlockReference, CurrentTransformation, OpenCurrentBlockReference(), CloseCurrentBlockReference(), SetCurrentStack(), GetStackTransformation(), Parents, SetParentAsCurrent(), SetSelectionAsCurrent()
  • OpenCurrentBlockReference method was renamed as OpenCurrentBlock
  • CloseCurrentBlockReference method was renamed as CloseOpenBlock
  • Changed Environment.CopyTo() signature, replaced skipEntities parameter with replaceRootBlock parameter.
  • One level less after STEP reading for files with a RootBlock

Other general breaking changes:

  • Vector3D class now inherits from Vector2D
  • Removed the BuildPage virtual method in the WritePDF class
  • WPF Native Renderer now uses native touch events
  • Removed the includeWires parameter in ReadSTEP class constructor
  • Changed the Dimension.TextOverride behavior
  • Changed signature for Entity.Dump() method
  • Removed Environment.CreateReferenceImage() and CompareWithReferenceImage() methods
  • Model.ActiveViewport is now returning Model.Viewports[ActiveViewportIndex]. Use it instead of wrapper properties like Model.Background, Model.Grid, Model.ViewCubeIcon, etc. or, for WPF, Model.GetBackground(), Model.GetGrid(), Model.GetViewCubeIcon(), etc.
  • CollisionDetection2D.Result is now returning a CollisionResult struct instead of Tuple<CollisionDetection.CollisionResultItem, CollisionDetection.CollisionResultItem>
  • Brep.IsPointInside is now returning a devdept.Geometry.pointStatusType instead of bool
  • Viewport.OriginSymbol element in WPF xaml was renamed as Viewport.OriginSymbols
  • Added object graph reference support for the entities in the proprietary file format (when you store the reference to an entity - e.g. in entity.EntityData property - now the reference to that entity is preserved when the file is read back)
  • Environment.HideSmall property was removed. The only control on small object culling is now the Environment.SmallSize.
  • Brep texture mapping is now affected by Material.TextureLength value
  • Entity.XData has been replaced with Entity.AutodeskProperties.XData

Project Converter tool currently does only essential renaming.


Only the API Reference of the Eyeshot 2020 documentation is periodically updated.


The redesigned licensing module now does a number of periodical validations, like the developer domain/username and IP. It also checks if the developer is actually involved in Eyeshot development or not to determine if she/he needs a license. With Eyeshot 2020, a single developer can now install and activate three different machines (without any desktop/laptop distinction). The LaptopDetector tool has been retired.

Version Numbering

From Eyeshot 2020 we switch to the Major.Stable.Build numbering scheme.



Date Votes
  • Dear Alberto and DevDept Team,

    Thanks for the improvements! Can't wait to try the new features!

    Ceyhun Sözbir

  • Will this version fully support .Net Core?


  • No, sorry. More details here.

  • Hi Alberto,

    in the list of examples, you wrote that there will be examples for ASP.NET MVC and WebForms, so there will be a web version of Eyeshot?

    Thanks for your reply.

  • The answer is no, sorry.

  • Hi Alberto,

    I remember an older Roadmap (Eyeshot 13 Planned for Q4 2019) with this entry:

    "Object snapping || Meaningful point snapping in Drawings views for dimensioning". 


    May I ask you some reasons for removing it out of current roadmap?

    Thank you 

  • It is still on the Roadmap but not completed, we gave priority to other new features. Please open a support ticket with the specific problem you need to address and we'll see if we can provide a workaround.

  • In v12, since Entities was a List<Entity>, we had access to linq style methods. ents.ForEach(x => x.DoSomethingCool()) & ents.RemovAll(x => x.AmIToBeRemoved())

    These are really convenient. Any plans to support these in EntityList in v2020?

  • Hi James,

    We can add them quickly starting from the List<T> methods: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1?view=netframework-4.8#methods

    Please tell us what of them are useful for you.

  • Okay, that sounds great.

    It looks like Select() & Where() are already implemented which is great.

    Of the methods not yet implemented, ForEach() & RemoveAll() would be most useful to me.

    Less useful, but still nice would be some of the searching methods like FindAll(), Find(), Exists()... etc.


Please sign in to leave a comment.

Didn't find what you were looking for?

New post