Is there a "Large Scale Python Software Design" ?
golux at comcast.net
Tue Oct 19 08:57:58 CEST 2004
Andrea Griffini wrote:
> I proposed python as the main language for our next CAD/CAM
> software because I think that it has all the potential needed
> for it.
I agree, even without knowing the intended scope. ;)
Speaking of scope, if you are allowed to divulge it, that
would be interesting to know. Will it be 2D or 3D (3D I
would assume), and what kind of geometry engine?
Probably one of the open-source ones that already have
a Python API, no?
If it is 3D, a very desirable feature would be STEP
(ISO 10303) geometry import/export, so that you will be able
to exchange CAD data with virtually any commercial CAD
tool, and some open source ones (such as OpenCascade).
That will greatly increase its chance of adoption by
experienced CAD users, who typically have existing
libraries of CAD designs created using a COTS CAD tool.
(This is even more useful if you are planning to support
assemblies of components -- which might even be the most
logical initial feature for a new Python-based CAD/CAM,
since assemblies could be manipulated even without having
native geometric-form-creation capabilities: all you
would need is rendering, orientation, and interfacing
of existing solids -- a.k.a., "parts".)
If you have access to a license for ABAQUS, I recently
discovered that they have implemented a Python API for their
FEA engine, and have implemented STEP geometry as well.
> ... I'm not sure yet if the decision will get through, but
> something I'll need in this case is some experience-based set
> of rules about how to use python in this context.
> For example... is defining readonly attributes in classes
> worth the hassle ? Does duck-typing scale well in complex
> software or should I go for a classic inheritance hierarchy ?
For something as complex as CAD/CAM, you will probably want to
make maximum use of interfaces and adaptors, with minimal and
very judicious application of classic inheritance hierarchies.
I am *not* an expert on interfaces and adapters, but several
of the gurus on this list are.
Since you will probably want to do lots of prototyping, you
can probably delay decisions about matters such as read-only
attributes until your API has stabilized somewhat.
Keep us posted on your progress.
More information about the Python-list