My employer is switching over to SolidWorks. I've already gone through some training classes (more on that at a later time), and we're just about to pull the trigger on buying hardware and software. Chances are that a year from now, barring really odd circumstances, I won't have much reason to launch I-DEAS.
So, I might as well share what wealth I have now, in hopes that the remaining I-DEAS holdouts can take advantage of it.
I have a collection of macros that I find to be really cool, and pretty handy. The basic ones I've had for years, and the more complicated ones I've just developed over the last couple of months. I seem to get inspired every time I see a presentation on scripting, just so happens that my most recent one was at the SolidWorks conference.
At any rate, here you go: I-DEAS Macros (122 KB Zip)
I've included a Read Me file, along with some sample symbols and an icon panel, so it shouldn't take much more than getting the file locations set up in order to see how they work. Can't say how much work will be required to adapt them to other workflows, but I've put a lot of work into comments and tracking flow control which should help.
More or less copied from the Read Me, here is what is included. I hope you find at least some of them to be useful.
print_ps.prg - This is for our Document Control person to assist with the creation of PDF files. Several printer profiles have been set up using Distiller. This program will create PostScript files for each sheet in a multisheet drawing (works with single sheet, too) and drop them into an appropriate folder where additional software will convert them to PDFs.
print_all_sheets.prg - This is for all other users, and mostly provides a handy way of printing all sheets of a multisheet drawing. It provides a prompt allowing the user to choose from the available printers or file formats, then dumps files into the user's home directory.
Create_A_Size.prg - Creates an A-size drawing, and inserts appropriate titleblock
Create_B_Size.prg - Creates a B-size drawing, and inserts appropriate titleblock
Create_C_Size.prg - Creates a C-size drawing, and inserts appropriate titleblock
Create_D_Size.prg - Creates a D-size drawing, and inserts appropriate titleblock
add_another_D_page.prg - Mostly self-explanatory. Take an existing D-size drawing and add a sheet to it, along with the corresponding titleblock. Works with single sheet drawings, and drawings that were already multisheet.
add_revision_block.prg - Imports the revision block symbol, determines where to place it, and determines some preliminary values for it.
preflight.prg - Pulls the part number metadata from the drawing file, along with some information from the titleblock, to make sure that some field information in the titleblocks is correct.
reorder_sheet.prg - Works with multisheet drawings, allowing sheets to be rearranged.
sync_tblock.prg - Extracts info from the page 1 titleblock, and then applies it to any additional sheets. Also increments the sheet counter (1 of 2, etc). This one can be run standalone, but is also run as a subroutine from several other programs.
turn_borders_on.prg - Turns all view borders on, even all sheets in a multisheet drawing
turn_borders_off.prg - Turns all view borders off, even all sheets in a multisheet drawing
clean_acad.prg - Drawings imported from AutoCAD will be 2 sheets, and most of the important information will be on the 2nd sheet. This macro pulls everything onto the first sheet, and deletes the 2nd sheet. The information on sheet 1 is often ugly, but usually just a view or two needs to be deleted (this is left to the user to handle).
supersheet.prg - Before the multisheet capability appeared in I-DEAS, multisheet drawings were handled by creating a "super sheet" - a very large sheet size, and then individual sheets were sort of arrayed on the same page. This is annoying, as a significant amount of panning and zooming is required. This also causes issues with printing, and you can't simply print the overall sheet. This macro will convert a supersheet into a modern multisheet drawing. The user is prompted to pick the order of the sheets (since no one ever did it the same way twice), and the macro takes care of moving views and geometry to other sheets.
integrity_check.prg - This program will determine if the drawing is AutoCAD and/or supersheet, and prompt the user to run the appropriate programs. If added to masterdrafting.cfg, it can be run automatically anytime a drawing is brought onto the screen.
Overview: As I added more programs, I realized that I was doing the same thing over and over again in each one. So I took the code and created separate files. This helped to establish a single, reliable way of doing things. Also, as bugs are found (or in some cases, new symbol names are found), they usually only have to be fixed in one place, rather than in each different program.
check_permission.prg - Determines the access level of the drawing. Pretty much all of the macros that want to change something about the drawing will call this first, and then exit if the user does not have sufficient permissions.
detect_acad.prg - Determines whether or not a drawing is an imported AutoCAD drawing.
find_last_rev.prg - Determines which symbol contains the latest revision information. It looks for the revision block symbol that appears lowest on the print, or if it doesn't find any, uses the sheet titleblock.
find_page1_tblock.prg - Determines the symbol ID of the titleblock on the first page. As alternate symbol names are found, they will need to be added to this program.
find_page2_tblock.prg - Determines the symbol ID of the titleblock on the current sheet (not page 1). As alternate symbol names are found, they will need to be added to this program.
get_all_attrs.prg - Takes a symbol ID and extracts all known field information from it.
get_date.prg - Gets the current date, and formats it to MM/YY
get_sheet_size.prg - Determines the sheet size of the current drawing
get_user_name.prg - Determines the name of the current user. This is completely dependant on having individual projects that each user starts in (ex: user_username). I was not able to figure out any other way of determining the user information, so if separate projects are not used, this program will not work.
insert_titleblock.prg - Imports the appropriate titleblock symbol based on sheet size, and pre-populates field information
sync_tblock.prg - can be run standalone, but most of the macros that deal with multisheet drawings will run this automatically at the end. Extracts info from the page 1 titleblock, and then applies it to any additional sheets. Also increments the sheet counter (1 of 2, 2 of 2, etc).