Dear Steve, The OMG CAD Services (OCS) specs are still freely available from the OMG website (the latest release is 1.2 : http://www.omg.org/spec/CAD/). I agree with you about the fact that the OCS is a good starting point. I briefly studied the OCS some months ago, and have a few notes I'd like to discuss with you:
- from a technical viewpoint, the CORBA technology is perfectly suitable for synchronous sharing of business objects through a network. In my opinion, an asynchronous collaboration should be enough (regarding the business needs related to usual CAD workflows) and Web Services (WSDL, SOAP etc.) might just be perfect; - from a semantic viewpoint, whereas the computational model is explicit, the informational model is mostly implicit. For instance, the CadBrep::Face class definition could be whatever. In my opinion, it could be a good thing to harmonize the semantics contained in the OCS and the STEP parts 42, 55 etc.; - some of the methods defined in OCS are strongly platform dependent: for instance CAD User Interface, paths etc. A high level CAD API should abstract these concepts and be platform/CAD system independent; - at last, I have a few doubts about the persistent identification since I know it's still considered as a major issue. And I wonder whether or not the OCC topological naming could be mapped to these persistent_ids. Best Regards, Thomas 2010/12/12 Stephen Waterbury <water...@pangalactic.us> > Thomas, Dan, Dave, > > A precedent (or at least a closely related concept) was the "CAD > Services API" developed by the [now defunct] OMG Manufacturing > Technology & Industrial Systems Task Force (MANTIS). That > specification is no longer active. It basically fell prey to > the OMG rule that an active spec must be implemented by at least > 2 vendors -- it was only implemented by one vendor (see below) -- > but it represents some good work that is still potentially > useful. > > The fact that only ITI had a product that implemented the CAD > Services API specification is more an indication of the hesitancy > of CAD vendors to provide a standardized API than of the quality > of the spec, IMO. ;) I've put a copy of its last version on my > web server for convenience (not publicized since I think OMG's > copyright might still be in force, not sure -- but since NASA > contributed to the spec, I feel somewhat justified in making it > available!): > > http://pangalactic.us/cax/CAD_Service_V1.1_030363.pdf > > It's interesting to note that both NASA *and* OpenCascade > contributed to the spec. It is based on the API of "CADScript", > a set of Python wrappers for CAD tools that was developed as a > commercial product by Doug Cheney of International Technegroup > Incorporated (ITI). CADScript is no longer offered by ITI as a > product, but Doug (who is a strong python advocate) has used a > Python API internally for another ITI product of which he is the > primary developer, called CADIQ, which analyses CAD models for > various types of modeling errors that could lead to data exchange > problems or manufacturing problems, for example. (The CADIQ url > is: http://www.transcendata.com/products/cadiq/) Doug presented > the CADScript product at the PDE 2001 Workshop at JPL. His > presentationslides are here: > > > http://step.nasa.gov/pde2001/STEP-and-Scriptable-CAx-Tool-Integration_Doug-Cheney.ppt > > Doug also did an impressive live demo using CADScript for the > Multi-CAD Assembly use case shown in his next-to-last slide. > Also, from recent conversations with Doug, I know that users of > the current CADIQ product can be given access to the supported > Python API that it uses (not sure how much of CADScript might be > there). > > I agree with what Thomas proposes below -- the concept of a > standardized high-level API that would have a standardized > framework or methods to specialize it for particular use cases. > I'd suggest considering the CAD Services API specification as a > starting point for a high-level API, since that spec incorporates > a substantial amount of harmonization work that was done to > develop a consensus high-level CAD API, and I think if pythonOCC > provided a high-level API that implements even something close to > the CAD Services API, it could provide a de facto industry > standard high-level CAD API, with the hope of getting it adopted > by other tools, and in the future possibly made a formal standard > (by OMG, ISO/IEC, or whomever). > > Cheers, > Steve > > > On 12/11/2010 03:47 PM, Thomas Paviot wrote: > >> Dear Dan, Dave, >> >> I didn't know about the openscad project, thanks for introducing me this >> project. Dave, you write "it is a tool that allows programmatically >> building >> solids using python and a CSG kernel", but I don't see any python >> scripting, I >> have rather the feeling that the scripting language of openscad is a kind >> of >> specific language, am I wrong? >> >> I agree with both of you regarding the high-level API that could be built >> upon >> pythonOCC. Abstracting the low-level OCC api/data model would be something >> really helpful. From a development viewpoint, there is not big issue : we >> all >> developed or our own classes/methods or function in pythonOCC in ordre to >> speed up development and make our programs modular. The big deal is rather >> : >> what classes/methods should be made available to the user? How could this >> set >> of functions be complete, i.e. how to ensure that *all* the needs from any >> user are covered by this API ? >> >> In my opinion, there's no way to get it done (I've been thinking about >> this >> for a long time). We'll always find a user that is not satisfied with the >> API >> and who requests for another method/class etc. The risk is then that this >> high >> level API become as big and complex as the original one (OCC). >> >> We could then imagine a different workflow than the usual one. I think >> about >> something that was used for the standardization of the AP239 of the STEP >> standard (also known as PCLS) : a very generic data model were designed >> (and >> standardized), and the specialization of the data model was also >> standardized. >> As a consequence, users with very specific business just join their >> efforts to >> define a standardized specialization of the generic data model suitable >> for >> their needs (aviation maintenance, operational feedback etc.). >> >> This development model could be moved to the pythonOCC high level API >> development : >> >> * a generic data model would be defined, with basic and fundamental >> elements ; >> * a framework for specializing this model is also defined. Both of this >> two points could be viewed at an ontological level ; >> * we then set up a 'high level API' repository with a set of basic >> classes/methods already defined ; >> * from these 2 points, we just let the user contribute new >> classes/functions/methods if what he is looking for is not already >> available from the repository. >> >> It could be a way for us (developpers of pythonocc) to share the >> development >> efforts of this needed high level API. And to have, as a consequence, a >> huge >> web-based repository of python classes/methods/functions, classified by >> businesses (FEM, manufacturing etc.), level of granularity, functions >> (gears, >> bearings etc.) etc. >> >> pythonOCC would then become a kind of distributed library : a core >> component >> (the python wrapper), required, and thousands of optional components >> available >> online, supported by a powerfull request engine. Setting up such an >> architecture is more a scientific project than a simple python development >> activity. >> >> What do you think about that idea? >> >> Thomas >> >> 2010/12/11 Dave Cowden <dave.cow...@gmail.com <mailto: >> dave.cow...@gmail.com>> >> >> >> Yes, definitely a higher level of abstraction is needed than just pure >> python. >> >> I am thinking ( not surprisingly ) of an environment a lot like a java >> ide. You write code, but the ide provides syntax highlighting, >> function completion, refactor support, code templates, a way to >> include other libraries, etc. >> >> On 12/10/10, Dan Falck <dfa...@frontier.com <mailto: >> dfa...@frontier.com>> wrote: >> > Yes, this technique does work- I've used it for commercial design >> work >> > with some proprietary modelers (Ashlar Cobalt and PunchCad Shark FX) >> > that used a crude scripting language-called of all things 'Macro >> > Parser'. I was able to make simple changes to the scripting that >> would >> > be major changes to the model. This allowed for very flexible >> revisions. >> > It also made it easy to recover from a crash if the application was >> > acting finicky. >> > I was able to do fork crowns for bicycles (classic Italian style-not >> the >> > modern stuff) by using techniques that emulated a cnc mill tool path >> > through the solid block. The whole time I was working the model as a >> > machinist would at a mill or lathe- subtracting shapes from the >> solid >> > that I started with. Python code was necessary to keep me from >> losing my >> > mind during these projects :) I created some functions that made >> dealing >> > with the crude 'Macro Parser' scripting a lot easier. >> > PythonOCC looks a whole lot more attractive to me than my old work >> with >> > this crude scripting. But, I would like to be able to abstract it a >> > little more though to make it easier to remember how to use it, >> without >> > having to go to the OCC docs all the time. I would bet that Thomas >> and >> > Jelle are working on something like this. >> > I think this project might be similar to what we are talking about: >> > >> > http://www.caddd.org/ >> > >> > Dan >> > >> > On 12/10/10 2:27 PM, Dave Cowden wrote: >> >> I assume that someone has seen this: >> >> >> >> http://openscad.org/ >> >> >> >> it is a tool that allows programmatically building solids using >> python >> >> and a CSG kernel. >> >> >> >> If such a tool used pythonOCC instead, it would be _much_ more >> powerful. >> >> >> >> This kind of tool is really interesting to me. Anyone who has done >> >> much solid modelling for a living quickly realizes that a complex >> >> solid model is much like a programming problem. You cannot just >> >> 'start building' a complex model: you have to plan how the object >> is >> >> built, which references are used, etc, so that the object is >> >> extensible and easily changed to accommodate design iterations. It >> >> becomes really important to plan reference planes and other >> reference >> >> geometries to reference each other in a way consistent with the >> rest >> >> of the model. >> >> >> >> Using a programming language to capture the [currently always >> >> proprietary] way that solid modelling packages capture the build >> order >> >> and dependency chains of a solid ( especially parametric solids ) >> is >> >> brilliant. As programmers, we are very familiar with the ability >> to >> >> use CVS merge and other utilities to track fine-grained changes to >> >> software over time, even when under concurrent development. Imagine >> >> the power of this capability applied to scripts that produce solid >> >> objects! No more huge binary solid object files that are opaque >> from >> >> a change management viewpoint! >> >> >> >> Does anyone know if such a package is underway anywhere based on >> >> pythonOCC? >> >> >> >> >> >> >> >> _______________________________________________ >> >> Pythonocc-users mailing list >> >> Pythonocc-users@gna.org <mailto:Pythonocc-users@gna.org> >> >> >> https://mail.gna.org/listinfo/pythonocc-users >> > >> >> -- >> Sent from my mobile device >> >> _______________________________________________ >> Pythonocc-users mailing list >> Pythonocc-users@gna.org <mailto:Pythonocc-users@gna.org> >> >> https://mail.gna.org/listinfo/pythonocc-users >> >> >> >> >> _______________________________________________ >> Pythonocc-users mailing list >> Pythonocc-users@gna.org >> https://mail.gna.org/listinfo/pythonocc-users >> > > > _______________________________________________ > Pythonocc-users mailing list > Pythonocc-users@gna.org > https://mail.gna.org/listinfo/pythonocc-users >
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users