User:Ali Haydar/GSOC19/project


Annotations: Implement more annotation support: labels, notes, and dimensions

The project is divided into three concepts:

  • extending the MGED and Archer commands to inculde the new annotation types:
  • calculating each type templet dimensions if nedded like the fields in the annotation box
  • drawing the new types in the wire frame view

extending the MGED and Archer commands to inculde the new Annotations types

  • New types of annotaions :
    • dimention line
    • angular dimention
    • multible lables in multible fields box
    • label in a box
    • single or multible line note in a box
  • the extending in mged will be like:

mged> in
Enter name of solid: annot_1
Enter solid type: annot
Enter annotation type : dimension_line
"sudo " 
Enter starting point of the dimention line 
Enter end point of the dimention line 
Enter dimension ( or the dimention can be calculated (this choice can be taken if the user wants to override the actual dimention )
  • all the annotions types should be entered in the same annotaion primative so this will require modifications on the current primative
  • We can consider the same approach of manual annotions as an example in the multible field annotion the usuer will provide the number of fields and the lables or we can consider half manual abrouch a spcific characteer like (@) when encounterd the program considers it the end of the field and the label existed in it and the end of this label vlist( this will help with the calculation of the the field ( cell ) dimentions so the user enters all the lables in the same line.( this can be discused withe the socity)

Example : Enter the text label: sudo1@sudo2 this annotation will be constructed from two vlist and calculte the dimentions accordingly.

  • The leader lines will be constructed in correspondance with each type.
  • rendering each primative type in wire frame.

calculating each type dimentions if nedded like the fields in the annotation box

  • in the case of the single line note in a box once the annotation became a vlist the containing box dimentions will be calculated doing simple mathematical operation on the vlist points coordinates

wedth=[(max X+const)-(min X+ const)] the same for the hight, since the box will be drawn with respect to the refrance point of the annotation just like the lable.

  • in the case of multible cells annotation if we considerd the half manual approch each label will be a separat vlist and the cell dimentions can be calcuated as above.

drawing the new types in the wire frame view

  • all the new types of annotaions will be converted to a vlist either inside the lable vlist or separate one and can be drawn in the same way as the lable .
  • in the case of angular dimentions we will need to add two appropriate leader lines and an arc also we have to choose an appropriate place for the lable containng the value of the angle.
  • For the rendering part, we will try to have annotation on a rendered image.

attatch the annotation to apoint from a solid

in this case the annotated opjects name hase to be selected and pass the point to be calculated as annotated point like the center of a circl and we have to make some call back function to recalculate the point at each change if the solid moves the annotaion will move with it .


  • Fixing the wrong depiction with OpenGl in windows.
  • Extending the MGED and Archer commands to inculde the new Annotations types.
  • Calculating the needed dimentions for the new annotaions and implimenting the necessary leader lines.
  • Drawing the new types in wire frame view.
  • Documentation Support