[PythonCAD] Consistency in operations in PythonCAD

Art Haas ahaas at airmail.net
Tue Dec 13 17:59:37 CET 2005


The recent discussion and patches regarding changing move operations to
require first selecting the entities and then specifying the
displacement(s) warrants more discussion. For move operations, I think
that the proposed changes are worthwhile, but I'd like to hear from
people familiar with other CAD packages, particularly AutoCAD, how
similar operations are performed. Does the program require you to select
entities first, or do you start some move command mode and then specify
which entities will be moved? How about other operations like entity
stretching or splitting?

Here's some more background on why I'd implemented things as they are.
When I used ME-10 at my job, I was doing finite element analysis, and I
would draw the element meshes in ME-10 instead of using some type of
auto-meshing procedure available in the FEA package we used (Ansys). So,
given some part to analyze, I'd sit and draw segments over the outline
of the shape, sometimes selecting a large number of segments and then
splitting them at their intersection points, other times drawing the
individual elements one at a time. After I had the basic shape complete,
I'd go and move some of the points around to make the elements look more
uniform, as well as making the four-sided elements as square as possible
so the results would be better. ME-10 had a nice interactive mode of
moving points where you would click on the point, and then as you moved
your mouse/digitizer to where you pleased all the segments that used
that point would be redrawn as the point moved. Eventually I'd like
PythonCAD to do this as well. Still, this point movement was performed
by starting the 'move' operation, and then selecting what to move, and
I found this procedure very easy and quick to use. So much so that
generating decent FEA meshes was much, much faster than the attempts to
use Ansys auto-meshing, something that I did try every now and then.

Many (most?) of ME-10 edit type operations were performed by starting
the operation first, then selecting the entities on which the action
will be applied. Changing entity color, thickness, and linetypes were
all done this way, as was changing the various attributes of complex
entities like hatching and dimensions. It is due to my years of working
with ME-10 in this manner that I'd written PythonCAD to behave in a
similar fashion.

As for PythonCAD's editing functions other than moving, such as entity
splitting, I know that I want to keep the ability to click on an object
in a drawing and have it split without first having to select it. Also,
splitting numerous entities at intersections by invoking 'split' and
then drawing a box around the desired entities requires fewer mouse
clicks than selecting first and then invoking 'split'. Expanding on
this, in addition to making PythonCAD possibly behave like other CAD
packages in regards to editing, we need to consider making the actions
as simple to perform as possible. By reducing the number of mouse clicks
or commands needed to perform some action we can achieve this, though
potentially at the price of program behavior differing than what is
initially expected. I do want to make things easy for people to transition
to using PythonCAD, but I don't want to be constrained in emulating
tedious behavior in other programs.

Please feel free to add comments about this, and also send in some
reports about how other CAD packages handle operations like moving,
splitting, mirroring, and changing the attributes of entities in
a drawing.

Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.

-Thomas Jefferson to James Smith, 1822

More information about the PythonCAD mailing list