Learn about industry trends, news and how-tos from our product experts.


Assembly Navigation

This article explains the basic concept of assembly navigation. For a better understanding, it is recommended to read the RootBlock article first. For an advanced implementation of this feature, you can see the code of the AssemblyDemo sample. Take for example a simple scene with two blocks, in addition to the root one. Block red = new Block("Red"); red.Entities.Add(Brep…

by Simone Maccaferri | November 29, 2019 | Share


RootBlock paradigm

Eyeshot 2023 includes a Block, called RootBlock, that represents the scene root. This means that every single piece of geometry is always inside a Block definition. There is no longer a collection of entities associated with the environment, the Workspace.Entities collection is now a shortcut that refers always to a Block.Entities collection, normally of the R…

by Simone Maccaferri | November 18, 2019 | Share


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 suppor…

November 18, 2019 | Share


CAD Practice Drawings 15

// Layers definition: default layer for the model at index 0, dashed lines at 1, dimensions at 2 string Dim = "Dimension", DashDot = "DashDot"; design1.Layers.Add(new Layer(DashDot, Color.CornflowerBlue)); design1.Layers.Add(new Layer(Dim, Color.CornflowerBlue)); design1.Layers[0].Color = Color.Black; design1.Layers[0].LineWeight = 2; design1.LineTypes.Add(DashDot, new float[] { 5, -1, 1, -1 }); desig…

by Giulia Martini | October 25, 2019 | Share


Modeling Practice Drawings 153

// Basic shape Line ln1 = new Line(Plane.YZ, 50, 90, 50, 0); Line ln2 = new Line(Plane.YZ, 50, 0, 0, 0); Line ln3 = new Line(Plane.YZ, 0, 0, 0, 90); Arc arc = new Arc(Plane.YZ, new Point2D(25, 60), 30, 0, Math.PI); Point3D[] ps = Utility.Intersection(arc, ln1); ln1.TrimBy(ps[0], true); arc.TrimBy(ps[0], true); ps = Utility.Intersection(arc, ln3); ln3.TrimBy(ps[0], false); arc.TrimBy(ps[0], false); CompositeCurve cc1 = new CompositeCurve(ln1, arc…

by Giulia Martini | October 25, 2019 | Share


2D rotation perpendicular to screen

If you want to recreate the features of a 2D viewer (for example, only on the XY plane) you can do it with Eyeshot by means of the tips reported in this article.The following code allows simulating the basic features of a 2D viewer: enables the orthographic projection mode, disables the rotation on the 3D space, leaving only the one on the XY plane enabled. design1.Activ…

by Antonio Spagnuolo | September 06, 2019 | Share


Merchandise Shop

We just launched our new online shop with devDept clothing series and accessories! You can choose from male and female t-shirts in multiple colors, unisex baseball t-shirts, gym bags and caps.    

September 05, 2019 | Share


Eyeshot 12 build 520

We are proud to announce the availability of a new Eyeshot 12 stable build: 12.0.520 In Brief This build includes bug fixing, small speed improvements and code samples refactoring. Here are a few highlights: Improved Mesh section speed using Octree Fixed realistic shadow flickering with complex scene graphs bug Added parallel execution to MarchingCubes and M…

August 14, 2019 | Share


Synchronous ProgressBar

In Eyeshot ProgressBar can be used only in asynchronous WorkUnits (the ones ran with model.StartWork()). In case you would like to use ProgressBar in a synchronous way, independently from WorkUnits, updating its value when needed and then calling Invalidate(), you can use this trick:   Derive ProgressBar class and expose its Draw method: public class MyProgressBar : de…

by Manuel Nucci | July 31, 2019 | Share

3D Graphics

Drawing entities above all others entities using TempEntities

It is common the need to draw an entity that will be shown above all other entities. For this task, there is not a univocal answer and there are different solutions that can be implemented based on the working context. For one of them, you can use the approach shown here. Here, we discuss the possibility to use our TempEntities to achieve this task.  Here is a sample code: B…

by Antonio Spagnuolo | July 05, 2019 | Share