############
Fundamentals
############

This guide provides insight into the fundamental components that drive |HCNOW|'s programming interface.

|HCNOW| is a powerful SDK that enables rapid deployment of high-performance 3D web applications. It includes both client and server components, providing full access to engineering data and offering flexibility in markets such MCAD, BIM, and other visualization-driven industries.

The SDK contains several core components to create a full web-based engineering application and contains three distinct modules:

* **Authoring:** Converter and Stream Cache Library are used to create a Stream Cache file, a proprietary format optimized for streaming and client/server interaction.

* **Web Viewer:** A client component designed for high-performance web-based visualization.

* **Server:** A server component that manages the streaming of CAD model data to the Web Viewer client.

**Converter** is a server-side stand-alone multiplatform executable that provides access to more than 30 CAD formats. Its principal function is to prepare data to be streamed to the Web Viewer client as well as provide product structure information for associating your own business logic to the converted models.

The **Stream Cache Library** is a multiplatform C++ and Java library to create your own Stream Cache models.

**Web Viewer** is a robust JavaScript library designed for high-quality 3D visualization in the web browser. It includes built-in tools for user interactions, such model selection and manipulation, markup creation, and the ability to query and analyze engineering data.

**Server** facilitates fast and intelligent streaming via a direct WebSocket connection to the Web Viewer client. Two different rendering modes are available:

#. Server-Side Rendering: The heavy-lifting of 3D rendering is offloaded to the server, ensuring a smooth and responsive client experience across all supported devices. 
#. Client-Side Rendering: This mode takes full advantage of available graphics hardware on the client device for rendering the model.

|HCNOW| provides advanced functionality for building 3D engineering web applications, with robust support for engineering data, BIM data, 3D visualization, and server-side processing.

Engineering Data
----------------

|HCNOW| facilitates access to all engineering data within CAD models:

* Product structure
* PMI
* CAD
* Filters and layers
* 2D drawings
* Point clouds
* Configurations
* Physical properties
* Cutting sections
* Grids
* Reference geometry

BIM Data
--------

|HCNOW| includes functionalities specific to the Building and Construction Industry:

* 2D floorplan
* BCF format support
* IFC global IDs
* IFC layers
* IFC spatial relationship
* DWG sheets
* Federated models

Visualization
-------------

A rich JavaScript API to manipulate a 3D WebGL scene.

* Built-in navigation operators 
* Cutting sections
* Markup and annotations 
* Selection
* Highlighting
* Drawing modes 
* Lightings
* Rendering effects
* Point clouds
* Animation
* Client-side rendering

Server Component
----------------

A server that is both easy to deploy and use. 

* Server-side rendering
* Streaming
* Docker support
