Difference between revisions of "User:Krajkreddy/GSOC14/proposal"

From BRL-CAD
(BRL-CAD current Status of Primitives)
(References)
Line 72: Line 72:
 
[3] http://brlcad.org/wiki/BRL-CAD_Primitives
 
[3] http://brlcad.org/wiki/BRL-CAD_Primitives
  
[4] http://sourceforge.net/p/brlcad/mailman/message/31785283/
+
[4] http://brlcad.org/wiki/User:Krajkreddy/GSOC14/proposal/primitives_details
 +
 
 +
[5] http://sourceforge.net/p/brlcad/mailman/message/31785283/

Revision as of 09:20, 16 March 2014

Personnel Information

Name K. Raj Koushik Reddy
Email Address kraj.reddy@lnmiit.ac.in
IRC(nick) raj12lnm
github raj12lnm
Time Zone UTC +0530

Project Information

Project Title

Python Geometry : Python Bindings for BRL-CAD Geometry

Brief summary of Project

This project aims to wrap BRL-CAD's primitives in python. BRL-CAD in python is an ongoing effort to wrap BRL-CAD functionality in python [1]. Further this project aims at completing the primitives wrapping. With each wrap tests and examples will be added to ensure agility and efficiency. There are total 20 primitives left to be wrapped. This include the brlcad primitive BOT, CLINE, DSP, EBM, GRIP, ARS, BOT, CLINE, DSP, EBM, GRIP, HALF, HF, METABALL, NURB, PG, SUBMODEL and PNTS.

Detailed project description

Introduction

The python-bindings allows for easy and simple access to the BRL-CAD APIs for geometry construction and manipulation. These bindings work by parsing the header files for the installed version of BRL-CAD, then construct a standard library of abstractions around the bindings.

BRL-CAD in Python, A brief Summary

BRL-CAD python is an ongoing effort to use the brl-cad APIs in python. There are several advantage of binding BRL-CAD APIs in python. Primere among them is to easily modify certain functionalities. To use the advantage of a strong Object-Oriented version of python and its scripting way, which makes it easier for developers to make quick changes. Python-brlcad uses ctypes to wrap the BRL_CAD libraries. This could have been done by hard-coding the loading of the libraries in python files, which would have meant tight coupling to the BRL-CAD version they wrap. Instead of doing that, a dynamic wrapper generator ctypesgen is used which reads the BRL-CAD headers (*.h), and generate the ctypes wrapper code which is then written into a python file.

BRL-CAD current Status of Primitives

Currently some BRL-CAD primitives have been wrapped in python-brlcad. This include ARBN, ARB, EHY, ELL, ELL, EPA, ETO, EXTRUDE, HYP, PIPE, PARTICLE, REVOLVE, RHC, RPC, SKETCH, TGC, REC, TOR, COMBINATION and VOL. This project will extend the list to add all the primitives in python-brlcad. Implemetation details of these is added at [4]

Goal of this Project

  • This project aims at wrapping all the primitives in python.
  • Also tests and examples of all the primitives will be added as part of the project.


Sample Codes and Tools

I have already wrapped vol primitive in python. This has been merged by Csaba in his repository. Details can be found at [2].

Importance of the Project

This project will complete the primitive wrappings for python. Thus marking an important completion for development of python-brlcad project.

Time availability

Coding period GSOC time line falls in my holidays. My University exams finishes on 15th May 2014 and my joining date at Sapient Nitro (the software company where I have been recruited) will fall in mid- September or October. Thus I will be free completely. I can spend around 40-45 hours a week.

Development schedule

My preparation for the Project

  • My preparation for this project began by looking at the development – logs of previous students..
  • Further I contacted few of them (Kesha and Mohit from GSOC 2013) who gave insights on choosing a project.
  • Later I introduced myself on the list and asked for help regarding projects
  • Then I asked for some work on python repository. Csaba (javampire on #IRC) helped me with that.
  • I got hold of the CVS system used by python-brlcad (git) and brlcad (svn) main repository, installed working environment (Pycharm)
  • I successfully submitted a pull request (with VOL primitive) which was merged in the repository. [2]

Why BRL-CAD?

BRL-CAD as an organization has well documented procedures. It has a defined structure for GSOC students. I tried with other organizations but found BRL-CAD as more welcoming for students with intermediate skills.

Why me?

References

[1] https://github.com/kanzure/python-brlcad

[2] https://github.com/ncsaba/python-brlcad/pull/1

[3] http://brlcad.org/wiki/BRL-CAD_Primitives

[4] http://brlcad.org/wiki/User:Krajkreddy/GSOC14/proposal/primitives_details

[5] http://sourceforge.net/p/brlcad/mailman/message/31785283/