{
  "schemaVersion": "1.0",
  "item": {
    "slug": "rvt-to-excel",
    "name": "Rvt To Excel",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/datadrivenconstruction/rvt-to-excel",
    "canonicalUrl": "https://clawhub.ai/datadrivenconstruction/rvt-to-excel",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/rvt-to-excel",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rvt-to-excel",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "claw.json",
      "instructions.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/rvt-to-excel"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/rvt-to-excel",
    "agentPageUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Problem Statement",
        "body": "BIM data inside RVT files needs to be extracted for:\n\nProcessing multiple projects in batch\nIntegrating BIM data with analytics pipelines\nSharing structured data with stakeholders\nGenerating reports and quantity takeoffs"
      },
      {
        "title": "Solution",
        "body": "Convert RVT files to structured Excel databases for analysis and reporting."
      },
      {
        "title": "Business Value",
        "body": "Batch processing - Convert multiple projects\nData accessibility - Excel format for universal access\nPipeline integration - Feed data to BI tools, ML models\nStructured output - Organized element data and properties"
      },
      {
        "title": "CLI Syntax",
        "body": "RvtExporter.exe <input_path> [export_mode] [options]"
      },
      {
        "title": "Export Modes",
        "body": "ModeCategoriesDescriptionbasic309Essential structural elementsstandard724Standard BIM categoriescomplete1209All Revit categoriescustomUser-definedSpecific categories only"
      },
      {
        "title": "Options",
        "body": "OptionDescriptionbboxInclude bounding box coordinatesroomsInclude room associationsschedulesExport all schedules to sheetssheetsExport sheets to PDF"
      },
      {
        "title": "Examples",
        "body": "# Basic export\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" basic\n\n# Complete with bounding boxes\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" complete bbox\n\n# Full export with all options\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" complete bbox rooms schedules sheets\n\n# Batch processing\nfor /R \"C:\\Projects\" %f in (*.rvt) do RvtExporter.exe \"%f\" standard bbox"
      },
      {
        "title": "Python Integration",
        "body": "import subprocess\nimport pandas as pd\nfrom pathlib import Path\nfrom typing import List, Optional\n\nclass RevitExporter:\n    def __init__(self, exporter_path: str = \"RvtExporter.exe\"):\n        self.exporter = Path(exporter_path)\n        if not self.exporter.exists():\n            raise FileNotFoundError(f\"RvtExporter not found: {exporter_path}\")\n\n    def convert(self, rvt_file: str, mode: str = \"complete\",\n                options: List[str] = None) -> Path:\n        \"\"\"Convert Revit file to Excel.\"\"\"\n        rvt_path = Path(rvt_file)\n        if not rvt_path.exists():\n            raise FileNotFoundError(f\"Revit file not found: {rvt_file}\")\n\n        cmd = [str(self.exporter), str(rvt_path), mode]\n        if options:\n            cmd.extend(options)\n\n        result = subprocess.run(cmd, capture_output=True, text=True)\n\n        if result.returncode != 0:\n            raise RuntimeError(f\"Export failed: {result.stderr}\")\n\n        # Output file is same name with .xlsx extension\n        output_file = rvt_path.with_suffix('.xlsx')\n        return output_file\n\n    def batch_convert(self, folder: str, mode: str = \"standard\",\n                      pattern: str = \"*.rvt\") -> List[Path]:\n        \"\"\"Convert all Revit files in folder.\"\"\"\n        folder_path = Path(folder)\n        converted = []\n\n        for rvt_file in folder_path.glob(pattern):\n            try:\n                output = self.convert(str(rvt_file), mode)\n                converted.append(output)\n                print(f\"Converted: {rvt_file.name}\")\n            except Exception as e:\n                print(f\"Failed: {rvt_file.name} - {e}\")\n\n        return converted\n\n    def read_elements(self, xlsx_file: str) -> pd.DataFrame:\n        \"\"\"Read converted Excel as DataFrame.\"\"\"\n        return pd.read_excel(xlsx_file, sheet_name=\"Elements\")\n\n    def get_quantities(self, xlsx_file: str,\n                       group_by: str = \"Category\") -> pd.DataFrame:\n        \"\"\"Get quantity summary grouped by category.\"\"\"\n        df = self.read_elements(xlsx_file)\n\n        # Group and count\n        summary = df.groupby(group_by).agg({\n            'ElementId': 'count',\n            'Area': 'sum',\n            'Volume': 'sum'\n        }).reset_index()\n\n        summary.columns = [group_by, 'Count', 'Total_Area', 'Total_Volume']\n        return summary"
      },
      {
        "title": "Excel Sheets",
        "body": "SheetContentElementsAll BIM elements with propertiesCategoriesElement categories summaryLevelsBuilding levelsMaterialsMaterial definitionsParametersShared parameters"
      },
      {
        "title": "Element Columns",
        "body": "ColumnTypeDescriptionElementIdintUnique Revit IDCategorystringElement categoryFamilystringFamily nameTypestringType nameLevelstringAssociated levelAreafloatSurface area (m²)VolumefloatVolume (m³)BBox_MinX/Y/ZfloatBounding box minBBox_MaxX/Y/ZfloatBounding box max"
      },
      {
        "title": "Usage Example",
        "body": "# Initialize exporter\nexporter = RevitExporter(\"C:/Tools/RvtExporter.exe\")\n\n# Convert single file\nxlsx = exporter.convert(\"C:/Projects/Office.rvt\", \"complete\", [\"bbox\", \"rooms\"])\n\n# Read and analyze\ndf = exporter.read_elements(str(xlsx))\nprint(f\"Total elements: {len(df)}\")\n\n# Quantity summary\nquantities = exporter.get_quantities(str(xlsx))\nprint(quantities)\n\n# Export to CSV for further processing\ndf.to_csv(\"elements.csv\", index=False)"
      },
      {
        "title": "Integration with DDC Pipeline",
        "body": "# Full pipeline: Revit → Excel → Cost Estimate\nfrom semantic_search import CWICRSemanticSearch\n\n# 1. Convert Revit\nexporter = RevitExporter()\nxlsx = exporter.convert(\"project.rvt\", \"complete\", [\"bbox\"])\n\n# 2. Extract quantities\ndf = exporter.read_elements(str(xlsx))\nquantities = df.groupby('Category')['Volume'].sum().to_dict()\n\n# 3. Search CWICR for pricing\nsearch = CWICRSemanticSearch()\ncosts = {}\nfor category, volume in quantities.items():\n    results = search.search_work_items(category, limit=5)\n    if not results.empty:\n        avg_price = results['unit_price'].mean()\n        costs[category] = volume * avg_price\n\nprint(f\"Total estimate: ${sum(costs.values()):,.2f}\")"
      },
      {
        "title": "Best Practices",
        "body": "Use appropriate mode - basic for quick analysis, complete for full data\nInclude bbox - Required for spatial analysis and visualization\nBatch carefully - Large files may take time; process overnight\nValidate output - Check element counts against Revit schedules"
      },
      {
        "title": "Resources",
        "body": "GitHub: cad2data Pipeline\nDownload: See repository releases for RvtExporter.exe"
      }
    ],
    "body": "RVT to Excel Conversion\nBusiness Case\nProblem Statement\n\nBIM data inside RVT files needs to be extracted for:\n\nProcessing multiple projects in batch\nIntegrating BIM data with analytics pipelines\nSharing structured data with stakeholders\nGenerating reports and quantity takeoffs\nSolution\n\nConvert RVT files to structured Excel databases for analysis and reporting.\n\nBusiness Value\nBatch processing - Convert multiple projects\nData accessibility - Excel format for universal access\nPipeline integration - Feed data to BI tools, ML models\nStructured output - Organized element data and properties\nTechnical Implementation\nCLI Syntax\nRvtExporter.exe <input_path> [export_mode] [options]\n\nExport Modes\nMode\tCategories\tDescription\nbasic\t309\tEssential structural elements\nstandard\t724\tStandard BIM categories\ncomplete\t1209\tAll Revit categories\ncustom\tUser-defined\tSpecific categories only\nOptions\nOption\tDescription\nbbox\tInclude bounding box coordinates\nrooms\tInclude room associations\nschedules\tExport all schedules to sheets\nsheets\tExport sheets to PDF\nExamples\n# Basic export\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" basic\n\n# Complete with bounding boxes\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" complete bbox\n\n# Full export with all options\nRvtExporter.exe \"C:\\Projects\\Building.rvt\" complete bbox rooms schedules sheets\n\n# Batch processing\nfor /R \"C:\\Projects\" %f in (*.rvt) do RvtExporter.exe \"%f\" standard bbox\n\nPython Integration\nimport subprocess\nimport pandas as pd\nfrom pathlib import Path\nfrom typing import List, Optional\n\nclass RevitExporter:\n    def __init__(self, exporter_path: str = \"RvtExporter.exe\"):\n        self.exporter = Path(exporter_path)\n        if not self.exporter.exists():\n            raise FileNotFoundError(f\"RvtExporter not found: {exporter_path}\")\n\n    def convert(self, rvt_file: str, mode: str = \"complete\",\n                options: List[str] = None) -> Path:\n        \"\"\"Convert Revit file to Excel.\"\"\"\n        rvt_path = Path(rvt_file)\n        if not rvt_path.exists():\n            raise FileNotFoundError(f\"Revit file not found: {rvt_file}\")\n\n        cmd = [str(self.exporter), str(rvt_path), mode]\n        if options:\n            cmd.extend(options)\n\n        result = subprocess.run(cmd, capture_output=True, text=True)\n\n        if result.returncode != 0:\n            raise RuntimeError(f\"Export failed: {result.stderr}\")\n\n        # Output file is same name with .xlsx extension\n        output_file = rvt_path.with_suffix('.xlsx')\n        return output_file\n\n    def batch_convert(self, folder: str, mode: str = \"standard\",\n                      pattern: str = \"*.rvt\") -> List[Path]:\n        \"\"\"Convert all Revit files in folder.\"\"\"\n        folder_path = Path(folder)\n        converted = []\n\n        for rvt_file in folder_path.glob(pattern):\n            try:\n                output = self.convert(str(rvt_file), mode)\n                converted.append(output)\n                print(f\"Converted: {rvt_file.name}\")\n            except Exception as e:\n                print(f\"Failed: {rvt_file.name} - {e}\")\n\n        return converted\n\n    def read_elements(self, xlsx_file: str) -> pd.DataFrame:\n        \"\"\"Read converted Excel as DataFrame.\"\"\"\n        return pd.read_excel(xlsx_file, sheet_name=\"Elements\")\n\n    def get_quantities(self, xlsx_file: str,\n                       group_by: str = \"Category\") -> pd.DataFrame:\n        \"\"\"Get quantity summary grouped by category.\"\"\"\n        df = self.read_elements(xlsx_file)\n\n        # Group and count\n        summary = df.groupby(group_by).agg({\n            'ElementId': 'count',\n            'Area': 'sum',\n            'Volume': 'sum'\n        }).reset_index()\n\n        summary.columns = [group_by, 'Count', 'Total_Area', 'Total_Volume']\n        return summary\n\nOutput Structure\nExcel Sheets\nSheet\tContent\nElements\tAll BIM elements with properties\nCategories\tElement categories summary\nLevels\tBuilding levels\nMaterials\tMaterial definitions\nParameters\tShared parameters\nElement Columns\nColumn\tType\tDescription\nElementId\tint\tUnique Revit ID\nCategory\tstring\tElement category\nFamily\tstring\tFamily name\nType\tstring\tType name\nLevel\tstring\tAssociated level\nArea\tfloat\tSurface area (m²)\nVolume\tfloat\tVolume (m³)\nBBox_MinX/Y/Z\tfloat\tBounding box min\nBBox_MaxX/Y/Z\tfloat\tBounding box max\nUsage Example\n# Initialize exporter\nexporter = RevitExporter(\"C:/Tools/RvtExporter.exe\")\n\n# Convert single file\nxlsx = exporter.convert(\"C:/Projects/Office.rvt\", \"complete\", [\"bbox\", \"rooms\"])\n\n# Read and analyze\ndf = exporter.read_elements(str(xlsx))\nprint(f\"Total elements: {len(df)}\")\n\n# Quantity summary\nquantities = exporter.get_quantities(str(xlsx))\nprint(quantities)\n\n# Export to CSV for further processing\ndf.to_csv(\"elements.csv\", index=False)\n\nIntegration with DDC Pipeline\n# Full pipeline: Revit → Excel → Cost Estimate\nfrom semantic_search import CWICRSemanticSearch\n\n# 1. Convert Revit\nexporter = RevitExporter()\nxlsx = exporter.convert(\"project.rvt\", \"complete\", [\"bbox\"])\n\n# 2. Extract quantities\ndf = exporter.read_elements(str(xlsx))\nquantities = df.groupby('Category')['Volume'].sum().to_dict()\n\n# 3. Search CWICR for pricing\nsearch = CWICRSemanticSearch()\ncosts = {}\nfor category, volume in quantities.items():\n    results = search.search_work_items(category, limit=5)\n    if not results.empty:\n        avg_price = results['unit_price'].mean()\n        costs[category] = volume * avg_price\n\nprint(f\"Total estimate: ${sum(costs.values()):,.2f}\")\n\nBest Practices\nUse appropriate mode - basic for quick analysis, complete for full data\nInclude bbox - Required for spatial analysis and visualization\nBatch carefully - Large files may take time; process overnight\nValidate output - Check element counts against Revit schedules\nResources\nGitHub: cad2data Pipeline\nDownload: See repository releases for RvtExporter.exe"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/datadrivenconstruction/rvt-to-excel",
    "publisherUrl": "https://clawhub.ai/datadrivenconstruction/rvt-to-excel",
    "owner": "datadrivenconstruction",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/rvt-to-excel",
    "downloadUrl": "https://openagent3.xyz/downloads/rvt-to-excel",
    "agentUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rvt-to-excel/agent.md"
  }
}