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 have a copy of vimtool.exe, a license file, and can access a command prompt:
You have been given access to a Vim.VimTool.vx.x.xx.zip file
Note: Windows will take %UserName% and insert your Windows username.
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.
Install the license file following these steps:
Navigate to the following folder using Windows File Explorer C:\Users\%UserName%\Documents\Vim.VimTool.vx.x.xx
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 one step away!
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:
merge
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"
-i, --input
Required. The input VIM file paths and/or directory paths contain the VIM files to merge.-o, --output
Required. Output VIM file path-l, --log
The log file path--nobim
(Default: false) Removes BIM data from the output-g, --grid
(Default: false) Merges all files into a grid-e, --show-extents
(Default: true) Prints the bounding box extents of each input file.-p, --padding
(Default: 5) The grid cell padding value--help
Display a help screen--version
Display version information
dedup
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"
-i, --input
Required. The input VIM file path-o, --output
Required. Output VIM file path-l, --log
The log file path--help
Display a help screen--version
Display version information
strip
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"
-i, --input
Required. The input VIM file path-o, --output
Required. Output VIM file path-l, --log
The log file path--help
Display a help screen--version
Display version information
center
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
-i, --input
Required. The input VIM file path-o, --output
Required. Output VIM file path-m, --mode
(Default: BoxCenterBottom) The centering mode."BoxCenterBottom": Centers the VIM based on the bottom center of its bounding box.
"BoxCenter": Centers the VIM based on the center of its bounding box.
"Average": Centers the VIM based on the average position of its mesh vertices.
"FirstQuartile": Centers the VIM based on the first quartile of its mesh vertices.
"Median": Centers the VIM based on the median of its mesh vertices.
-l, --log
The log file path--help
Display a help screen--version
Display version information
Convert a VIM
update
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"
-i, --input
Required. The input VIM file path-o, --output
Required. Output VIM file path-l, --log
The log file path--help
Display a help screen--version
Display version information
json
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"
-i, --input
Required. The input VIM file path-o, --output-dir
Required. Output JSON directory-l, --log
The log file path--help
Display a help screen--version
Display version information
xmlbundle
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"
-i, --input
Required. The input VIM file path-o, --output-dir
Required. Output XML directory-a, --output-archive
Output an archive file.-l, --log
The log file path--help
Display a help screen--version
Display version information
eeprocess
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"
-i, --input
Required. The input VIM file path-d, --output-dir
Required. Output XML directory-o, --output
Required. Output file path-a, --output-archive
Output an archive file.-x, --strip-on
(Default: true) When set to false, it skips the strip.-a, --assets
(Default: false) When set to true, strips the asset data from the VIM file.
-s, --shapes
(Default: false) When set to true, strips the shape data from the VIM file.-b, --bim-data
(Default: false) When set to true, strips the BIM data from the VIM file. Node data will be preserved regardless.-l, --log
The log file path--help
Display a help screen--version
Display version information
qto
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
-i, --input
Required. The input VIM file path-o, --output
Required. Supports .xlsx, .xlsm, .xltx or .xltm.--csv
Write to csv only.--flex
Write to csv if the file is too big for excel.--pretty
Adjust column size.-l, --log
The log file path--help
Display a help screen--version
Display version information
usd
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"
-i, --input
Required. The input VIM file path-o, --output-dir
Required. Output USD directory--help
Display a help screen--version
Display version information
sql-init
This will create the VIM schema
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 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;"
Example for SQL on your computer using SQLEXPRESS:
vim.vimtool.exe sql-init -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"
-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
sql-migrate
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.
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;"
Example for SQL on your computer using SQLEXPRESS:
vim.vimtool.exe sql-migrate -c "Server=localhost\SQLEXPRESS;Database=[database name];Trusted_Connection=True;"
-v, --version
VIM schema version to migrate the database to. If not specified, the database is migrated to the latest version.-f, --file
VIM file path to extract the schema version from-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
sql-insert
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.
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;"
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;"
-i, --input
Required. The input VIM file path-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
clash-sql-insert
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;"
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;"
-i, --input
Required. The input VIM Project file path-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
sql-list
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;"
-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
sql-delete
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;"
--id
Required. Id of the VIM in the SQL database-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
sql-replace
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;"
--id
Required. Id of the VIM in the SQL database to replace-i, --input
Required. The input VIM file path-c
Required. Connection string-l, --log
The log file path--help
Display a help screen--version
Display version information
Investigate VIMs:
info
This will print information about the VIM file version and its object model version
vim.vimtool.exe info -i "c:\username\documents\vimfile1.vim"
-i, --input
Required. The input VIM file path-l, --log
The log file path--help
Display a help screen--version
Display version information
version
This will print the version of the vim.vimtool.exe being used
vim.vimtool.exe version