Sunday, December 2, 2007

More realistic images with IBL

Using IBL, 'Image based lighting', you can get more realistic results when you render your 3D model with NX render. What it does is, instead of using single-point light sources like a bulb, it simulates the actual environment of your 'stage', by wrapping an image around your model and then mapping the light on the surface to your model.

You need to define an image for this purpose, called an HDRI palette file. Actually NX comes with some HDRI images out of the box, but you can use other .hdr files if you like (here's a source)

Some may remember this technique from recent games, starting with Half-Life II. Adds an extra amount of time to your rendering process, but I guess you'll agree that it's worth the wait.

Here are a few sample .HDR files, mostly nature stuff, from the Lightworks* user community website: here, here and here.

*: NX uses the Lightworks engine for rendering functionality. They even have some tutorials for NX3 rendering. Although it's outdated, it should still be useful if you're a newbie.

Saturday, November 3, 2007

NX4 License server and Windows Vista


There hasn't been an official statement yet stating which NX version will fully support Vista, but nowadays I hear quite a few people complaining that they've just bought a laptop, and noticed that it is preconfigured with Vista instead of Windows XP. I'd run back to the computershop if I were you, but here's what you can do to make the "Unigraphics License Server" work.

Begin installing the license server from the NX4 Base installation CD. After copying files, you'll see an error saying the service could not be started. Before hitting Cancel, copy all the files in the "C:\Program Files\UGS\License Servers\UGNXFLEXlm" directory to c:\nxflexlm . Then cancel your installation, and launch a Command Line.

In a single line, enter
echo @C:\nxflexlm\lmgrd -c c:\nxflexlm\ugnx4.lic -l C:\nxflexlm\log.txt >c:\nxflexlm\nx4_server.cmd

Then add C:\nxflexlm\nx4_server.cmd to your Startup directory.

For NX5, I received no errors at all while installing both the license server and NX itself. I must remind you that this is a non-supported configuration, and you'll most probably be denied to log a call if a problem of yours cannot be duplicated on a certified system of GTAC.

This might be a workaround till the drivers for Vista gets stable and Siemens starts supporting Vista.

UPDATE: Thanks to Stian's comment, another workaround is just copying the lmgrd.exe from an NX5 installation overwriting the one in NX4. This way you'll be able to start your license server as a service.

Thursday, November 1, 2007

Use middle mouse button for OK outside of NX


I sometimes catch myself hitting the middle mouse button to hit OK and see that nothing ever happens because it's not NX I'm using! This surely is because of the time I spend in NX, but why cannot we use this in say, Options dialog of Internet Explorer ?

Here's a quick solution I've managed to compile. Download this small executable, and it will stay on your traybar waiting for your middle-click. If you hold it longer than 20 milliseconds (which is slightly longer than a single click for most people) it will find the OK button in the active dialog/window and hit it. Also, you can use CTRL+midbutton for Apply.

It has no options yet, but I'll add a few when I have some spare time. Drop me a line if you would like the source file as well…

Thursday, October 25, 2007

Unigraphics nostalgia

If you're interested in the history of CAD/CAM systems (especially Unigraphics, starting from 1960s) you must visit John Baker's great UG museum at http://www.plmworld.org/museum/


It's quite shocking to see that people used computers with displays even worse than Commodore64 to design an automobile. Maybe I'll print out some pictures and show it to one of those users who complains that he's doing lots of extra work while making an A0 drawing in just 5 minutes!

Tuesday, October 16, 2007

Speeding up the uninstallation

Uninstalling NX can be a very long process, especially if you have an old/fragmented hard drive. The reason is that Installshield (the engine behind the curtains) checks for every single file installed within the directory. When you think about the number of files in your NX installation (mine has 122.000+ files !), you'll understand why this file-checking slows you down.

Here's a trick to speed things up : before going into Add/Remove Programs, shift+delete your installation. This won't be deleting your uninstall data.
Then proceed to Add/Remove Programs and uninstall the product as you'd normally.

The amount of time you've gained adds up to a considerable amount if you need to do this on quite a number of machines.

This 'method' can also be used to uninstall the UGDOCS installation.

Thursday, October 4, 2007

Monitoring FlexLM license usage

The best friend of anyone who has got anything to do with flexlm, is the log file of the server.

But as you know, the 'view log' command of LMTOOLS is dumb as hell. It just shows you the situation at moment you click View Log. (well it does not even have a close button on the upper right corner, it's too much to ask for a scrolling live log feed ! )

With the help of the old `tail` command from UNIX systems, it's easy to watch a logfile in realtime. You won't have to install a flavor of UNIX for this, luckily someone has ported this nifty utility to Win32 platform : get it here. (it's licensed under GNU/GPL)

After you tell Tail32 to watch your UGS License Server, it will look like this :


Now you're one step closer to controlling the universe. Quite cool, right ?

If you're a CAE-oriented-guy and see the world in meshes, you can use this to watch as your .op2 solution file grows bigger and bigger.

Wednesday, October 3, 2007

.PRT extension and multiple NX versions


If you have multiple NX versions installed, you may sometimes need to be able to open a part with say, NX4 but not with the latest version.

Normally, what NX does is it tries to see whether you have an already open NX session. If you do, the .prt file you've double clicked is routed to this session. If not, then the latest version of NX installed is launched, and the .prt is opened.

There's a '-version' parameter of ugs_router.exe to specify the exact version you'd like to open your part with. The versions are as follows :
  • UG V18 : -version=V18.0
  • NX : -version=V19.0
    ..
  • NX4: -version=V22.0
  • NX5: -version=V23.0 and so on.
So, if you go to My Computer - Tools - Options - File Types and find PRT in this list and change the default "open" command in such a way that it includes -version parameter, Windows will launch the specific version of NX in case of a double click.

For multiple versions, you need to define new "commands" in Edit File Type window. Or, if you're lazy- here's the .reg file itself. (the NX path might not match your system, be sure to change it out before importing into your registry)

Monday, October 1, 2007

Interpart Link Browser



Here's how to see all your interpart stuff collected in one place, before all gets too complicated to verify. Go to Assemblies - WAVE - Interpart Link Browser.

You can investigate object links, features or parts; and also edit or delete these links.

Emphasize your Sketch


With the help of "Dim objects off work plane" option, you can have your out-of-the-sketch-plane objects look dimmed.

It's hidden under the Utility toolbar.

Once you get used to this setting, you'll find your previous experience with sketches to be way too colorful.

Wednesday, September 26, 2007

Ignore some components in a Parts List


In order to prevent a component or a subassembly from appearing in a Parts List, there are two poorly documented attributes:
  • PLIST_IGNORE_MEMBER
  • PLIST_IGNORE_SUBASSEMBLY
I guess the names tell which is which. Defining one of these in the component properties - attributes window is just enough.

Parametric Sheet Templates

For a smarter sheet template solution, a tabular note cell can be populated with the following data in NX5: (You must add "<" and ">" around the variables)
  1. Number of the current sheet: W@$SH_SHEET_NUMBER
  2. Total number of sheets: W@$SH_NUMBER_OF_SHEETS
  3. Numerator of the sheet scale: W@$SH_SHEET_SCALE_NUMERATOR
  4. Denominator of the sheet scale: W@$SH_SHEET_SCALE_DENOMINATOR
  5. Size of the current sheet: W@$SH_SHEET_SIZE
  6. Units of the current sheet: W@$SH_SHEET_UNITS
  7. Projection angle of the current sheet: W@$SH_SHEET_PROJECTION_ANGLE
  8. Master Model drawing sheet part name: W@$SH_MASTER_PART_NAME
  9. Sheet part name: W@$SH_PART_NAME

These items are from a post in BBSNotes by John Baker. If you'd like make an addition to the list, you're more than welcome to do so thru comments.

2-way interaction between Expressions and Attributes

Using a little bit of Knowledge Fusion functions, it's easily possible to interact expressions with attributes, and vice versa.

Suppose you have 3 expressions called 'length', 'width' and 'height' and you'd like to automatically update the part attributes called ATTR_length, ATTR_height and ATTR_width accordingly.

(Why in the earth would I want to do that, you might ask- these values could well be part list columns, or some dirty ERP trick might be the case. Actually I need neither, but it's good to know that this can be done !)

In the Expressions window, you need to create a dummy number expression, say 'test'. This needs to be a number, not a string variable.

Then you need to set the value of 'test' using the following syntax :
  • test = ug_setPartAttrValue( "ATTR_length", stringValue(length) )
stringValue is another KF function to convert a numeric value into a string, which ug_setPartAttrValue requires.

You can also get the value of an existing attribute, and assign it to an expression. This time, the syntax is :
  • test2 = MakeNumber( ug_askPartAttrValue( "ATTR_width" ))
where test2 is the expression to be updated.

In order not to have lots of these dummy test variables, you could create a combined dummy, like:
  • test = ug_setPartAttrValue( "x", stringValue( p1) ) + ug_setPartAttrValue( "y", stringValue( p2) ) +ug_setPartAttrValue( "z", stringValue( p3) )

Tuesday, September 25, 2007

Truetype fonts in NX Drafting



Got bored with the old drafting fonts like latin_extended ?

Here are some ready-to-use .fnx drafting fonts, converted from
  • Verdana
  • Tahoma
  • Times New Roman
  • Segoe UI
  • Trebuchet MS
Download them here, and copy the .fnx files to the UGII\ugfonts folder.

AutoSave.. for NX ?



"If i had a penny each time somebody complained about autosave in NX.." By Richard FullConstrain.

Well, of course there's not an autosave command in NX. It's quite understandable, though; think about having a huge assembly which you've opened fully, and zoomed in/out of the part. Maybe travelled accross a few applications, drafting, modeling, etc. Then your autosave period has ended, and the application decided it should save the work part.. for nothing at all, causing lots of cpu power to be lost, making the world a hotter place to live.


No worries, you could always set a 'save reminder'.
Here's how : Customer defaults - Gateway - Part - Interval for Save Changes Reminder

Naah, forget about 'autosave' Richard, NX will remind you to save often instead.

Assembly Constraints - The new 'mating' alternative

Since NX5, it is now possible to use bidirectional mating conditions in the Assemblies module. The old 'mate' commands are still available, but if you need the newer functionality, you need to enable it first.

  • For the current part, go to Preferences - Assemblies - Assembly Positioning and set Interaction to 'Positioning Constraints'
  • For all the new parts from now on, go to Customer Defaults - Assemblies - Positioning - Interface - Positioning and select 'Positioning Constraints'
What's new with the new and shiny Positioning Constraints ? Well, there are numerous changes.
  • First of all, the GUI is much easier. ( both to use, and to teach to a newbie !)
  • Bidirectional relationship is now possible.
  • Align and Mate is combined into a new 'Touch Align' constraint
  • There's a 'fix' constraint. As the name implies, it fixes your part.
  • It's possible to 'bind' a component to another.
  • You can visually see the constraints in the screen and hide/show some of them.
  • You can calculate an 'extraction path' in Sequences.
I must also note that it is possible to convert the old mates in your assembly to the new Positioning Constraints using the command Assemblies - Components - Convert Mating Conditions. I've converted quite a number of assemblies so far, and it works quite smoothly.

Enabling the Reuse Library


There's a hidden standard parts library (or a 'reuse library', with some polished words and GUI) within NX5. You need to enable a Customer Defaults setting to be able to use this.

  • Customer Defaults - Gateway - Reuse Library - General - Display Reuse Library
    (You might want to turn on the option under Teamcenter category also, if you're running in NX Manager mode as well)

It's hard to say this is a complete part library as an out of the box solution, but can be extended to the user's needs quite easily. I'm guessing this might be the reason Reuse Library is not shown to the end user by default.

Extruding faces - the way it was before NX4


As most oldskool NX users out there, you might have found the new ability to sketch on planar faces quite annoying. There's a way to revert this behavior: (actually there's two)

  • Before selecting the planar face, make sure you've selected 'Face Edges' as your Selection Intent.
  • Or, you can disable the following setting in Customer Defaults : Modeling - General - Miscellaneous - Automatically Sketch on Planar Faces

Out of the box drafting standards

An NX5 standard installation includes out of the box drafting settings for ASME, DIN, ISO and JIS standards. To activate these settings,

  1. Open your Customer Settings by Tools - Utilities - Customer Defaults (be sure that your active user role includes this command. If not, you can always set one of the 'advanced' roles)
  2. Go to Drafting - General
  3. Select the Standard tab
  4. Choose the standard of your choosing. You can also customize the existing standards.
  5. As with all customer defaults changes, restart your NX session.