Editing User:KeshaSShah/GSoC13/Reports


Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
=Summary of GSOC Project=
This is the first year in which I was eligible for GSoC program and was selected by the highly esteemed open source community BRL-CAD. Before joining the project, I had just the glimpse of how large code bases are maintained, but had never got hands on experience with them. I used git version control, but that just limited to handling my college project.
I would like to rewind and fast-forward the 4 beautiful months of my life, the best in terms of experience and knowledge gaining and learning summer quickly below-
Initially, before the project submission deadline, I submitted few small and pretty code refactoring patches to BRL-CAD to get myself famaliar with svn version control system and other basics for working with gsoc project.
Upto the student selection date, I worked on an issue of github to get famaliar with github version control system, on which STEPcode is managed. In this period, I got to know abt diff tools, working with git version control in a better way, gdb debugger, doxygen and how to write comments and observed some good tactics related to coding followed in industry, like taking minute care from declaring variable names to introducing magic numbers and to see that in future there will be no false positives and bugs introduced that would create problem in long run.
In between the selection period and the actual program period, it was the community bonding period as well as time for release process of BRL-CAD 7.24.0. I helped in formatting the release notes for this major release and got some experience with release procedure.
After the actual beginning of the program I worked with open issues of github and got it merged on the mainstream. One was removing all cppcheck warnings from stepcode. There were mainly 6 types of warnings reported in STEPcode by cppcheck which included unused variables, preference for preincrement/decrement, sscanf() to prevent overflow, strncpy not '\0' terminated, C style pointer casting and reducing the scope. After clearing those,  I ran cppcheck on brlcad trunk and uploaded the output to refactoring page of brlcad. Also, I made a patch for preference for preincrement/decrement from that output and cleared those warnings from cppcheck on BRL-CAD sources.
The next issue I worked on was installing the headers from the central files used in the minimal example. This included installing headers from 10 directories of stepcode. Now, anyone can just do sudo make install and start using the API's like any other library.
After that, I worked on checking the step-g importer on brlcad and wrote regression tests checking the step-g importer with 3 small and simple step models. I also read and knew about how to use anything from net with a copyright and use the license. I had never dealt with those kind of scenes before.This test will confirm the working of step-g importer and check for the geometry by checking volume > 0. I also looked upon the todo task on brlcad wiki and deleted those which were already done and added a prototype and Todo comments in the trunk to make it easily visible and more organized. These patches are still awaiting review by mentors.
I forgot to mention about my experience with STEPbot, my experiment with a bot for channel #stepcode on IRC. And one fine evening, when I logged on to IRC, I was surprised to see an infobot similar to that on #brlcad already implemented  and hence the logs of that channel could be archived very easily.
A huge thanks to Mark, my mentor who has been the best mentor I could ever have. He had been by my side at every 'step' of my project guiding me and providing quick response and feedback of my work and effective guidelines throughout the project. Thank you Sean. You are the best project manager I ever saw. Along-with the help in technical aspects, I loved how you used to motivate and inspire me. Also, I liked your way of getting answers from me instead of giving solution directly,no matter if it took an hour for a simple thing. :) Thanks Cliff, Erik and all other GSoC students who had been as a support anytime in the last 4 months. I could not imagine my project being complete without you guys. Awesome, cool community, i must say. :) Thanks all once again.
Future plans - In past a week or so, I observed that a lot of people were posting queries related to STEPcode. They were asking for good tutorials or easy-to-understand links. So, I think, I would first make tutorial for beginners on STEPcode. And next, after that I am willing to get my hands on step exporter. My plans till next summer is to work and get familiar with the step-exporter and dedicate my next summer to it. 
You just walked with me on my journey of past 4 months. I know, this has been too long and thanks for your precious time reading this. Hope you enjoyed the walk. Below are my daily logs and reports.
Three Cheers for this awesome summer !
=Week (-1) : Familiarizing Phase=  
=Week (-1) : Familiarizing Phase=  
==April 19-22==
==April 19-22==
Line 432: Line 403:
*All done
*All done
==August 28==
==August 29==
*All clean commit
*All clean commit
*Generated merge request
*Generated merge request
==August 29==
*Made absolute paths relative by removing "{CMAKE_INSTALL_PREFIX}/" (reason: discussion on IRC)
*Merged https://github.com/stepcode/stepcode/pull/254
*Closed the issue. Done with open work of stepCode :)
==August 30==
* Discussion with Sean on IRC to understand what needs to be done.
* Updating trunk
* Compiling and building. Successfully ran mged and archer from source.
* Next goal: Understanding geometry conversions.
* Manual 4- Geometry Conversion
* http://brlcad.org/private/geometry/
* Manual 2- MGED. Playing with geometry in mged.
==August 31==
* "pick a few of the importers, say dxf-g, 3dm-g, and stl-g.find some geometry, import them, view them. its' not just to look at it -- it's to understand what you imported, how you specified that import, what hierarchy resulted after import. grabcad.com has a ton of stuff. google can give you lots of stuff (just search for "filetype:obj truck" or "filetype:dxf boat" for example)"
* "once you're comfortable and AFTER you've used three other converters, give the step-g importer a try on something 1) using 7.22.0 then 2) using trunk"
=Week 12=
==September 2==
*Surfing on web about CAD conversions like http://blog.grabcad.com/2013/05/tips-for-converting-cad-data/
*Grabcad contains very nice models- Most of them for step.
*Downloaded around 15 models(for use within 2-3 days) and some other formats.
*Tried with an importer dxf-g and here are the issues I came across. (asked them on IRC to Sean and Cliff, but waiting for their response)
*EG-FILE Layers.jpg:
*My screenshot after conversion:
*In this, if you view both figures, two shapes are missing. Does it mean that the conversion is lossy and can it be corrected so that the missing two shapes also get imported correctly ?
*Also, for this, the .jpg file was available, as to how it looks, but for those whose I don't get, how do I confirm that I am viewing it correctly and the hierarchy that resulted after the import is correct ?
*Hope I get answers to them quickly :)
==September 3==
*Tried with more geometry conversions from the format 3dm-g,dxf-g,obj-g, but there are still some questions that concern me and haven't got appropriate reasoning as to why is it happens so..
*two questions from yesterday's log. (figure/.g file not given then?) (lossy conversion)
*Many a times, when I do export, some objects are exported correctly, but it ends with a segmentation fault (almost 50% of those I tried)
*The material property disappears after conversion. The mater and color related information is lost after conversion. Is it normal ?
*Sometimes, converting gives more layers and objects as compared to the original one. Where did the extra regions come from ? (eg-pumpkin example in brlcad.org/private/geometry)
*Will try with 1-2 step conversion now to see if it runs the same way.
*I think, Sean is busy, anybody who reads my queries and has answer to them, please contact me on IRC (nick:kesha/kimzzzz).
==September 4-5-6==
* Doing with some more geometry conversions.
* Paryushan atthai
=Week 13=
==September 10==
* Cleared a point of misunderstanding- all 3D models should not necessarily work. We just have to find a few that work. Previously I was thinking that each importer should work and was trying with many but Sean said, 2-3 of few types would be enough.
*"To reiterate the purpose, we want to know if we made step-g worse at some point in the past.  You'll have to correctly compile and run different versions of the step-g importer, test some geometry with those versions, so you can say with certainty whether a problem was introduced, whether it's better, or anything else actionable"
*Got an idea how importing should be done and look like with various formats.
==September 11==
* In the beginning, tried with 2-3 models of STEP and imported them with version 7.22.0.
*Found a model, d.stp from starseeker's library ViaOpenBooks, which had gotten worse now and worked well with 7.14.7.
*In between the present and 7.14.7, somewhere it is breaking. I need to find that revision.
*7.24.0, 7.22.0 and r55000, had very little difference, but all of them smelled bad.
*First, I was not clear as to how so many versions can be maintained simultaneously and Sean suggested updating svn and deleting build directory every time.
==September 12==
* In revisions long back, cmake was not used, instead an autogen script generated configure and ./configure would compile.
* Also, there was no instruction given to make to build step-g.
* Command-> cd src/conv/step && make step-g &&./step-g -o ....
* Getting some memory-leakage and other errors with different revisions.
* Also, got an idea abt the revisions of our interest- http://paste.kde.org/pad666f93/
* In stepcode, Mark had deleted two files mkprobe and dataprobe but forgot to remove it from cmake. Updated CMakeLists.txt  https://github.com/stepcode/stepcode/commit/a297f733dda932127e4a842a66b157b87bfc9677
==September 13==
* While the different versions are being updated and compiled (it takes a lot of time due to poor connectivity) , made a refactoring patch - https://sourceforge.net/p/brlcad/patches/237/
==September 14==
*From the list of about 800 revisions to try, 500 have been clearly ommitted. The problem is somewhere within remaining 300.
*Asked for *technical* work as demanded by point 5.
==September 15==
*known the need of regression test for STEP. The exporter is not yet ready, I will just check for the importer.
*Saw how other regression tests work.
*Side by Side compiling more revisions
=Week 14=
==September 16==
* Made first version of how regression test should look like.
* Got feedback abt it from Sean
* no need to touch file (make a file if the file doesn't exist)
* Add some sort of validation to check geometry (eg Volume)
* Use the step file which is small and has right to re-distribute it.
* Update and use svn version control and upload it proper patch format.
==September 17==
* Working on the regression test now and the four main points of modifications as suggested by Sean.
==September 18==
* Made regression test checking three stepfiles. Incorporated checking volume.
* First, it was giving error that the average total value was in float and can't be compared to less than by -lt 0, so truncated the part after '.' and added 1 to the volume.
* Regression test almost ready.
* unsure abt the license and copyrights of the model. http://www.steptools.com/copyright.html
==September 19==
* Updated patch on sf.net.
* Again in the next patch, added copyrights according to my understanding and submitted.
* Output of "make regress-step2g" -> http://paste.kde.org/p0a5a98de/
* The 3 stepfiles when importer and viewed in archer looks like the following :
** instance_stepfile1.g
** instance_stepfile2.g
** instance_stepfile3.g
==September 20==
*Cleaned all " Prefer prefix ++/-- operators for non-primitive types. " issues from http://brlcad.org/wiki/Code_Cleanup#CPPCHECK-CLEANUP  with reference to patch http://sourceforge.net/p/brlcad/patches/219/#3f4d - new patch after updating trunk.
*http://brlcad.org/wiki/Deuces#Code Remove those related to moving header comments. Had tested all of those and confirmed that they were done. Keeping in task list could probably waste some other dev's time in future.
*http://brlcad.org/wiki/Deuces#Implement_a_primitive_surface_area_function Removed from the list, whose area had been already calculated and in the rest added a prototype function and TODO in it. https://sourceforge.net/p/brlcad/patches/239/
*http://brlcad.org/wiki/Deuces#Implement_a_primitive_volume_function Removed from the list, whose volume had been already calculated and in the rest added a prototype function and TODO in it. https://sourceforge.net/p/brlcad/patches/240/
*http://brlcad.org/wiki/Deuces#Implement_a_primitive_centroid_function  Removed from the list, whose centroid had been already calculated and in the rest added a prototype function and TODO in it. https://sourceforge.net/p/brlcad/patches/241/
*http://brlcad.org/wiki/Deuces#Implement_a_primitive_UV-mapping_callback Removed from the list, whose uv had been already calculated and in the rest added a prototype function and TODO in it. https://sourceforge.net/p/brlcad/patches/242/

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)