DraftSight 2019 no longer free

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
Joel_graff
Veteran
Posts: 1949
Joined: Fri Apr 28, 2017 4:23 pm
Contact:

Re: DraftSight 2019 no longer free

Post by Joel_graff »

carlopav wrote: Wed Nov 27, 2019 12:01 am Thx Joel, this I did get it. I mean, could we have a document object that stores geometry like a whole dxf, but represent it through pivy trackers constantly? Or just represent it as a compound but turn it into pivy trackers when we need to edit it? And how difficult do you envision to use draft tools on it? And draft snap?

It's not to stalk you, I'm really curious to understand how do you envision it
You could load in a DXF and render the entire thing as trackers. In the end, it's nothing different than what's being done to render the document objects in the Scenegraph. However, I think it becomes more difficult to manage that well without using a "task" as a context to mange their creation / destruction... Hard to say without a concrete use case.

As far as using draft tools on trackers, pivy-trackers could be used *by* the draft tools, I suppose... and maybe you could use an existing draft tool on a tracker object, but I didn't really design it with that sort of thing in mind - the tracker object doesn't have a document object API for that level of compatibilty. I suppose a shim / wrapper class could be added, though...? Again, without a concrete use case to really look at, it's hard to say.

Really, I think in the end, you'd be talking about rebasing the Draft tools to use trackers whenever geometry is modified, then update the document geometry when the operation is complete.

So, I really think I'd view pivy_trackers more as an editing tool that's generated on-demand and not constantly. Thus, the current workflow for trackers is:

1. Select existing document object(s)
2. Click / execute a command to run a task which modifies / edits the objects
3. Initialize the task by converting the document objects to pivy trackers or creating a framework of trackers to represent the editing operations
4. Perform the editing task operations using tracker objects
5. Complete task and use the final state of the trackers to update the original document objects (or abort, destroying the trackers)

Let's say we wanted to create an adhoc rotation tool that lets the user rotate all selected lines about the center of the selection by clicking and dragging the middle mouse button (no task panel is needed). The command-task paradigm is simple: The command is a middle mousebutton click and drag when multiple 2D objects are selected. The task is the rotation of those objects.

In this case, the selected elements could be converted into a custom tracker built on pivy_trackers. This single tracker would handle their rotation for the duration of the MMB click / drag operation. It may be advantageous to hide the original document objects during the rotation. Once the user completes the rotation, the transformation would be applied to the original document geometry. Then the geometry is turned back on, reflecting the permanent change. Finally, the trackers used for the rotation operation are destroyed.

I don't know if that makes it any clearer, or if what I'm describing is useful here. It seems, though, that this is really the only way to address performance issues with document objects without rewriting things in C++.
FreeCAD Trails workbench for transportation engineering: https://www.github.com/joelgraff/freecad.trails

pivy_trackers 2D coin3D library: https://www.github.com/joelgraff/pivy_trackers
carlopav
Veteran
Posts: 2062
Joined: Mon Dec 31, 2018 1:49 pm
Location: Venice, Italy

Re: DraftSight 2019 no longer free

Post by carlopav »

Thx Joel for the really clear explanation. some thing to add to the stream of thoughts
Joel_graff wrote: Wed Nov 27, 2019 4:44 am You could load in a DXF and render the entire thing as trackers. In the end, it's nothing different than what's being done to render the document objects in the Scenegraph. However, I think it becomes more difficult to manage that well without using a "task" as a context to mange their creation / destruction... Hard to say without a concrete use case.
I think is more a matter of how we imagine such document object as triplus pointed out. I'm going back to Yorik post about it:
yorik wrote: Sat Apr 06, 2019 7:29 pm We should at some point do some good testing to assess how strong is really the impact of having, say, 1000 small individual line objects rather than one compound which holds 1000 lines. But definitely the latter is way faster.

Grouping several objects into one is easy: Select many, create a compound, create a simple copy, delete the compound and the many objects. The problem is, it became uneditable.

In any case, having one compound object that holds many entities is an interesting thing to explore. In fact, one could imagine a universal edit tool, that would work on just ANY FreeCAD shape.

The main issue is sorting and figuring out what is inside a shape. A compound can contain just about anything: Solids, shells, faces, edges and vertices. So one should first have a good sorting algo, that would find, for example, all faces that are part of a solid, or all edges that are part of a face. So when an edge is moved, we know we need to recreate the face too.

Might be a good time to rethink the whole Draft Edit tool into something more ambitious ;)

We could try to make a Draft compound object that behaves like an App PArt or PartDesign Body or BuildingPart: if you double-click it, it becomes "active". If such a compound is active, all created Draft objects go in it automatically.
Joel_graff wrote: Wed Nov 27, 2019 4:44 am As far as using draft tools on trackers, pivy-trackers could be used *by* the draft tools, I suppose... and maybe you could use an existing draft tool on a tracker object, but I didn't really design it with that sort of thing in mind - the tracker object doesn't have a document object API for that level of compatibilty. I suppose a shim / wrapper class could be added, though...? Again, without a concrete use case to really look at, it's hard to say.
Draft trackers are actually used by Draft toos in the way you described below.
Joel_graff wrote: Wed Nov 27, 2019 4:44 am Really, I think in the end, you'd be talking about rebasing the Draft tools to use trackers whenever geometry is modified, then update the document geometry when the operation is complete.
This is less or more how Draft Trackers work. perhaps they rely more on Part to calculate the tracker object, to match exactly the document object they emulate. I know you know them probably better than me. :) I think would be an interesting discussion if/how to integrate pivy trackers in draft since a major reorganization of its code could be on the horizon.


Sorry to be stepped in heavily with this performance question. But since i'm interested mainly in architectural design, it's a topic that concern me a lot: also if we rely on complex parametric bim objects, most of the goal is at the end to produce documentation, and architectural documentation seems to me to rely a lot on drafting over the base model. To not count on the fact that drawing interchange is ATM mostly carried out with draftings rather than with models.
follow my experiments on BIM modelling for architecture design
User avatar
Joel_graff
Veteran
Posts: 1949
Joined: Fri Apr 28, 2017 4:23 pm
Contact:

Re: DraftSight 2019 no longer free

Post by Joel_graff »

carlopav wrote: Wed Nov 27, 2019 8:09 am I think is more a matter of how we imagine such document object as triplus pointed out. I'm going back to Yorik post about it:
Right. I'm guessing a compound object simply does what I imagine a tracker would do in the rotation example I gave. Incidentally, it occurred to me that taking a large number of drafting elements and generating trackers from them would be a very fast and simple thing to do, because Coin3D lets you copy entire segments of the scenegraph and insert them elsewhere - no need to rebuild it.

carlopav wrote: Wed Nov 27, 2019 8:09 am I think would be an interesting discussion if/how to integrate pivy trackers in draft since a major reorganization of its code could be on the horizon.

That's a possibility. I think it could be used to add intuitiveness to the Draft tools as an object is picked / edited, which is part of my motivation for developing pivy_trackers. I'd like to be able to build custom tools or at least customize their aesthetic - that is, be able to give visual feedback as the user interacts with the object, or permit a more sensible way of manipulating the objects. Pivy_trackers, for example, would be a way to implement Blender-like tools in FreeCAD (I really like geometry manipulation in Blender... :) )

I also forgot to mention snaps. Snapping is definitely doable with pivy_trackers - I'd simply create a new inheritable trait or series of traits that enable snapping behaviors. It might be a bit complex to implement alongside dragging and other mouse operations, but it seems doable. That said, the snapping code would have to be rewritten - you couldn't use existing snap tools to do it as things currently stand...

carlopav wrote: Wed Nov 27, 2019 8:09 am Sorry to be stepped in heavily with this performance question. But since i'm interested mainly in architectural design, it's a topic that concern me a lot: also if we rely on complex parametric bim objects, most of the goal is at the end to produce documentation, and architectural documentation seems to me to rely a lot on drafting over the base model. To not count on the fact that drawing interchange is ATM mostly carried out with draftings rather than with models.
A bit beyond my scope of knowledge. If @yorik weighs in, maybe he can provide some clearer direction on this.
FreeCAD Trails workbench for transportation engineering: https://www.github.com/joelgraff/freecad.trails

pivy_trackers 2D coin3D library: https://www.github.com/joelgraff/pivy_trackers
freedman
Veteran
Posts: 3466
Joined: Thu Mar 22, 2018 3:02 am
Location: Washington State, USA

Re: DraftSight 2019 no longer free

Post by freedman »

If investors see that a charge-after-addiction concept is not the best business model and maybe they see that open source is the future, they might move on. It's pretty obvious that high level computer language and forum based hive driven development can succeed :) . It's kind of a bartering thing, if you help the group you get a useful tool in return. Software companies can succeed by making specialized tools but the basic tools should be free for everyone.

Maybe a new post for a license expert, we could compile a list of the best open sourced CAD tools.
m.no
Posts: 10
Joined: Wed Oct 29, 2014 6:51 pm

Re: DraftSight 2019 no longer free

Post by m.no »

Somebody started making 2D CAD in QT/C++ as tool for LinuxCNC: https://forum.linuxcnc.org/41-guis/3676 ... ?start=110 . And judging by the icons, he knows about FreeCAD.
User avatar
yorik
Founder
Posts: 13664
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: DraftSight 2019 no longer free

Post by yorik »

I think your idea is VERY interesting Joel. In fact we are absolutely not tied to OCC. If you think of it, OCC is implemented as a module. Not a core feature. Of course, sooner or later, if you build 2D stuff, you'll want to use it to build 3D stuff too. That's why apps like Autocad, Draftsight, etc... started implementing 3D tools in the first place. But this is an easy part that can be a kind of conversion tool.

And in fact it would become possible to have zillion of objects like the dirtiest DWG files around :). But there is still the same problem of many different document objects, that would exist regardless of using OCC or not.

But indeed, for drawing 2D stuff, OCC is definitely not necessarily needed. And a clean, new, "lightweight" 2D module might actually be a very good idea...
User avatar
Joel_graff
Veteran
Posts: 1949
Joined: Fri Apr 28, 2017 4:23 pm
Contact:

Re: DraftSight 2019 no longer free

Post by Joel_graff »

yorik wrote: Tue Dec 17, 2019 6:47 pm But indeed, for drawing 2D stuff, OCC is definitely not necessarily needed. And a clean, new, "lightweight" 2D module might actually be a very good idea...
Right. I really feel like the lack of intuitiveness that people complain about in the user interface really isn't so much in confusing toolbars / icons, but tools that don't really tell you what they're doing or provide feedback to varying degrees in varying ways...

That's forced me to really focus on developing a Command->Task->Tracker structure for custom tool development. It allows the compartmentalization that I think helps standardize tool design and behaviors. Granted, I still confuse myself as I try to use it in my own work, but I feel like I have more control over developing a tool, adding complexity, and being able to manage it without needing to completely start over by rewriting everything. Besides, this seems to be the implied intent for tool design in FreeCAD...

In case you're wondering, the three elements do the following:

1. Command - Sets up the context for the Task and launches it.
2. Task - Initializes the Task Panel UI (if any), prepares the data for manipulation by the tool, and starts the tool Tracker(s).
3. Tracker - One or several custom classes which provide the user with the interactivity / feedback needed to edit the geometry.

Closing / accepting the Task, then, commits the changes created by the Tracker and updates the original OCC geometry accordingly.

Granted, this isn't the form to adopt for every tool, but I feel it works for more complex ones and fits the way Blender's tools (and a lot of commercial visual design tools) function.
FreeCAD Trails workbench for transportation engineering: https://www.github.com/joelgraff/freecad.trails

pivy_trackers 2D coin3D library: https://www.github.com/joelgraff/pivy_trackers
User avatar
Kunda1
Veteran
Posts: 13434
Joined: Thu Jan 05, 2017 9:03 pm

Re: DraftSight 2019 no longer free

Post by Kunda1 »

Joel_graff wrote: Tue Dec 17, 2019 8:46 pm Right. I really feel like the lack of intuitiveness that people complain about in the user interface really isn't so much in confusing toolbars / icons, but tools that don't really tell you what they're doing or provide feedback to varying degrees in varying ways...
This :point_up_2:
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
carlopav
Veteran
Posts: 2062
Joined: Mon Dec 31, 2018 1:49 pm
Location: Venice, Italy

Re: DraftSight 2019 no longer free

Post by carlopav »

yorik wrote: Tue Dec 17, 2019 6:47 pm But there is still the same problem of many different document objects, that would exist regardless of using OCC or not.
Sorry to always ask for explanations, please, be patient with me :), but what's the point of not using OCC if the we still are stuck with the problem of document object? Except of trackers I mean, which I really think should be a "must have".
yorik wrote: Tue Dec 17, 2019 6:47 pm And a clean, new, "lightweight" 2D module might actually be a very good idea...
+1000!
follow my experiments on BIM modelling for architecture design
User avatar
petit_chat_noir
Posts: 87
Joined: Wed Oct 02, 2019 6:45 pm

Re: DraftSight 2019 no longer free

Post by petit_chat_noir »

Hello all !
Just to say that DS 2019 for linux is no more available :'(
So I'm trying trial version of bricsCAD, I hope it will make the JOB !
Post Reply