< User:Bhollister
Revision as of 19:37, 15 July 2015 by Bhollister (talk | contribs) (Project Schedule)


Command-line Editing NMG Data-structures in BRL-CAD


This project will expose some of the low-level NMG routines to a command-line interface. Users will be able to add and remove various parts of the NMG data structure, such as regions and shells, along with manipulation of vertices, edges, and faces. Users will see the results displayed in either MGED or Archer.

Additional info:

Benefits to BRL-CAD

BRL-CAD will gain a command-line interface for directly editing NMG data- structures via Archer. The new features will be:

  • Ability to select subsets of an NMG via the command-line.
  • Ability to add and remove elements of an NMG while still satisfying validity constraints through the command-line.
  • Ability to move parts of an NMG via the command-line.
  • Visual feedback in the geometry window.


The implementation will consist of C code integrated with relevant modules (/librt/primitives/nmg/, etc.).

Project Details

See MGED CMD nmg. The new command design is similar to brep.

Project Schedule


  • Week 1: Add placeholder commands by following example in commit 46507, which adds the exist command. Make sure that commands can be added and data is reflected internally.
  • Week 2: Identify ways of specifying to the command-line the parts of model to be changed. For example, how to specify a vertex to a command that removes a vertex and update the NMG model in the render window.
  • Week 3: Should be able to implement commands now. Allow two weeks to complete each type of command. Starting this week with NMG CONSTRUCTION ROUTINES.
  • Week 4: CONSTRUCTION ROUTINES - initial take is to provide CLI for existing internal nmg_* api routines.
  • Week 5: CONSTRUCTION ROUTINES - initial take is to provide CLI for existing internal nmg_* api routines.
  • Week 8: High-level design of nmg command. Implement face selection / face removal.
  • Week 9:
  • Week 10:
  • Week 11:
  • Week 12:
  • Week 13: Test / Feedback from users. May need to iterate on prior weeks.
  • Week 14: Final fixes and clean-up.