- Note: The following is from a thread on the BRL-CAD help forum
A user on the BRL-CAD help forum recently asked twenty rather insightful and detailed questions regarding MGED that I felt would be a good idea to share with those on the mailing lists as well. Some of the questions frequently come up in discussion, so hopefully these answers will be of use to many others out there as well. Also, note that some of the questions are covered in the BRL-CAD tutorial series available at http://brlcad.org under the Documents section. Users are encouraged to suggest other documents and documentation that would be of use. As always, if folks aren't happy with an answer or state of affairs, please feel free to post a feature request at https://sourceforge.net/tracker/?group_id=3D105292&atid=3D640805 (with one request per submission and lots of detail). The questions from this particular user along with my answers are provided in following below.
- 1 Editing, viewing, and correcting objects
- 2 Matrix editing objects
- 3 Resetting object vertex (V)
- 4 Editing general cone radii
- 5 Editing solid parameters A and B
- 6 Picking combination and primary objects
- 7 Translating objects
- 8 Copying text from the command window ('journal')
- 9 Fitting view to window
- 10 Cutting a solid to make a combination
- 11 Panning the view
- 12 Translating objects away from visible axes
- 13 Interrogate mged for axis changes
- 14 Creating a plane (2D) object
- 15 Creatng a non-smooth surface
- 16 Constraining angles of rotated components
- 17 Repeating construction of an object (pattern editing)
- 18 Batching or scripting mged commands
- 19 Lighting and the mater command
- 20 Translating and rotating objects
Editing, viewing, and correcting objects
- I am trying to create case walls for ammo, gun tubes, etc. and the
- way I'm doing it is by making inner and outer walls using rcc and trc
- primitives, and I have figured out that I need to make a combination
- of the two, then hide the primitives and draw the comb, and then do rt
- to see the finished product. That's fine. But if I
- translate or rotate the inner wall, for example, away from the point
- of creation, I cannot seem to figure out a way to restore it to its
- original point so that it perfectly lines up concentric with the outer
- wall. Can this be done with the mouse, or must I use the keyboard and
- editing commands?
- There are reset and apply options on the Edit menu when you're
- in an edit mode on a primitive. The intent is that you incrementally
- apply/accept changes as you are happy with them or reject/reset them
- if you are not. As for your create -> hide -> draw steps, you can
- collapse those with a "B objectname" which will erase everything else
- and draw 'objectname' in one step.
Matrix editing objects
- Once I create a combination, is the proper way to modify the
- combination via matrix edits, or is there some other way? I understand
- that matrix edits really mean applying the same change to all elements
- of an entity (primitives within a comb, for example), and then pushing
- the common change to all elements.
- Presuming you mean 3D manipulations (translation, rotation,
- scaling, etc) instead of structural (adding new CSG elements), then
- yes--matrix edit (aka "object edit") is the means to modify. Matrix
- edit doesn't have to be on everything in a given combination, but it
- is a hierarchical tree so if you apply a matrix to object A that
- references objects B and C, the matrix applies to that entier
- hierarchy. Whether you push the matris is a modeling design decision,
- which I personally do not like performing so that editing operations
- retain a useful local coordinate systems. Others have different
- preferences for different reasons.
Resetting object vertex (V)
- When I move an rcc or trc, I want to reset where V is, but there
- seems to be no command that allows me to reset V to 0 0 0. Is there
- Select translate on the Edit menu and then type:
mged> p 0 0 0
Editing general cone radii
- Is there a way to modify the radius of rcc's and trc's? I can't
- find a 'set R' command in the prim selection menu anywhere.
- rcc's and trc's are all fundamentally a generalized cone
- represented by two vectors at both ends of the cone. To change the
- radius, select either the "Set A,B" or "Set C,D" menu option, and
mged> p ###
- for whatever ### size you want to set it to.
Editing solid parameters A and B
- When I try to set A and B at the same time, thinking if I make
- them the same, the radius will be uniform, but it tends to squash
- them to a single point. This leads me to believe that I am setting A
- and B to the same coordinates in space, not the same length (radius).
- Is this a true statement? (I tend to think of geometries in terms of
- their respective dimensions but it seems like with MGED, you have to
- know exactly where in space everything is, and that is not really
- desirable for me most of the time.)
- Sounds like the size value you're using is way too small. It
- should be the absolute size using whatever units you're operating
- with, just a single value (e.g., "p 1000"), not multiple values for A
- and B. Doing "Set A,B" basically means "keep the base circular"
- instead of ellipsoidal.
Picking combination and primary objects
- I see that you can pick which combs you want to modify under the
- comb editor, but the same does not apply for the prim editor. The
- prim editor seems to be only or generating new prims. Is that a true
- No, it's not true that it only generates new primitives. It's
- just lacking a drop-down box because there are generally way too
- many primitives for that to be a useful selection mechanism with any
- real model and its use is often discouraged for other reasons (it's
- very susceptible to human error that in ways that are difficult to
- recover from--use with caution). Type the name of the primitive
- you wish to edit into the 'Name:' field and hit enter. The values
- should update to show that primitive.
- When trying to translate a combination, where is the 'Z move'? I
- see only 'X move', 'Y move', 'XY move'. Answer: You may have to select
- the combination and use the translate or tra commands to reposition
- the object.
- Very good question! The naming convention used on the labels
- should be clarified, but it's trivial "once you know". The X and Y
- don't refer to the 3D coordinates but rather to the 2D view.. So if
- you are looking at front, left, right, or rear views, then the z axis
- runs up and down the graphics window vertically, so selecting the "X
- Move" option will translate up and down the Z axis. Similarly, if
- you're looking from a more complex/arbitrary view, doing an X Move or
- Y move will perform more complex movements than just constrained to a
- given coordinate axis. The labels should probably say something like
- "Pan object horizontally" and "Pan object vertically" for X Move and Y
- Move respectively with the XY Move meaning something like just "Pan
Copying text from the command window ('journal')
- Is there a way to block-copy text from the command window, or save
- it as a buffer/text file, in case you want to record the steps it
- took you to do something?
- I tried using the journal command and even tried to view the file
- while a session was open but it was a zero-length file with none of
- my session saved.
- The journal command only begins recording from the moment you type
- journal, and presently doesn't write out the journal entries until
- you close your session. It's a limitation of the implementation.
- You should also be able to copy/paste any text in the command window
- using usual copy/paste methods (select region and click middle mouse
- button in a text buffer in another xterm window, for example).
Fitting view to window
- Is there a 'fit to window' zoom feature?
- The autoview command automatically resizes geometry when it is
- loaded and it's intentionally 50% the bounding of your display size
- so that it's guaranteed to be fully displayed at any orientation.
- You can 'zoom 2' to make it fit more tightly, and can similarly wrap
- those two commands into a proc of your own. autoview can be run on-
- demand and is automatically run whenever you 'e' or 'draw' something
- among a variety of other commands.
Cutting a solid to make a combination
- How do you use a plane to slice part of a solid to make a
- combination (e.g., a plane cutting a box at an angle and just using
- the resulting portion of the box)?
- The recommended approach is to create an arb8 or similar box
- shape that is positioned exactly how you want it and subtract or
- intersect as desired. You can also use a "half" primitive, which
- stands for halfspace (which is an infinite plane where half the space
- is solid the other half is empty) though the performance is
- non-optimal for real models.
Panning the view
- Can you pan the view before you raytrace so that you can see more
- of the geometry in the rt window (fb) but without having to physically
- move the geometry around?
- Not sure I understand this question fully, but it sounds like the
- answer is "yes". You can raytrace from any azimuth/elevation as well
- as from any arbitrary view whether panned or not. By default in
- mged, when you run rt', it will invoke the raytracer with a view that
- matches the geometry window's view so if you're not in an edit mode,
- you can change the view to whatever you want without editing or
- modifying geometry.
Translating objects away from visible axes
- When you change (translate) the body away from the blue xyz axes,
- does that actually change the coordinates as well, or is that only a
- visual change (i.e. now your coordinates referenced to the origin are
- totally different than from when you started)?
- Depends whether you're in an edit mode. The blue axes you're
- referring to, I presume, are the "View" axes which only refer to the
- orientation of the view and which is always at the center. The green
- axes are the model axes, which indicate where an object is at, and
- when coupled with the white edit axes, show you how edits are being
Interrogate mged for axis changes
- Is there any way to interrogate MGED and find out where your new
- (translated) xyz axes are relative to the original origin if you
- moved the object geometry around (i.e. new 0,0,0 =3D old x,y,z +
- translation matrix)?
- Yes, turn on the Faceplate option on the Misc menu.. that option
- really should be set by default. Be sure to run File->Create/
- Update .mgedrc so that it keeps your settings between runs of mged.
Creating a plane (2D) object
- How can you create just a plane, triangle, etc. if you need one?
- Do you just make a 3D primitive with zero thickness?
- This one is somewhat philosophical. BRL-CAD is predominantly a
- 3D solid modeler so creating 2D or 1D objects is not only highly
- discouraged but generally rather complicated. That said, halfspaces
- work well instead of planes, arb5's instead of triangles, and spheres
- instead of points. Alternatively, in the 2D realm, you can use the
- sketch primitive and the sketcher to make purely 2D objects, though
- the use of those are generally limited to extrusions. There is a way
- to manually create triangles and meshes, but it's non-trivial and
- similarly limited in use until you form a closed 3D shape.
Creatng a non-smooth surface
- How do you make a non-smooth surface such as a corrugated circular
- surface surrounding a cylinder?
- There are two methods to achieve that, both with their tradeoffs.
- The CSG approach would have you create a cylindrical pattern that
- matches your corrugation pattern. For example, you can make something
- like corrugated duct tubes by subtracting a linearly translated
- pattern of torii from a cylinder--create a similar smaller version
- to hollow out the middle. Alternatively, you could use a 2D extrusion
- approach for something as simple as a cylinder where you model the
- shape in 2D using a sketch primitive and combine that with an
- extrude operation, and you'd have it. You can see an example of the
- CSG approach using the pattern tool at http://ftp.brlcad.org/tmp/gear/
- where I create a simple 6-tooth gear using a relatively simple tooth
Constraining angles of rotated components
- How do you set the angle that an articulated rotating component
- may sit at (e.g., a hinged part or arm)? Is such a thing possible?
- It is possible, but frankly not a strong point of the package.
- You'd use a joint/constraint system and have it solve for various
- angles. It's quite difficult to use frankly, and generally easier to
- perform the rotation using one of several rotation commands (see the
- MGED Quick Reference cheat sheet)--at least one of those is dedicated
- to rotation via angles. You cannot set the angle as an automatically
- resolved constraint at the moment.
Repeating construction of an object (pattern editing)
- If you wanted to distribute a common structure on the inside of a
- cylinder at a fixed spacing, how would you go about doing something
- like that (e.g., a structural stiffener)?
- If I understand the question correctly, the pattern tool should
- do the trick (on the Tools menu). Probably a cylindrical pattern
- with some periodic/fixed spacing. Basically the same as the gear I
- mentioned above, but with a different base object being duplicated.
Batching or scripting mged commands
- Can you take a series of MGED commands to build a geometry and
- batch-file it and just have MGED run the batch file in order to
- autocreate geometries?
- Yes! Create your text file and run mged using the -c option for
- command/classic mode. You can do something like
$ mged -c file.g < my_transcript.txt
- or here now documents like:
$ mged -c file.g <<EOF > my_log.txt 2>&1 `cat my_transcript.txt` EOF
- and more. You can also use the -c option to run any individual mged
- command without it bringing up the entire mged environment, e.g.,
$ mged -c myfile.g tops
Lighting and the mater command
- I have used the mater command to make a combination white but it
- shows up gray in rt. How do I fix that? Is that a lighting property?
- What about the fact that the wireframe in the regular MGED graphics
- window is always red?
- That is a lighting property and is dependent upon the lights in
- the scene. If you define no lighting sources, rt creates default
- lights for you. First, make sure you really are looking at what you
- think you're seeing by setting the object's color to green or blue
- instead of white. If you don't, then you're doing something else
- wrong. The mater command is supposed to be used on regions, which
- gets into a whole hierarchy discussion that is far beyond this forum
- and better explained over the span of the tutorial series. The fact
- that you set a color on a non-region is probably why the wireframe is
- still red.
Translating and rotating objects
- When I shift and rotate geometry around so that it fits into the
- viewing area (a) does that actually reposition the geometry to a new
- place, or is that just visual; (b) is there a 'reset' or 'undo'
- command to reset the geometry to its original position; and (c) is there a way
- to precisely re-zero the geometry?
A20: This sounds a lot like question 13 and the answer depends on whether you're in an edit mode or not. If the edit menu lists a bunch of editing options, along with options to Accept/Apply/Reset/Reject, then you are in an edit mode and changes to the geometry window may be actual edits (it depends what buttons you press--see the cheat sheet on the main website documents section). If you don't see Accept/Apply/Reset/Reject options then nothing you do in the graphics window will edit geometry, you're only affecting the view orientation. If you do see then, then those aforementioned Edit menu options of Reset and Reject are there to help. To precisely select a view, either use the View menu or type one of the key-bindings in the graphics window (e.g., 'f' for front, 't' for top, '3' for 35/25, '0' to stop it from spinning if you hit xyzXYZ).