> ## Documentation Index
> Fetch the complete documentation index at: https://docs.realtimelca.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import a model from Forma/ACC

> Use the RTLCA x Autodesk MCP to extract element quantities from a Revit model in Forma and import them into your project inventory

export const ChatAgent = ({children, label = 'Agent'}) => <div style={{
  display: 'flex',
  justifyContent: 'flex-start'
}}>
    <div style={{
  maxWidth: '95%',
  minWidth: '40%'
}}>
      <div style={{
  fontSize: '0.7rem',
  textTransform: 'uppercase',
  letterSpacing: '0.06em',
  opacity: 0.55,
  marginBottom: '0.3rem'
}}>
        {label}
      </div>
      <div style={{
  background: 'rgba(128, 128, 128, 0.09)',
  border: '1px solid rgba(128, 128, 128, 0.25)',
  borderRadius: '12px 12px 12px 2px',
  padding: '0.4rem 1rem',
  overflowX: 'auto'
}}>
        {children}
      </div>
    </div>
  </div>;

export const ChatUser = ({children, label = 'You'}) => <div data-chat-turn="user" style={{
  display: 'flex',
  justifyContent: 'flex-end'
}}>
    <div style={{
  maxWidth: '88%',
  minWidth: '40%'
}}>
      <div style={{
  display: 'flex',
  alignItems: 'center',
  justifyContent: 'flex-end',
  gap: '0.5rem',
  marginBottom: '0.3rem'
}}>
        <span style={{
  fontSize: '0.7rem',
  textTransform: 'uppercase',
  letterSpacing: '0.06em',
  opacity: 0.55
}}>
          {label}
        </span>
        <button type="button" aria-label="Copy prompt" className="px-2 py-1 flex items-center gap-1 justify-center rounded-lg border cursor-pointer transition-colors duration-70 outline-offset-4 text-xs/[16px] whitespace-nowrap font-medium border-transparent bg-primary text-white hover:bg-primary-dark" onClick={event => {
  const button = event.currentTarget;
  const turn = button.closest('[data-chat-turn]');
  const body = turn && turn.querySelector('[data-chat-body]');
  if (!body) return;
  navigator.clipboard.writeText(body.innerText.trim());
  button.textContent = 'Copied';
  setTimeout(() => {
    button.textContent = 'Copy';
  }, 1500);
}}>
          Copy
        </button>
      </div>
      <div data-chat-body="true" style={{
  background: 'rgba(99, 102, 241, 0.12)',
  border: '1px solid rgba(99, 102, 241, 0.35)',
  borderRadius: '12px 12px 2px 12px',
  padding: '0.4rem 1rem',
  overflowX: 'auto'
}}>
        {children}
      </div>
    </div>
  </div>;

export const Chat = ({children}) => <div style={{
  display: 'flex',
  flexDirection: 'column',
  gap: '0.75rem',
  margin: '1.25rem 0'
}}>
    {children}
  </div>;

Your model lives in **Autodesk Construction Cloud** or **Autodesk Forma**,
and the [Speckle integration](/user-guide/integrations/speckle/revit) isn't an option.

The [RTLCA × Autodesk MCP server](/ai-tools/autodesk-mcp) reads the model and browses the ACC/Forma folder
tree, opens the design, reads each element's category, type, material and
quantity, and hands you a review table before anything is written to
Real-Time LCA.

No export, no download, no round trip through Excel.

## Prerequisites

* A project in ACC/Forma with a Revit model
* An RTLCA project to import into
* An AI client connected to the [RTLCA × Autodesk MCP server](/ai-tools/autodesk-mcp)

<Note>
  The first prompt you send returns an **Autodesk sign-in link**. Click it, sign in, then resend the prompt (see
  [how authentication works](/ai-tools/autodesk-mcp#how-authentication-works)).
</Note>

The walkthrough below reads `CPH Lighthouse Structures.rvt` from the
`Sample Lighthouse Project` in ACC into the `Sample Lighthouse CPH` project
in Real-Time LCA. Substitute your own names.

<Steps>
  <Step title="Find the Autodesk project" icon="folder-tree">
    Start by confirming what the agent has access to. This is also the
    prompt that triggers the Autodesk sign-in link the first time.

    <Chat>
      <ChatUser>
        What projects can you see in Autodesk Forma?
      </ChatUser>

      <ChatAgent>
        You have access to one account, **Your Hub in Forma** (region EMEA), with
        one project:

        | Project                   | ID                 |
        | ------------------------- | ------------------ |
        | Sample Lighthouse Project | `b.bbbaaabbb…aaaa` |
      </ChatAgent>
    </Chat>

    If nothing comes back, your Autodesk account has no active hub.
  </Step>

  <Step title="Locate the model file" icon="file-lines">
    Models sit in the project's folder tree, so let the agent browse it.

    <Chat>
      <ChatUser>
        Browse Project Files in Sample Lighthouse Project and list all available Revit models.
      </ChatUser>

      <ChatAgent>
        `Project Files` holds ten discipline folders plus these files at the
        root:

        * `CPH Lighthouse Architecture.rvt` — Revit Cloud Worksharing model
        * `CPH Lighthouse Structures.rvt`
        * `CPH Lighthouse MEP.rvt`
        * `CPH Lighthouse Landscape.rvt`

        Which model should I read?
      </ChatAgent>
    </Chat>

    <Tip>
      Discipline models are usually separate files. Import them one at a
      time into the same RTLCA project, e.g. first architecture, then structures.
    </Tip>
  </Step>

  <Step title="Pick the view to read" icon="eye">
    This step decides what goes into your RTLCA inventory.

    A Revit design is published as a set of **views**, and each view exposes only
    its own elements. It is therefore essential that you select the correct view.

    <Tip>
      It can be frustrating to miss some elements or have irrelevant quantities in the inventory.\
      Define a LCA View Template in Revit to ensure the completeness and relevance of the
      content. Particularly make sure to use the Phase filters correct and do not show LCA-irrelevant conent, e.g. furniture.
    </Tip>

    <Chat>
      <ChatUser>
        Which views does CPH Lighthouse Structures.rvt have?
      </ChatUser>

      <ChatAgent>
        25 views, 13 of them 3D. Only one covers the whole model:

        | View                               | Covers                     | Master view | Default |
        | ---------------------------------- | -------------------------- | ----------- | ------- |
        | `New Construction LCA`             | Whole model                | Yes         | Yes     |
        | `Structure Only`                   | Structure, no architecture | No          | No      |
        | `Structure Foundations`            | Foundations only           | No          | No      |
        | `Structure Columns`                | Columns only               | No          | No      |
        | `Structure Framing`                | Framing only               | No          | No      |
        | `Structure Slabs`                  | Slabs only                 | No          | No      |
        | `Structure Only L1` … `L4`, `Roof` | One level each             | No          | No      |

        The remaining 12 are 2D sheets and plans. `New Construction` is the
        master view — shall I use it?
      </ChatAgent>
    </Chat>

    Prefer, in order: a view the model author made for LCA or quantities,
    then the master 3D view, then the default view. The per-discipline and
    per-level views above are traps — `Structure Columns` would give you an
    inventory of columns and nothing else.

    Names aren't always that honest, though. When you can't tell from the
    list, look at the model before you extract from it.

    <Chat>
      <ChatUser>
        Open a preview of CPH Lighthouse Structures.rvt so I can check the views.
      </ChatUser>

      <ChatAgent>
        Here's the model. Switch views with the **View** dropdown, top left.

        <img src="https://mintcdn.com/real-timelca/FIpEusQLvdTsGTPf/images/use-cases/autodesk-design-preview.png?fit=max&auto=format&n=FIpEusQLvdTsGTPf&q=85&s=3224eb1cdae1fd6d2c7808de08e74c95" alt="Model viewer showing CPH Lighthouse Structures.rvt with the View dropdown set to 3D: Structure Only. A multi-storey steel and concrete frame sits on foundation piles, with a navigation cube and viewer toolbar." style={{ display: 'block', width: '100%', margin: '0.5rem 0', borderRadius: '8px', border: '1px solid rgba(128, 128, 128, 0.25)' }} width="1466" height="818" data-path="images/use-cases/autodesk-design-preview.png" />
      </ChatAgent>
    </Chat>

    Step through the candidates and watch what appears. `Structure Only`
    above is clearly the frame without the architecture — fine if that's
    what you want, wrong if you expected the whole building. Thirty seconds
    in the viewer beats discovering a half-empty inventory after the import.
  </Step>

  <Step title="Extract the elements" icon="boxes-stacked">
    Now name the view, the model and the target RTLCA project in one prompt.

    <Chat>
      <ChatUser>
        Extract the elements from the New Construction LCA view of
        CPH Lighthouse Structures.rvt into my Sample Lighthouse CPH project.
      </ChatUser>

      <ChatAgent>
        **1,161 elements** extracted from `New Construction LCA`, in 42 groups.
        **471 skipped** — no type/category, or no quantities. Top categories:
        Structural Framing (945), Structural Foundations (77), Walls (58),
        Structural Columns (54), Floors (27).

        Review the groups below and press **Send to Real-Time LCA** when
        you're happy. Nothing has been sent yet.

        <img src="https://mintcdn.com/real-timelca/FIpEusQLvdTsGTPf/images/use-cases/autodesk-review-table.png?fit=max&auto=format&n=FIpEusQLvdTsGTPf&q=85&s=5bb5eb34faebab771789e47bed8cecf4" alt="Review table headed CPH Lighthouse Structures.rvt — 1161 elements, view New Construction, 471 elements skipped. Rows grouped by category with type, material, element count and quantities columns; footer reads 1161 of 1161 elements selected (42 of 42 groups) beside a Send to Real-Time LCA button." style={{ display: 'block', width: '100%', margin: '0.5rem 0', borderRadius: '8px', border: '1px solid rgba(128, 128, 128, 0.25)' }} width="751" height="650" data-path="images/use-cases/autodesk-review-table.png" />
      </ChatAgent>
    </Chat>

    <Warning>
      A skipped count that dwarfs the extracted count means the view is wrong,
      or the model has no material assignments.
    </Warning>
  </Step>

  <Step title="Review, then send" icon="circle-check">
    The review table groups elements by category, then by
    `type` ‧ `material`, with the quantities the agent read from the model
    (`2.57 m3 · 67.32 m2`). This is your last checkpoint before anything is
    written to RTLCA. Unclick what doesn't belong in the LCA: temporary works, existing
    elements you're not counting, furniture.

    Press **Send to Real-Time LCA**, or drive it from the chat instead:

    <Chat>
      <ChatUser>
        Send only the Floors, Walls and Structural Columns groups.
      </ChatUser>

      <ChatAgent>
        Imported 139 elements into `Sample Lighthouse CPH` as inventory
        materials, stage `newConstruction`. They're unmapped — no EPD linked,
        so no GWP yet.

        Want me to preview automapping, or pick EPDs manually?
      </ChatAgent>
    </Chat>
  </Step>
</Steps>

## One-shot prompt

Once you know the model, view and target project, the whole flow fits in a
single prompt.

<Prompt description="Import Autodesk model quantities into an RTLCA project inventory" icon="cubes">
  ```text theme={null}
  Import the quantities from my Autodesk model into a Real-Time LCA project.

  1. Call aps_list_projects and confirm which Autodesk account and project holds the model.
  2. Browse the project folders (aps_browse_project) until you find the model file. List the models you find and let me confirm before reading one.
  3. Call aps_list_design_views on that model. Do not accept the default view silently — show me the 3D views and say which you'd pick. Prefer a view named for LCA/quantities, then the master 3D view. Never read a 2D sheet, plan or section view for quantities, and never read a view scoped to one discipline or one level (e.g. "Structure Columns", "Structure Only L1") unless I ask for exactly that slice.
  4. If the view names don't make it obvious which one covers the whole model, call aps_preview_design so I can switch views in the viewer and tell you which to use.
  5. Confirm the target RTLCA project with rtlca_list_projects and match it by name.
  6. Call aps_extract_design_elements with the chosen projectId, designId, viewGuid and rtlcaProjectId. Report the element count, the skipped count and the top categories. If skipped elements outnumber extracted ones, stop and tell me the view is probably wrong.
  7. Show me the element groups (category||type||material) and wait for my go-ahead. Do not call aps_send_extracted_elements until I confirm which groups to include.
  8. After sending, summarise how many elements landed in the inventory, grouped by category, and note that they're unmapped.

  Set stage to newConstruction unless I tell you the model is a renovation.
  ```
</Prompt>

## Next

Once the inventory is populated, [map materials to EPDs](/use-cases/map-materials-to-epds).
