Editing User:Amarjeet Singh Kapoor/GSoC2016/Project

From BRL-CAD

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:
  
= '''[https://github.com/openscad/openscad/wiki/Project%3A-Form-based-script-parameterization User Interface for Customizing Models]''' =
+
= '''[https://github.com/openscad/openscad/wiki/Project%3A-Form-based-script-parameterization Form-based Customization]''' =
  
 
=='''Personal Information'''==
 
=='''Personal Information'''==
Line 37: Line 37:
  
 
== '''Project Information''' ==
 
== '''Project Information''' ==
 +
 +
=== '''Title: Form based script parameterization''' ===
  
 
=== '''An Overview''' ===
 
=== '''An Overview''' ===
  
This project is based on the User interface of OpenSCAD Software. The main idea of this project is to provide users with features to change certain variables or parameters in .scad file using form like interface which may include slide bar, check box, text box, ranges etc. so that we can visualize the changes in output on the basis of input side by side instead of manually changing different parameters. It will help the user able to create the templates for given model which can further be changed as per user's requirements.
+
This project is based on the User interface of OpenSCAD Software. The main idea of this project is to provide users with features to change certain variables or parameters in .scad file using form like interface which may include slide bar, check box, text box, ranges etc. so that we can visualize the changes in output on the basis of input side by side instead of manually changing different parameters. It will help the user able to create the templates for given model which can further be changed as per user’s requirements.
  
 
=== '''''Detailed Description''''' ===
 
=== '''''Detailed Description''''' ===
  
The basic implementation of the this project is almost done in form of prototype. There is need to modify structure of the project.We have to divide the task in to there parts: 
+
The basic implementation of the this project is almost done. There is need to modify some existing features and to enhance its functionality so that it could be more interactive and user friendly. We can improve its UI for parameter window by adding the following new features under the scope of this project
[[File:image05.png|thumbnail|center|150px]]
 
<dl>
 
<dt>'''Front end'''</dt>
 
<dd> It will deal with how the parameter will look to user like in form of range or spinbox etc. This part will include two parts:
 
  <dl>
 
  <dt>''Individual Parameter''</dt> 
 
  <dd>This will define how individual parameters will look like</dd>
 
  <dt>''Container Widget''</dt>
 
<dd>This will contain UI features common to all parameter. This widget will contain all parameter widget. </dd>
 
</dl></dd>
 
 
 
<dt>'''Back end '''</dt>
 
<dd>This will include the parser part that will create AST nodes and we can extract the parameters from the AST. we can use the single parser for whole .scad file or separate parser for extracting the parameters with annotations.
 
 
 
The Back end part will also include the parameter extractor and injector or the injector can be included in parameter object which will serve as interface </dd>
 
 
 
<dt>'''Interface'''</dt>
 
<dd>This will include the parameter object which will serve as interface between both Back end and Front end. Parameter object will contain information regarding each individual parameter like parameter name, default value and information how these parameter will be displayed as widgets to user.
 
Parameter object could also include the method to inject the value of individual parameter in to the AST. </dd>
 
 
 
</dl>
 
 
 
[[File:main.jpg|frame|center|200px]]
 
 
 
 
 
There is need to modify some existing features and to enhance its functionality so that it could be more interactive and user friendly. We can improve its UI for parameter window by adding the following new features under the scope of this project
 
  
 
<ol style="list-style-type: decimal;">
 
<ol style="list-style-type: decimal;">
Line 83: Line 59:
 
# If user specifies ''@parameter([1:10])'' then it will take the default input widget like it's working in its present state.
 
# If user specifies ''@parameter([1:10])'' then it will take the default input widget like it's working in its present state.
  
We will extend the code in ''ParameterEntryWidget::setValue()''for implementation purpose.
+
We will extend the code in ''ParameterEntryWidget::setValue()''for implementation purpose.  
Following will be GUI widgets that will be supported in the scope of this project:
+
[[File:image05.png|upright]]
 
 
<dl>
 
<dt>Proposed syntax</dt> <dd>parameter([ InputType,attributes],[values])</dd>
 
<dt>Input widget options</dt>
 
<dd>
 
    <ol>
 
        <li>Spinbox
 
        <ul>
 
            <li>attributes -: min value,  max value,  increment size</li>
 
            <li>E.g. parameter([“spinbox”,IS],[  MinValue : MaxValue ])</li>
 
        </ul>
 
        </li>
 
        <li>Checkbox
 
        <ul>
 
            <li>E.g. parameter([“checkbox”],[true] )</li>
 
        </ul>
 
        </li>
 
        <li>radio button<ul>
 
            <li>options -: name of first value while be default</li>
 
            <li>E.g. parameter([“radiobutton”],[firstvalue,secondvalue,...] )</li>
 
        </ul></li><li>Vector
 
        <ul>
 
            <li>Attributes -:min value ,max value, increment size</li>
 
            <li>Question -: Max number of spinbox to be supported?</li>
 
        </ul></li>
 
        <li>slider (horizontal)
 
        <ul>
 
            <li>attribute -: min value,  max value, increment size(IS)</li>
 
            <li>E.g. parameter([“Hslider”,IS],[ MinValue : MaxValue] )</li>
 
        </ul></li>
 
        <li>slider (vertical)
 
        <ul>
 
            <li>attribute -: min value  max value</li>
 
            <li>E.g. parameter([“Vslider”,IS],[ MinValue  : MaxValue] )</li>
 
           
 
        </ul></li>
 
        <li>Text-:<ul>
 
        <li>attribute-: size of text</li>
 
        <li>E.g. parameter([“Text”,size of text] )</li>
 
        </ul></li>
 
        <li>Default -: When no input parameter widget is specified like at present stage.<ul>
 
        <li>E.g. Parameter([1 : 10])</li></ul></li>
 
    </ol>
 
</dd>
 
</dl>
 
 
</p></blockquote></li>
 
</p></blockquote></li>
  
Line 151: Line 82:
  
 
e.g. We can give a save button on top of parameter list which will save the new values in the .scad file and we can give optional save button for saving the individual parameter in parameter window.
 
e.g. We can give a save button on top of parameter list which will save the new values in the .scad file and we can give optional save button for saving the individual parameter in parameter window.
 
 
 
</p></blockquote></li>
 
</p></blockquote></li>
  
Line 170: Line 99:
 
There are some issues with existing code like if we change the value in @parmameter then changes are reflected on parameter window but if we change the value of parameterized variable then no corresponding change occur on the parameter window for viewing new input widget based upon the change in value of parameterized variable we have to reopen the file.
 
There are some issues with existing code like if we change the value in @parmameter then changes are reflected on parameter window but if we change the value of parameterized variable then no corresponding change occur on the parameter window for viewing new input widget based upon the change in value of parameterized variable we have to reopen the file.
 
e.g. For an instance in following screenshot 1, everything is correct.
 
e.g. For an instance in following screenshot 1, everything is correct.
[[File:image07.png|frame|center|150px |screenshot 1]]
+
[[File:image07.png|frame|200px|left|screenshot 1]]
 
<br/>
 
<br/>
 
But if the value of G=False and resolution=[10,34,45] are changed from their initial value of G=0 and resolution=10, than result is screenshot 2 but instead it should be as per screenshot 3 which is obtained on re-opening the document.
 
But if the value of G=False and resolution=[10,34,45] are changed from their initial value of G=0 and resolution=10, than result is screenshot 2 but instead it should be as per screenshot 3 which is obtained on re-opening the document.
 
<br/>
 
<br/>
  
[[File:image06.png|frame|center|150px|screenshot 2]]
+
[[File:image06.png|frame|150px|screenshot 2]]
 
<br/>
 
<br/>
  
[[File:image03.jpg|frame|center|150px|screenshot 3]]
+
[[File:image03.jpg|frame|screenshot 3]]
 
 
We can do this by not only storing the parameters based on name only but by both name of parameter and Type of data in parameter.
 
  
 
</p></blockquote></li>
 
</p></blockquote></li>
Line 198: Line 125:
 
* Study existing parameter widget code and will try fixing some existing bugs.
 
* Study existing parameter widget code and will try fixing some existing bugs.
  
'''23rd May-9th June'''
+
'''Week 1'''
*Make Front end ( UI part) separate from rest of code. 
+
 
*Make different object for different input option to be supported.
+
* Write prototype code to add more widget options.
*Check each use case associated with each parameter widget. 
+
* Take community feedback on it.
*Improve UI 
+
 
*Take community feedback for further changes 
+
'''Week 2'''
*Documentation 
+
 
'''10th June-26th June'''
+
* Check each use case associated with it.
*Make interface between Frontend and Backend (parameter object) 
+
* Finalise the code for specifying the input parameter widget.
*Structure it to make it independent for back-end 
+
* Write documentation for this part of code.
*Code to inject parametric values in AST
+
 
*Solving issues found by other people on using this code. 
+
'''Week 3'''
*Documentation 
+
 
'''Mid term'''
+
* Revising parsing and bison which will be used later this week.
'''27th June-24July'''
+
* Figure out special features which can be associated with each input widget like step value for spin box etc.
*Start with back-end  
+
* Start writing prototype code for that.
*Take community feedback on syntax to be supported  
+
 
*Code to Parse the .scad file to recognize parameters 
+
'''Week 4'''
*Code to extract the required parameter info from (AST) 
+
 
*Write Back-end to support the user specified input widget  
+
* Complete prototype code for all use case.
*Work on feature of Grouping of Parameters. 
+
* Take community feedback on it.
 +
* Figure out way to solve existing problems with associated with parameter window.
 +
 
 +
'''Week 5'''
 +
 
 +
* Complete study of bison.
 +
* Solving problems associated with parameter window.
 +
* Documenting the new code.
 +
 
 +
'''Week 6'''
 +
 
 +
* Study the existing code which can be used for assigning new values to parameterized variables.
 +
* Writing examples for new annotation syntax.
 +
* Add feature to change single parameterized variable in .scad file.
 +
 
 +
'''Week 7'''
 +
 
 +
* Add feature of assigning new values of parameterized variable to variables in .scad file.
 +
* Documenting the code till now.
 +
* Take community feedback.
 +
 
 +
'''Week 8'''
 +
 
 +
* Add feature of Saving scad file without annotation.
 +
* Documentation of work done so far.
 +
 
 +
'''Week 9'''
 +
 
 +
* Start working on feature of Grouping of Parameters.
 +
* Documenting the code.
 +
* Take community feedback.
 +
 
 +
'''Week 10'''
 +
 
 +
* Test all the code till now.
 +
* Solving issues found by other people on using this code.
 +
* Study the UI of some existing software and take people's feedback on how to improve it.
 +
* Write example .scad file for the new features added after mid term.
 +
 
 +
'''Week 11-12'''
 +
 
 +
* Take community feedback on UI of parameter window.
 +
* Improve UI of parameter window.
 +
* Write user document for all features added during this time.
 +
 
 +
'''Week 13'''
  
'''25th July -14th August'''
+
* More testing and cleaning.
*Add feature to save current value of parameter as default 
+
* Time to make up for missed milestone (if any).
*Write example .scad file for the new features added after mid term. 
 
*Add feature of Saving scad file without annotation. 
 
*Add any Additional feature required. 
 
  
'''15th August- 23August'''
+
'''Week 14'''
*Testing and cleaning. 
 
*Time to make up for missed milestone (if any). 
 
*Finalize everything 
 
  
'''23August onwards'''
+
* '''FINAL EVALUATION'''
  
*'''FINAL EVALUATION'''
 
 
<br />
 
<br />
  

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)