Abstract

In this paper we introduce a visual approach to functional programming with PLaSM, a design language used for geometric programming and the parametric generation of CAD models. A visual diagram is generated according to very few simple rules, and may be used both for automatically generating the corresponding PLaSM code and for the specification and distribution of computer tasks to be concurrently run in a multithread environment, either single or multi-host. The visual diagram of a computation may be used as a tool to make the code debugging easier and interactive, since it allows for inspecting each value in the functional environment with a single point-and-click interaction paradigm, as well as a user-interface to powerful generative CAD environments. In order to develop parametric CAD applications to be used for training, analysis, manufacturing or gaming, a development of geometric models by using some programming language is quite always needed. Two main options are available, corresponding to either using libraries of geometric classes embedded into C/C++ (less frequently Java) or using specialized data languages based on XML. In order to develop in the first framework, expert programmers are needed who are skilled both in object-oriented programming and in 3D graphics (as an example consider the CAAV5 application framework by Dassault Systemes). In the second approach, authoring tools exist to support the user through graphical interfaces connected to the CAD system. Both the approaches have drawbacks that limit their diffusion among interested but non-expert users (students, architects, product engineers and designers, etc.). In particular, object-oriented techniques are quite difficult for the final users, i.e. the expert of the application field, who is not required to be a professional programmer and has no specific programming interest or training. The authoring approach offers every user simple interactive tools that everybody can easily learn to use. However, these tools lack the power for generating full-featured and detailed models of very complex assemblies. Even worst, since they produce data files based on quite simple description languages, it is pretty hard to reuse or update previously developed models, even when a closed proprietary format is not used. Conversely, the design language PLaSM (10, 7, 6), a geometric extension of Backus FL (1), provides the full power of a programming language (with support for conditional, recursion, higher-level functional abstraction, etc.) while being geometry-oriented, with dimension-independent geometric primitives and operators, allowing very terse definitions of highly complex models. The generated objects and assemblies can then be exported in several formats and rendered by a VRML browser or imported into Java3D applications. The main goal of this paper is to discuss the design of a visual approach to geometric programming with PLaSM. To provide a geometric language with a visual programming interface may strongly ease, and mostly automate, the development and debugging of complex, reusable and geometrically accurate parts and assemblies. The use of visual aids in the programming world at-large was often successful. Many specialized visual languages have been proposed for very different applications, such as DOODLE (3) for OO databases and Datavis (5) for scientific visualization. All of these visual languages carry with them the complexity of the symbolic languages they express. In the following sections, the paper will introduce the main ideas about parsing and syntax of a visual notation that is equivalent to the textual PLaSM language. Such a notation will allow the expert user to better understand, optimize and debug a PLaSM source script, and will give the novice user a simple and easy-to-use tool to generate geometric models and assemblies of high complexity. The prototype implementation of the visual language here discussed was

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.