What's new

Is FreeCAD 1.0 finally ready?

stepalibre

Alibre Super User
Good thing I created FreeCAD dotnet.

This is a big deal if it works!

1733602827877.png

 

stepalibre

Alibre Super User
With FreeCAD V1.0, Big CAD now has a new competitor. This was also true when Blender 2.8 was released.

Great summary:


Parametrics:

VarSets' new system: This appears to be FreeCAD's global variables system, combining properties, equations, and configuration systems into a more unified version.


CalculiX Support:

IFC:
Native IFC with editing tools.

Sketcher Overhaul:

Multi-body or Multi-solids Added:

Drawings:
Now support nearly all object types.

FreeCAD V1.0 = FreeCAD + Ondsel!

I'm updating my FreeCAD project to work with V1 ASAP.
 

stepalibre

Alibre Super User
Yes Alibre and my app.

It's a code integration, it can be anything. FreeCAD dotnet, gmsh dotnet and Blender dotnet are starter projects I made as prototypes or a proof of concept to see what is possible, how to use dotnet in these Python projects. I have other projects using Dynamo and Autodesk apps. Instead of creating an addon for my software similar to Plasticity's Blender addon for syncing models, it's the opposite. I need full control, embedding them into my software is a better fit. Blender now support portable installs which is huge for me, since that was always a pain point not having a true portable install. With v1.0 assembly and parametric updates I need to dig deeper into how this new stuff work. I want to build these projects in a way that simplifies the connection code, a library of scripts and common interfaces to use VB or C# with Python. $200 a month ChatGPT Pro will do all the work? The key component is PythonNET that's how FreeCAD is integrated, nothing special.
The addon is the same I've shared before. I waited for PDM to be released before I resumed addon development. I was eager for some new API features, but maybe next Christmas.
Check out the example test scripts - the basics.
The interface to them are Jupyter notebooks and CLI.

This is now all under my Testbed application, the one with Eyeshot FEM kernel. Ignore the ribbons those are placeholders, multiuple versions of the UI layout can be loaded. FreeCAD will be embedded, for now it'll only perform background tasks generate surfaces and solids from templates/macros, convert files and CAD geometry calculatons. My app will handle the input and output processing as IPC, tasks or separate backgroundworkers. Basically, they are separate programs that a program or the addon in Alibre communicates with, very similar to KeyShot LiveLinking. I'm mentioned here, my use of sensors or a way to have non-blocking code run in Alibre. That work was for this and other tools.

The 3rd image is showing the older version of the addon that will work with Testbed. This is all R&D work, my focus has been Alibre PDM integration and part libraries. It’s looking more likely that I’ll build my own system for libraries. By design, I don't have an elevator pitch for Testbed it is a testbed.

1733745146710.png
1733739700504.png
1733740828005.png
1733740894161.png
1733740959443.png
1733741197378.png
 

EPowIPi

Senior Member
So, do I understand it right that you are trying to write a hosting software that can host FreeCAD worbenches and Alibre plugins etc.?
How is data transferred between these modules? And does the history tree "survive" that transfer? If yes this would be quite interesting, e.g. being able to model something in Alibre and then use the CfdOf workbench to compute some fluid dynamics simulations. And when e.g. the geometry of a wall changes in alibre then the meshes can automatically be updated (like as if the geometry would have been defined in FreeCAD).
Same for the CAM workbench. When some geometry is changed then the toolpaths could automatically be updated. Which would save a lot of time compared to exporting a STEP file, assigning toolpaths - and repeating the process from the beginning every time a change is made on the geometry in Alibre.
 

stepalibre

Alibre Super User
So, do I understand it right that you are trying to write a hosting software that can host FreeCAD worbenches and Alibre plugins etc.?
I’ve been building small- to mid-sized programs for years, and they’ve become increasingly difficult to maintain and update over time. This is a solution I've planned for awhile. The app is the place where I will build, manage, and run all my software tools and solutions of any size and complexity. So, yes Instead of writing a plugin or macro for AutoCAD that live in AutoCAD. I build workflows and integrations with Testbed for AutoCAD. I’ll still create a plugin, but its only purpose will be to support the Testbed integration.

It's difficult to explain here is a list of what I plan to integrate:
Most are integrated though a CLI or library not the GUI.

ThreeJS
BabylonJs
EyeShot
ab4d
HelixToolkit
Python
.Net
LINQPad
VS Code
Litedb
Sqlite
Alibre
Assimp
ImGui
FreeCAD
Blender
Opencascade
Opencascade.js
MoI
Jupyterlab
Rhino3dm
Rhino & Grasshopper
Dynamo
Smath Studio
GNU Octave
Notion
OpenAI
P5js
Processing

How is data transferred between these modules?
The data is plaintext formats csv, xml, json, toml, litedb and sqlite. The folder structure in the application is mapped directly to real folder paths. I load files and folders directly from the source. If by modules you mean "Alibre" then that is using COM in headless mode or the GUI.

And does the history tree "survive" that transfer?
It should work, I haven't gotten that far yet. I don't see why not, FreeCAD's geometry APIs surpass Alibre. It should be a one-to-one mapping by feature type. I have a project that helps understand the structure and topology of Alibre sketches and features, which will come in handy for this task.


If yes this would be quite interesting, e.g. being able to model something in Alibre and then use the CfdOf workbench to compute some fluid dynamics simulations. And when e.g. the geometry of a wall changes in alibre then the meshes can automatically be updated (like as if the geometry would have been defined in FreeCAD).
Same for the CAM workbench. When some geometry is changed then the toolpaths could automatically be updated.
You understand the concept, that's the point and why I'm moving in this direction.
I don't have any experience using workbenches, except for the standard list. If they have Python APIs I can use from the CLI then it should be straightforward to setup.

Which would save a lot of time compared to exporting a STEP file, assigning toolpaths - and repeating the process from the beginning every time a change is made on the geometry in Alibre.
Gltf and 3dmare the two formats save and load CAD and 2D/3D data. STEP is used because it is supported universally.

Any ideas?
 

EPowIPi

Senior Member
Sounds promising!
I meant history tree aware geometry vs STEP (as an example of a non-history aware format). In the first case one can derive identifiers for surfaces that are e.g. used for a certain toolpath or wall for CFD based on the construction step that generated them. In the case of just having a STEP file (=no history) as input it would in general be a very difficult / impossible task to reliably match faces from the STEP file to those in the CAM/CFD assignment, when the STEP file changes. (Like trying to solve the TNP just by guestimating matching surfaces of the before and after geometry :) )
I am not aware of an interchangable format that would retain history(?)
 

stepalibre

Alibre Super User
The feature tree can be translated from Alibre to FreeCAD and back directly. The hierarchy is only a few levels deep. I wouldn't use STEP for this, I would save my own structure that has the mapping logic. My Insights-Data project is meant to export feature data so it can be analyzed and utilized in other contexts.

Feature and history trees are not necessary, I will have several representations of a model. I'm not recreating outdated CAD concepts. Feature trees aren't easily scriptable or multi-threadable (is that a word).

In the case of just having a STEP file (=no history) as input it would in general be a very difficult / impossible task to reliably match faces from the STEP file to those in the CAM/CFD assignment, when the STEP file changes. (Like trying to solve the TNP just by guestimating matching surfaces of the before and after geometry :) )

I'm not sure but, a combination of topology and position can help recognize or match geometry. Brep geometry is easier for me to work with than meshes.
 

stepalibre

Alibre Super User
Anything that is naturally or obviously outdated or does not utilize the latest modern software and hardware improvements we have today.

Examples, not exclusive to Alibre or any specific application:

Not allowing sketches to live in their own files that could be shared by parts or features, with dynamic updates is one example. I want to reuse sketch profiles, share them across extruded parts in structural systems. The standard approach is to switch the entire model if the type or size change. You can instead change the sketch that model is using. Since it is an extruded profile the centerline is the same, work points might shift but that's a simple calculation. In a complex, fully detailed models, using traditional methods, offer no way to automate changes without breaking everything in the process. The regeneration alone will cause problems. Programs like Revit can handle complex models but with far less detail.

Reusing assemblies, parts, features, sketches, and equations is another area that requires better tools to fully enable reuse.

Feature and history trees are valid and make logical sense, but the thinking behind them feels outdated. Why not have more ways to develop and visualize a model or assembly. Another example is having multiple design explorers running in parallel using different parameters or configurations all in real time. I have setups in Grasshopper that use form finding and optimization tasks, no reason why parametric CAD can't have similar tools. I also need to build libraries in multiple formats including IFC. I'm writing model generators that allow me to generate feature history but it's not needed. At any point in the construction I can dump the data and inspect the parameters, topology and the 3D model . Using Alibre in headless mode you can do the same thing. So, I’m not suggesting we exclude anything it’s more about expanding and improving. Blender, FreeCAD, and Alibre each have unique functionality not found in other 2D/3D, DCC or CAD apps, which is why I want them integrated.
 
Last edited:

EPowIPi

Senior Member
Sounds interesting!
I guess for projects where several people are involved and that have to be maintained later on it might make sense to settle on a coherent subset of all possibilities, to make it easier for others to comprehend a design. Perhaps a little comparable with certain, multi-paradigm programming languages like C++ or Lisp - most larger projects define a style guide which features to avoid and which features to use - and how.
But exploring new possibilities is usually a good thing, looking forward to what you come up with!
 
Top