Automate Columns Modelling From Cad Link

This project highlights my ability to extend Revit’s native capabilities through custom Python development. By leveraging the Revit API via pyRevit, I developed a robust tool that automates the transition from 2D CAD documentation to 3D BIM elements, a process that is traditionally manual and error-prone.

Manual column placement from CAD links is a major bottleneck in the BIM lifecycle, often leading to coordinate drift and significant time loss during the initial modeling phase.

I designed a script that interprets the raw data within a linked DWG to programmatically instantiate Revit families. The technical core of this tool involves:

  • Deep Geometry Parsing: I utilized the GeometryElement and GeometryInstance classes to traverse the CAD link’s internal structure, extracting precise insertion points from block definitions and centroids from closed polylines.
  • Coordinate System Alignment: To solve the challenge of varying origins, I implemented vector mapping using the Transform class. This ensures that every column is placed with 100% accuracy relative to the Revit Internal Origin, regardless of the CAD file’s WCS.
  • Database & Memory Management: For high-performance execution, I optimized the script using FilteredElementCollector and wrapped the process in a TransactionGroup. This allows the tool to process hundreds of elements in seconds while maintaining a clean undo-history and minimal memory overhead.
  • Logical Data Filtering: I built a custom filtering engine that identifies elements based on their GraphicsStyle (CAD Layers). This allows the tool to intelligently ignore “noise” and only process relevant structural data.

Leave a Reply

Your email address will not be published. Required fields are marked *

© 2026 Created By Karim Tarek