🌶️ Breaking Changes in Eyeshot version 2020

This page lists the important behavior and API changes that were introduced in this version. If you already have projects using devDept products, you will need to peruse this list in order to understand the changes you might need to make to your source code to support this new release.


What's New

To learn about what's new in this version, please refer to the following page: What's New

  • RootBlock paradigm
  • Seamless navigation through assembly levels
  • Progressive Turbo representation during assembly navigation
  • Improved Zoom/Pan/Rotate switch on large assemblies (when Turbo is active)
  • ReadGCode class and a new entity called Toolpath
  • GetLength(), GetPerimeter(), GetArea() and GetMass() methods for Entity/Face/Edge/Curve with proper linear and mass unit support.
  • ReadJT class to read tessellation from Siemens JT files
  • Native multitouch implementation in WPF control
  • Faster, convex hull based, zoom fit
  • Collision detection intersection volumes
  • Degrees/minutes/seconds format for angular dimensions
  • Load thumbnail image from DWG files
  • Multiple origin symbols per Viewport
  • Clipping boundary in Picture entity
  • Improved small object culling and frustum culling during dynamic movements
  • Circle/arc dimensioning in Drawings environment
  • Accurate BRep texture mapping
  • FemMesh slicing
  • Entity write/read by reference in proprietary file format


Breaking Changes

BC-100 Removed CreateReferenceImage() and CompareWithReferenceImage() methods Removed CreateReferenceImage() and CompareWithReferenceImage() methods both for Environment and Viewport classes.
BC-101 Changed signature for Entity.Dump() method Now the Dump() method allows to specify a unit of measure for length and mass as input, to be able to calculate the quantities of Areas, Volume and Mass according to a specific system of measurement.
BC-102 RootBlock paradigm (Article)
  • The block keyed collection, if linked to an environment, must have a root block: BlockKeyedCollection.SetRootBlock() 
  • Block.Entities collection is now an EntityList and it is read-only
  • Now the scene bounding box is updated by the Environment.UpdateBoundingBox(), Entities.UpdateBoundingBox() updates only the relevant block.
  • GetVisualRefinementDeviation() was moved from EntityList to Environment
  • ProcessSemiTransparent() was moved from EntityList to Environment
  • Assembly navigation is now controlled by the Environment class, the list methods and properties moved from EntityList class to Environment is: SetCurrent(), CurrentBlockReference, CurrentTransformation, OpenCurrentBlockReference(), CloseCurrentBlockReference(), SetCurrentStack(), GetStackTransformation(), Parents, SetParentAsCurrent(), SetSelectionAsCurrent()
  • Renamed OpenCurrentBlockReference() method to OpenCurrentBlock()
  • Renamed CloseCurrentBlockReference() method to CloseOpenBlock()
  • Groups are now controlled by the Block. Property Environment.Groups was removed, GroupSelection() method was moved from Environment class to Block one. Ungroup() method was moved from Environment class to Block one
  • Removed property EntityList.IsOpenCurrentBlockReference
  • Changed signature and behaviour of method Camera.RemoveSceneTransformation()
  • Changed Environment.CopyTo() signature, replaced skipEntities parameter with replaceRootBlock parameter.
  • After reading STEP files with a root block defined, now you get one less assembly level.
  • WriteParams constructor with the collections. Now if the entities collection is null or empty, the entities of the root block, if it exists, will be exported.
  • Removed property Environment.Units
  • The default unit of the block is now Meter
  • Block.RegenAllCurved() method has been removed, you now need to use Block.Entities.RegenAllCurved() one.
BC-103 CollisionDetection2D.Result Changed CollisionDetection2D.Result from List<Tuple<CollisionTupleItem, CollisionTupleItem>> to List<CollisionResult> Every access to CollisionDetection2D.Result[i].Item1 have to be replaced with CollisionDetection2D.Result[i].CollidedEntities.Item1
BC-104 Changed the Dimension.TextOverride behavior Now, when a string without the characters "<>" is set as TextOverride of a Dimension, the prefix, the suffix, and the tolerances are no longer displayed. Only the TextOverride string is displayed.
BC-105 Removed the includeWires parameter in ReadSTEP class constructor Now we always read STEP curves, they are also properly loaded in the relevant block.
BC-106 WPF Native Renderer now uses native touch events In WPF Eyeshot control, when the renderer is set to Native or NativeExperimental, the default handler for touch gesture is now the native one.
If you want to continue to use the WM_TOUCH messages as in the previous release you can just set model1.MultiTouch.UseWindowsMessages = true in the MainWindow constructor.

If you're using the ImmediateMode no change is required.

BC-107 Removed the BuildPage() virtual method in the WritePDF class To customize the PDF document you now must override the BuildDocument() method, and there is no need to add references to the OpenDesign DLLs.
BC-108 Removed zero-length segments from MarchingSquares results An additional cleanup step was added
BC-109 Model.ActiveViewport is now the shortcut to get UI Elements properties of the active viewport. Removed Model.Background property and other ones about UI Elements of the active viewport (e.g. Model.ToolBar/GetToolBar(), Model.ViewCubeIcon/GetViewCubeIcon, etc.).
Renamed ActiveViewport property to ActiveViewportIndex.
Added Model.ActiveViewport property to quickly get the active viewport.
The following wrappers remain available to access to the active viewport properties/methods:
  • Rotate
  • Zoom
  • Pan
  • DisplayMode
  • InitialView
  • Camera
  • ShowVertices
  • ShowVertexIndices
  • ShowCurveDirection
  • VertexSize
  • AutoHideLabels
  • Labels
  • ShowLabels
  • RenderToBitmap()
  • SaveView()
  • RestoreView()
  • SetView()
  • SaveView()
  • PreviousView()
  • NextView()
BC-110 Entity XData The entity XData dictionary of an entity is now stored inside the new AutodeskProperties property of the Entity class. It gathers some miscellaneous properties of the AutoCAD entities. From now on, to get/set the XData is required to proceed as follows: myEntity.AutodeskProperties.Xdata = xData;
BC-111 Added support for BlockReference with Mirror transformation When a BlockReference includes a Mirror transformation we now flip geometry normals automatically.
BC-112 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.
BC-113 Removed Environment.HideSmall property Now we never hide in static drawing and always hide in the dynamic drawing. Environment.SmallSize property was moved to Viewport class and was changed in get only. A new property called Viewport.SmallSizeRadio, was added to control small size value estimation, based on the smallest Viewport dimension. The default value is 0.01 (1% of the smallest Viewport dimension) and can be disabled using zero.
BC-114 TessellationMesh class retired No longer necessary, texture offset and scaling were moved at Brep.Face level.
BC-115 Redesigned Brep texture mapping Texture mapping is now based on Material.TextureLength, Material.LinearUnits and Block.LinearUnits of the enclosing Block class.
BC-116 Brep.IsPointInside() return type Now it returns a devdept.Geometry.pointStatusType instead of bool value.
It identifies also when a point is onto the Brep faces.
BC-117 Changed Vector2D and Vector3D inheritance Vector2D no longer derives from Point2D. Vector3D no longer derives from Point3D, it derives from Vector2D.
BC-118 Animation (Article) Because of new optimizations on the scene graph, the MoveTo method is called only while the animation is running, when it's stopped all the entities are drawn in their real position. To continue drawing entities with the custom transformation you can set Model.AnimationStep to zero instead of stopping the animation. The animation code samples were updated with this trick.
BC-119 Moved Model.LastFrameDrawingDelay to TurboSetting and renamed into DetailedDrawingDelay Moded Model.LastFrameDrawingDelay to TurboSetting and split the behavior in order to set this delay to mouseWheelTimer.Interval only during Turbo.Enabled = true.
Added internal event DelayChanged to register the environment to the property changes and update the Timer.Interval if already active.
When Turbo.Enable = true and DetailedDrawingDelay = 0 the Timer is disabled for ZPR.
BC-120 Environment.PrintResolution property removed The PrintResolution property has been removed.

Removed TessellationMesh class

It was used inside the Brep.Face.Tessellation array, now we use standard mesh. The TessellationMesh.OffsetU, ScaleU, OffsetV and OffsetV properties were moved to Brep.Face level.
BC-123 Removed Brep.RecycleTessellation property Proprietary file format is increasing in complexity, we discourage this practice.
BC-125 Changed vertices array size for Dimensions entities Starting from 2020.2, the texts that have the plane coincident with the screen plane are written as real texts in vector printing. To allow this, each part of the dimension's text has its own vertices. So each Dimension can have multiple of 4 vertices for texts, depending on prefix, suffix, tolerance.
BC-126 Changed return value for UtilityEx.GetCirclesTangentToTwoCircles() UtilityEx.GetCirclesTangentToTwoCircles() method returns an array instead of a list of circles.
BC-129 VectorView.HiddenSegments property now affects only the visibility status of the hidden segments When you rebuild a View, now the hidden segments are always ready and you can quickly switch on/off them by changing the VectorView.HiddenSegments property. If you had stored a View in an Eyeshot file with VectorView.HiddenSegments=false and now you want to see the hidden segments too, you must force the rebuild of that view.
BC-131 Replaced Drawings.GetActiveSheet() and SetActiveSheet() methods with Drawings.ActiveSheet and ActiveSheetIndex properties Replaced Drawings.GetActiveSheet() and SetActiveSheet() methods with Drawings.ActiveSheet and ActiveSheetIndex properties.
BC-133 HiddenLinesView changes Removed HiddenLinesViewSetting.Simplify and VectorView.Simplify properties. Replaced GetSilhouettes/Edges/Wires/HiddenSilhouettes/HIddenEdges/HiddenWires methods with Silhouettes/Edges/Wires/HiddenSilhouettes/HiddenEdges/HiddenWires properties, that now returns an array of HdlCurve. Replaced GetTexts() and GetRegions() methods with Texts and Regions properties, that now returns an array of HdlMesh. Replaced GetTextStrings() with TextStrings property, that now returns an array of HdlText. Added Pictures() that returns an array of HdlPicture. Removed HiddenLinesViewSetting.GetComputedLines() in favor of the above new public properties. Moved FilterLinesToExport() and ScaleLinesToWorld() methods from HiddenLinesViewSetting to HiddenLinesView.  FilterLinesToExport() now accepts and returns a list of HdlCurve instead of ScreenLine. ScreenCurve, ScreenLine, ScreenArc, ScreenText, ScreenPicture are now internal instead of public classes.
BC-134 Removed SheetsViews and ViewsBlocks properties from ViewBuilder SheetsViews and ViewsBlocks properties in ViewBuilder class are not public anymore
BC-135 Changed Surface.TryGetRevolved() out parameter TryGetRevolved() out parameter is now of type RevolvedSurface instead of Surface
BC-136 Lines related to Views are converted to LinearPath in proprietary file format Reading EYE files from version 7 and earlier, now Line entities that belong to blocks related to views are converted to LinearPath entity. This BC is not applied to files saved using the advanced technique of serialization with length prefix.


Detailed changes at field, methods, types and interfaces and abstract classes level are available as an attachment to this article.

Eyeshot version 2020 is based on .NET Framework 4.5

Was this article helpful?
1 out of 1 found this helpful


Date Votes
  • they should publish an example that shows the use of GetLength (), GetPerimeter (), GetArea () and GetMass () methods for Entity / Face / Edge / Curve with proper linear and mass unit support.

    It would be a great help.


    Gustavo Vigo

  • Hi Gustavo,

    We just added a FAQ about this feature.


Please sign in to leave a comment.

Articles in this section

See more