The VIMTool (vim.vimtool.exe) is a Windows command line tool to edit, convert, and investigate VIM files. It's fast, powerful, and easy to use. Even if you're not familiar with coding!

Before we start, let's ensure you can open a command prompt and access vimtool.exe.

  1. You have been given access to a Vim.VimTool.vx.x.xx.zip file

    Note: Windows will take %UserName% and insert your Windows username.

  2. Download it and unzip it to a location of your choice. Example: C:\Users\%UserName%\Documents

    Note: Windows will take %UserName% and insert your Windows username.

  3. Navigate to the following folder using Windows File Explorer C:\Users\%UserName%\Documents\Vim.VimTool.vx.x.xx

  4. Type cmd in the address bar. A command prompt will appear and be set to that current folder location.

Try typing vim.vimtool.exe --help if you get a list of tools, you're good to go!

Tip: Get full paths of files in Windows by Shift + right mouse click and choosing 'Copy as path'


Edit VIMs

Here are the functions or verbs you can use:

  1. merge

    1. This will combine two or more VIMs. Very handy when creating a VIM from a collection of Revit projects, links, or combining IFC and Revit projects. It's much faster to combine VIMs than try and load all links in Revit to make a single VIM. Here's an example of the merge function:

      vim.vimtool.exe merge -i "c:\username\documents\vimfile1.vim" "c:\username\documents\vimfile2.vim" -o "c:\username\documents\vimfile1and2merged.vim" 

      1. -i, --input Required. The input VIM file paths and/or directory paths contain the VIM files to merge.

      2. -o, --output Required. Output VIM file path

      3. -l, --log The log file path

      4. --nobim (Default: false) Removes BIM data from the output

      5. -g, --grid (Default: false) Merges all files into a grid

      6. -e, --show-extents(Default: true) Prints the bounding box extents of each input file.

      7. -p, --padding(Default: 5) The grid cell padding value

      8. --help Display a help screen

      9. --version Display version information

  2. dedup

    1. This will de-duplicate meshes in the VIM file. It's not a simple instancing tool but looks at seemingly unrelated meshes and determines if they're the same via heuristics. It can reduce VIM file size significantly without losing BIM integrity. Here's an example of the dedup function:

      vim.vimtool.exe dedup -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfile1deduplicated.vim" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output Required. Output VIM file path

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  3. strip

    1. This will strip images (like texture maps) out of the VIM file to reduce file size. Here's an example of the strip function:

      vim.vimtool.exe strip -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfile1striped.vim" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output Required. Output VIM file path

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  4. center

    1. This will move a VIM file to the origin via several methods. Here's an example of the center function:

      vim.vimtool.exe center -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfile1centered.vim" -m Average

      1. -i, --input Required. The input VIM file path

      2. -o, --output Required. Output VIM file path

      3. -m, --mode (Default: BoxCenterBottom) The centering mode.

        1. "BoxCenterBottom": Centers the VIM based on the bottom center of its bounding box.

        2. "BoxCenter": Centers the VIM based on the center of its bounding box.

        3. "Average": Centers the VIM based on the average position of its mesh vertices.

        4. "FirstQuartile": Centers the VIM based on the first quartile of its mesh vertices.

        5. "Median": Centers the VIM based on the median of its mesh vertices.

      4. -l, --log The log file path

      5. --help Display a help screen

      6. --version Display version information


Convert a VIM

  1. update

    1. This will update 1.1.XX VIM file to a 1.2.XX VIM file. Here's an example of the update function:

      vim.vimtool.exe update -i "c:\username\documents\vimfile1.1.XX.vim" -o "c:\username\documents\vimfile1.2.XX.vim" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output Required. Output VIM file path

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  2. json

    1. This will convert a VIM file to JSON. JSON isn't great with large projects, so be careful! Here's an example of the json function:

      vim.vimtool.exe json -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfileasJSON" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output-dir Required. Output JSON directory

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  3. xmlbundle

    1. This will convert a VIM file to XML. XML isn't great with large projects, so be careful! Here's an example of the xmlbundle function:

      vim.vimtool.exe xmlbundle -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfileasXML" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output-dir Required. Output XML directory

      3. -a, --output-archive Output an archive file.

      4. -l, --log The log file path

      5. --help Display a help screen

      6. --version Display version information

  4. eeprocess

    1. Kinda a weird name, but this is all about bundling up 2d content into an XML file of a VIM that was exported with 2d content, and then striping said 2d content out of the VIM. Here's an example of the eeprocess function:

      vim.vimtool.exe eeprocess-i "c:\username\documents\vimfile1.vim" -d "c:\username\documents\vimfile2dstuffasXML" -o "c:\username\documents\vimfile1_new.vim"

      1. -i, --input Required. The input VIM file path

      2. -d, --output-dir Required. Output XML directory

      3. -o, --output Required. Output file path

      4. -a, --output-archive Output an archive file.

      5. -x, --strip-on (Default: true) When set to false, it skips the strip.

      6. -a, --assets (Default: false) When set to true, strips the asset data from the VIM file.

      1. -s, --shapes (Default: false) When set to true, strips the shape data from the VIM file.

      2. -b, --bim-data (Default: false) When set to true, strips the BIM data from the VIM file. Node data will be preserved regardless.

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  5. qto

    1. This will convert a VIM file to a Quantity Take Off document. Here's an example of the qto function:

      vim.vimtool.exe qto -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimfile1.xlsx" --flex --pretty 

      1. -i, --input Required. The input VIM file path

      2. -o, --output Required. Supports .xlsx, .xlsm, .xltx or .xltm.

      3. --csv Write to csv only.

      4. --flex Write to csv if the file is too big for excel.

      5. --pretty Adjust column size.

      6. -l, --log The log file path

      7. --help Display a help screen

      8. --version Display version information

  6. usd

    1. This will convert a VIM file to a Pixar USD format. Here's an example of the USD function:

      Note: you need an NVIDIA RTX GPU to run Nvidia Omniverse which reads USD files

      vim.vimtool.exe omniverse -i "c:\username\documents\vimfile1.vim" -o "c:\username\documents\vimusdfolder" 

      1. -i, --input Required. The input VIM file path

      2. -o, --output-dir Required. Output USD directory

      3. --help Display a help screen

      4. --version Display version information

  7. sql-init

    1. This will create the VIM schema

      Tip: you can use the other SQL verbs with SQLEXPRESS even though the examples aren't listed here.

    2. Example for SQL on Azure:

      vim.vimtool.exe sql-init -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

    3. Example for SQL on your computer using SQLEXPRESS:

      vim.vimtool.exe sql-init -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"

      1. -c Required. Connection string

      2. -l, --log The log file path

      3. --help Display a help screen

      4. --version Display version information

  8. sql-migrate

    1. This will migrate the SQL database designated by the connection string

      Tip: you can use the other SQL verbs with SQLEXPRESS even though the examples aren't listed here.

    2. Example for SQL on Azure:

      vim.vimtool.exe sql-migrate -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

    3. Example for SQL on your computer using SQLEXPRESS:

      vim.vimtool.exe sql-migrate -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"

      1. -v, --version VIM schema version to migrate the database to. If not specified, the database is migrated to the latest version.

      2. -f, --file VIM file path to extract the schema version from

      3. -c Required. Connection string

      4. -l, --log The log file path

      5. --help Display a help screen

      6. --version Display version information

  9. sql-insert

    1. This will load a VIM file to a given SQL database. Tip: you can use the other sql verbs with SQLEXPRESS even though the examples aren't listed here.

    2. Example for SQL on Azure:

      vim.vimtool.exe sql-insert -i "c:\username\documents\vimfile1.vim" -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

    3. Example for SQL on your computer using SQLEXPRESS:

      vim.vimtool.exe sql-insert -i "c:\username\documents\vimfile1.vim" -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"

      1. -i, --input Required. The input VIM file path

      2. -c Required. Connection string

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  10. clash-sql-insert

    1. This will load clash data from a VIM project file (.vimprojx) to a given SQL database. Pretty cool! Follow these clash instructions first!

      Note: The VIM file must already be added to the target database via sql-insert (see above). If it is not present, no clashes will be added.

      Tip: you can use the other SQL verbs with SQLEXPRESS even though the examples aren't listed here.

      Example for SQL on Azure:

      vim.vimtool.exe clash-sql-insert -i "c:\username\documents\vimproject1.vimprojx" -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

    2. Example for SQL on your computer using SQLEXPRESS:

      vim.vimtool.exe clash-sql-insert -i "c:\username\documents\vimproject1.vimprojx" -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"

      1. -i, --input Required. The input VIM Project file path

      2. -c Required. Connection string

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  11. sql-list

    1. This lists VIM file IDs in a given SQL database. This will let you delete or replace VIMs.

      vim.vimtool.exe sql-list -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

      1. -c Required. Connection string

      2. -l, --log The log file path

      3. --help Display a help screen

      4. --version Display version information

  12. sql-delete

    1. This will delete a VIM file from a given SQL database.

      vim.vimtool.exe sql-delete --id [ID of VIM] -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

      1. --id Required. Id of the VIM in the SQL database

      2. -c Required. Connection string

      3. -l, --log The log file path

      4. --help Display a help screen

      5. --version Display version information

  13. sql-replace

    1. This will replace a VIM file in a given SQL database.

      vim.vimtool.exe sql-replace --id [ID of VIM] -i "c:\username\documents\vimfile1.vim" -c "Server=[server address],1433;Initial Catalog=[database name];Persist Security Info=False;User ID=[user name];Password=[password];MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

      1. --id Required. Id of the VIM in the SQL database to replace

      2. -i, --input Required. The input VIM file path

      3. -c Required. Connection string

      4. -l, --log The log file path

      5. --help Display a help screen

      6. --version Display version information


Investigate VIMs:

  1. info

    1. This will print information about the VIM file version and its object model version

      vim.vimtool.exe info -i "c:\username\documents\vimfile1.vim" 

      1. -i, --input Required. The input VIM file path

      2. -l, --log The log file path

      3. --help Display a help screen

      4. --version Display version information

  2. version

    1. This will print the version of the vim.vimtool.exe being used

      vim.vimtool.exe version 

Did this answer your question?