i agree that code completion is a big deal. I use python and java in my day job, and though java is very verbose and has many issues, the code completion and strong typing of java makes writing code much faster. python definitely lacks ides as good as java has. _____
From: pythonocc-users-boun...@gna.org [mailto:pythonocc-users-boun...@gna.org] On Behalf Of Patrick Janssen Sent: Monday, December 27, 2010 10:52 PM To: pythonOCC users mailing list. Subject: Re: [Pythonocc-users] Re : Anyone seen this? (Dave Cowden) Hi all, This discussion is very interesting - I also made a start with PythonOCC, and somewhere along the way I got distracted by other things - partly because I found it hard to get started with PythonOCC. An HLA would be great! I have one thought I would like to add to the pot at this point... In order to make the HLA learning curve as smooth as possible, code completion is really important. But I have found that this is quite hard in python. I previously worked on a python api for Rhino (http://code.google.com/p/design-automation/). The rhino COM api is a functional api - so you cannot script with objects. I found this very unsatisfactory, so instead I created an OO wrapper in python. As I got deeper into it, I kept hitting problems to do with code completion - I avoided as much as possible any dynamic typing, and managed to get code completion working in most places. But I found that it is important to think about code completion from the start. The problem of couse is that this is to some extent dependent on the IDE you are using - I was using pydev. So pydev will try to analyze the return type of functions and methods, so if in the HLA you create a function that returns a particular object, then the user should be able to get code completion to work on that object. However... there are still many cases where problems will crop up. For example, Dave wrote > i can perform the union of a two objects, creating a third one, and > convieniently return the resulting object for further manipulation A union may return one entity or (if the inputs do not intersect) more than one entity. This means that the HLA (i.e. the function or method being used) will have to return a list, which means that the user will not get code completion working on the entities in that list. If the user wants code completion, they will then have to use 'assert isinstance()' on the entities in the list. (As far as I know, there is no better way round this... any suggestions) Patrick :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: On 27 December 2010 23:12, Dave Cowden <dave.cow...@gmail.com> wrote: Hi, Thomas: I have one other suggestion also, coming from the 'agile' point of view. the HLA is a huge and daunting task-- and thus the reason any discussions quickly become large. I would recommend that a scope of work be decided that is managable and allows producing something that we can get experience with, rather than attempting to drive any particular approach ( top-down or bottom up ) for the entire scope of the HLA. For example, perhaps we could agree that although the HLA contains much scope, the scope that is most needed and straightforward is the creation of primitives and basic CSG operations. The rationale would be that these are the first operations new users are likely to perform, and are thus a good starting point. Explicitly _out_ of scope would then be considerations of parametrics, assemblies, fancy curves, multi-process coordination of entities, etc. The best way I see to define this scope would be for you to approve the user stories that the first release supports. For example: * "as a user of the HLA, i can programmatically create a sphere by specifying its diameter and center point in space" * "as a user of the HLA, i can translate an object that has been created without creating another variable reference. Preferably, the creation and translation are accomplished in a single line" * ".... i can perform the union of a two objects, creating a third one, and convieniently return the resulting object for further manipulation" Presumably these user stories would become test cases or suites for the HLA. Something we could reach consensus on and release, however small in scope, would be better than spending too long on discussions attempting to consider the entire scope. I think having something conceptually simple that we can iterate from would be very beneficial to coming up with an API that works well. We are certain to find that we must re-work some of these initial implementations to provide later functionality, but as long as the test cases and user stories match well, this effort will be managable. On Mon, Dec 27, 2010 at 8:07 AM, Thomas Paviot <tpav...@gmail.com> wrote: Hi, Regarding the second point (basic primitives such as point, line, circle etc. or other entities like coord_sys, group etc.), this is exactly what we're thinking about for the 'High Level API' (HLA) for pythonOCC. In my opinion, it is the most important part of the pythonOCC project, since we all agree that the OCC library is too granular in order to be easily, quickly and efficiently deployed. On the other hand, this could solve one of the major issue of the pythonOCC project : the lack of documentation and/or tutorials/howtos/getting started. As it is currently designed (a python wrapper for the OCC library), writing doc for pythonOCC is the same thing as writing docs for the OCC project. It is clearly not our intent, and out of our skills/free time/etc. We are convinced that the use of both python and a HLA can really add value the OCC modeling kernel. Our documentation efforts would then focus on the HLA. However, the scope of this HLA has to be explicit and clearly delimited, and the semantics of the basic constructs must be shared among the pythonocc users or related projects. For instance, in the pycado project, you defined a 'group' entity. According to what I read in your code, the 'group' contains a set of basic operations/instance creation. In my opinion, this entity is not really a 'group' but rather an 'ordered set' since you cannot inverse the order of the elements of the group. It's however a good idea, but it has to be made explicit in order to avoid ambiguities in the use of this entity. I would like to work about that (a Platform Independent Model-PIM) before thinking about the implementation issues and the underlying technologies (python packages/modules, pycado or something else scripts, SOA and webservices, MOM etc.), that is to say before designing a set of Platform Specific Models (PSM) that would share a consistent,complete and extensible semantics (a top-down approach). I will post a new entry in the coming days, to sum up the exchanges related to the "have you seen this" thread and suggest a way/plan to let everybody interested in this work contribute the development of the HLA (the dual bottom-up approach). Cheers, Thomas 2010/12/23 julien blanchard <julien...@yahoo.fr> Hi, The layer above python was matching the best with our goals, in fact, I see two main parts in our project: - the "IDE part" providing an optimized syntax for CAD and an efficient graphical visualization (by updating only components being modified in the script since last refresh) - the high level API written in pure python. This API should be used both in python project and pycado projects. For now, the API contains the following primitives (can have several "constructors"): coord_sys (coordinate system), point, line, circle, vector, surface, solid, group (a group can join any primitive) Julien. ----- Message d'origine ---- De : Dave Cowden <dave.cow...@gmail.com> À : pythonOCC users mailing list. <pythonocc-users@gna.org> Envoyé le : Mer 22 décembre 2010, 19h 35min 20s Objet : Re: [Pythonocc-users] Re : Anyone seen this? (Dave Cowden) Hi, I am not a fan of pre-processors and scripts that are not pure python. I think that such an architecture is unnecessary in a dynamic language like python or javascript. Is it not possible to accomplish the abstractions without pre-proccessing or another layer of syntax above python? _______________________________________________ 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
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users