🌶️ Breaking Changes in Eyeshot 2023

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.



BC-221 Internalized some Workspace methods that were for internal use only WorkSpace.SuspendUpdate(), Workspace.UpdateWorkspace(), Viewport.UpdateWorkspace()
BC-220 Internalized some Workspace methods that were for internal use only AddMessageFilter(), ClipCursor(), DoubleBuffered(), GetForeColor(), HideCursor(), LoadCursors(), LoadPickCursor(), ParentBackColor(), ParentExists(), PointToScreenControl(), PreFilterMessage(), RemoveMessageFilter(), SetParentHandle() have been internalized
BC-216 Renamed maxTrianglesNumForOctreeNode parameter Renamed maxTrianglesNumForOctreeNode parameter as nodeMaxItemCount
BC-215 Reversed toolbar array order Now default toolbar is always at index zero
BC-214 Renamed CollisionTupleItem struct Renamed CollisionTupleItem struct as CollisionData



BC-213 Renamed SketchManager.EditExit() method Use SketchManager.Exit() instead
BC-212 Changed return type of ICurve.Offset() interface method Now it returns ICurve[]
BC-211 Removed Design.NewSketch() method Use SketchManager.New() instead
BC-210 Renamed SketchManager.RemoveConstraint() method Renamed SketchManager.RemoveConstraint() in SketchManager.DeleteConstraint()
BC-209 Removed SketchManager events Removed SketchManager.EditStarted and EditEnded events. Subscribe to FeatureTreeView.EnterEdit and FeatureTreeView.ExitEdit instead.
BC-208 Removed Design.EditSketch() method Use SketchManager.Edit() method instead
BC-206 Renamed GfxDrawForSelectionParams class Renamed GfxDrawForSelectionParams class to DrawForSelectionParams and GfxEnvironmentParams class to GraphicsEnvironmentParams
BC-205 DWG 2D Solid entities DWG/DXF 2D Solid entities are now imported as Hatch with Solid pattern
BC-204 Picture entity drawing Now it's mandatory to specify:
myPicture.ColorMethod = byEntity;
myPicture.Color = Color.FromArgb(254 /* or anything less than 255 */, 0, 0, 0);
for Picture entities when their Image contains semi-transparent pixels. The value of myPicture.Color.A acts as a switch between opaque entities rendering and semi-transparent ( if A = 255 -> entity is opaque, else -> entity is transparent )
BC-203 Removed LoadScene() and SaveScene() methods Removed Workspace.LoadScene() and SaveScene() methods
BC-202 Changed signature of Viewport constructors Removed SavedViewManager parameter


BC-201 Renamed ComputeDistances.Values property Renamed ComputeDistances.Values property into Result
BC-200 Removed RegenParams.MaxLength property Use CurveMesher class instead
BC-199 Moved GetEntityLineType() method Moved static GetEntityLineType() method from Workspace to Entity class
BC-198 Removed Read3DS class There are no official file format specifications that allow fixing of existing issues
BC-197 Renamed Autodesk enums Renamed WriteAutodesk.versionType enum to devDept.Eyeshot.Translators.autodeskVersionType. Renamed WriteAutodesk.blockExportType enum to devDept.Eyeshot.Translators.autodeskExportType. Renamed blockSourceType enum to autodeskSourceType.
BC-196 Removed ReadAutodesk.OnApplicationExit() method No longer needed
BC-195 Setup.AddUserInterfaceElementTo() method Replaced Setup.AddUserInterfaceElementTo() method with Manufacture/Viewport.AddUserInterfaceElementFor()
BC-194 Changed signature of PointCloud class constructor From PointCloud(int numPoints, float pointSize, PointCloud.natureType nature) to PointCloud(int numPoints, natureType nature, float pointSize)
BC-193 Renamed GetPolygonMeshes() method Renamed IFace.GetPolygonMeshes() method to GetTessellation()
BC-192 Changed signature of Camera.ComputeOffsetOnCameraAxes () method From ComputeOffsetOnCameraAxes(Point3D pt, Point2D m1, Point2D m2, Point2D minQ, Point2D maxQ) to ComputeOffsetOnCameraAxes(Point3D pt, PointF m1, PointF m2, ref PointF minQ, ref PointF maxQ)
BC-191 Removed GEntity class GEntity class and inherit classes have been abandoned in favor of a new architecture. The same is true for IGCurve, IGFace, etc. interfaces.
BC-190 Eyeshot / Eyeshot.Control separation
  • Changed the type of Material.TextureImage/AlphaMapImage/EnvironmentMappingImage properties from Image to byte[]

  • Changed the type of Picture.Image property from Image to byte[]

  • Changed the type of the first parameter in the MarchingSquares constructor from Bitmap to PictureData<byte>

Added extension methods Image.ToByteArray(), Image.CreatePicture(), Image.CreateMaterial() and Image.CreateMarchingSquares().

  • Changed the type of TextStyle.Style property from System.Drawing.FontStyle to devDept.Eyeshot.fontStyle

  • Separated devDept.Graphics.TextureBase class in devDept.Eyeshot.TextureBase and devDept.Eyeshot.Control.Texture

  • Separated devDept.Graphics.RenderContextBase class in devDept.Eyeshot.RenderContextBase and devDept.Eyeshot.Control.RenderContext

  • Changed namespace of Workspace control and UI elements from devDept.Eyeshot to devDept.Eyeshot.Control

  • Changed namespace of projectionType, colorThemeType, elementType, KeyChangedEventArgs types from devDept.Graphics to devDept.Eyeshot

  • EntityGraphicsData class is now abstract. See this article for more details.

  • Changed namespace of booleanFailureType from devDept.Eyeshot to devDept.Geometry

  • Moved Material class from devDept.Graphics to devDept.Eyeshot namespace

  • Moved elementType from devDept.Graphics to devDept.Eyeshot namespace

  • Moved HitTriangle from devDept.Geometry.Entities to devDept.Eyeshot.Entities namespace

  • Moved Workspace.SelectionChangedEventArgs class to devDept.Eyeshot.Control namespace

  • Replaced static Viewport.GetCameraRotation(viewType view) method with Camera.GetViewRotation(viewType view)

  • Moved method View.Rebuild() to VectorView.Rebuild() or RasterView.Rebuild()

  • Renamed class HiddenLinesViewSettings to HiddenLinesViewSettingsEx

  • Renamed class ViewBuilder to ViewBuilderEx

  • Workspace.GetVisualRefinementDeviation() is no longer virtual: in order to override it, you must override Document.GetVisualRefinementDeviation() instead. See this article for more details.

  • Replaced Workspace with Document as a parameter in the constructor of the following classes: WriteAutodesk, AppendAutodesk, WriteParamsWithDrawing, WriteDatabaseParams, WriteFileParams, Write3DPdfParams, WriteAutodeskParams, new WriteMultifileParams, WritePrcParams.

  • Changed signature of SelectionChangedEventArgs constructors. Removed the Workspace parameter.

  • Renamed AddToScene() and AddToDrawing() methods to AddTo()

  • Changed signature of HiddenLinesView constructors: removed fontTolerance parameter, use the constructor that accepts HiddenLinesViewSettings instead.

  • Changed signature of HiddenLinesViewSetting constructors: added hiddenLinesViewType parameter to specify the part of the scene to capture.
    Removed fontTolerance and Pen parameters, use FontAccuracy and Pen properties instead.
  • Moved SelectedItemBase and inherited classes from Workspace to devDept.Eyeshot namespace.

  • Changed namespace of VolumeMesher from devDept.Eyeshot.Triangulation to devDept.Eyeshot.Meshing
  • Moved collisionCheckType and CollisionResult from CollisionDetection2D to devDept.Eyeshot namespace.

  • Changed namespace of BorderSettings, RotateSettings, ZoomSettings, PanSettings, and NavigationSettings from devDept.Eyeshot to devDept.Eyeshot.Control

  • Changed namespace devDept.Eyeshot.MultiTouch  to devDept.Eyeshot.Control.MultiTouch
BC-189 Drawing.Rebuild() method In Eyeshot 2023, even when the async param is true, the results are added to the Drawing workspace. Previously, the customer had to manually call ViewBuilder.AddToDrawing() method when the ViewBuilder work was completed.
BC-188 Removed BlockEx, LayerEx, TextStyleEx, LineTypeEx, SheetEx, FileSerializerEx, BlockExKeyedCollection classes BlockReferenceEx, CurveEx, LinearPathEx, Ole2Frame, and XLine classes are now available in Eyeshot instead of Autodesk assembly. BlockEx, LayerEx, TextStyleEx, and LineTypeEx classes have been removed and their properties are respectively added to Block, Layer, TextStyle, and LineType. FileSerializerEx and BlockExKeyedCollection have been removed because now useless. Added FileSerializerWithLabels for customers that need Labels definitions for their extended format.
BC-187 Mouse3DSettings changes devDept.Eyeshot.Control.Mouse3DSettings class has been redesigned: only one (parameterless) constructor is now available; instead of three different PanSpeed, RotateSpeed, and ZoomSpeed properties, we now have a single, unified SpeedFactor (whose values work on a different scale).
BC-186 Removed FemMesh parameterless constructor No longer needed
BC-184 Removed SketchManager.ProjectedCurvesColor property  
BC-183 Removed SketchCurve.Projected property  
BC-182 LicenseManger.Unlock() method LicenseManger.Unlock() method now accepts only the serial number as a string parameter
BC-181 ViewportLayout and Model obsolete classes ViewportLayout and Model obsolete classes now derive from Design. In the earlier version, they derived from Simulation (for Fem edition).
BC-217 Changed Quaternion() constructor Quaternion(double yaw, double pitch, double roll) constructor now uses the Nautical Angles convention


Eyeshot version 2023 is based on .NET Framework 4.7.2 or NET6 or NET6-Windows.


Previous versions of this article: Eyeshot 2022, Eyeshot 2021

Was this article helpful?
2 out of 3 found this helpful


Date Votes
  • The list seems to be incomplete.

    I just started migrating our software to Eyeshot 2023 and it seems the ComputeTessellation method that used to exist for GBreps does not exist for the Brep class. There is a "GetTessellation" method, but that does not have any parameters for required tolerances etc. Same is true for the Curve class: GCurve had a method called ComputeTessellation, The Curve class doesn't have that method or any other method that would seem related to getting a linear approximation to the curve.

    Some other minor changes I could figure out myself (for example the change in the SelectionChangedEventArgs ctor signatures), but this one really has me stumped. I found a CurveMesher work unit class that seems, at least from its parameters, to compute a linear approximation of a curve, but I really hope I don't have to create a work unit instance whenever I need the linear approximation of a curve or a triangulation of a Brep face, so I really hope there's something obvious I'm just missing.

  • Hello Matthias,

    You are right, please call the Brep.Regen(deviation) to obtain the same effect.

    CurveMesher is a really simple class we are creating new all the time even during tessellation of our own types. You can even replace it with your own implementation.


  • Matthias how go?? because im almost finish 10 days still not finish the migration

    its not only Gbrep go but also the surface its not always can extract from face.parametric and in some case its rise exeption( i have many many cases

    need pass one by one)

    also the  Brep inteersction ,now if solution its "UnknownFailure" its will change the parent(Brep) face parametr to null

    hope for you its more easy

  • Hello Yaakov,

    We offered to migrate your projects for free in front of your eyes and you declined, so there is no reason to complain.


  • Just an FYI I believe I found a bug in the WPF control where viewports crash if there is not a toolbar present. I can go into one of the provided 2023 samples (SelectTriangles for instance) and remove the toolbar section from the xaml description of the viewport, and the viewport will crash on load. After upgrading from 2023.2 it took me a while to figure out why all my viewports were breaking whenever a viewcube icon or coordinate system icon were present, and the solution was to add an empty toolbar. Strange, but that's worked as a solution for me. I can send an example app to Eyeshot if you guys are interested, but I think it shouldn't be hard to reproduce.

  • Hi Michael,

    We solved the issue with the build 2023.3.602.

    Thanks for reporting it.

  • I noticed more that seems to be missing in the list. We're on version 2023.2.475 and the Quaternion constructor now gives completely different results than it did in previous versions. You've listed a change to the Quaternion constructor only for version 2023.3 so I don't know what's going on there.

  • Hi Brandon,

    you're right: by mistake the BC was listed between the ones of Eyeshot 2023.3 instead of 2023.1, as it should: now it should be fixed.


Please sign in to leave a comment.

Articles in this section

See more