# ACIS

El modelador ACIS es un núcleo (o motor) geométrico de modelado tridimensional propiedad de Spatial Corporation. ACIS es usado por varios sistemas de diseño asistido por computadora (CAD), fabricación asistida por computadora (CAM), CAE, AEC, CMM, animación en 3D y astilleros. ACIS provee la funcionalidad necesaria para modelar en 3D.
ACIS posee una arquitectura abierta, y orientada a objetos, en lenguaje C++ lo cual le permite tener capacidades de modelado de sólidos más robustas. Con ACIS se pueden construir aplicaciones con características mixtas, pues éste integra modelación de varios tipos: superficie, mallas tipo Wireframe y modelado de sólidos de topología con y sin variedad, además de una gran colección de operaciones geométricas.

## Arquitectura

La línea de producción de ACIS usa tecnología de componentes de software, lo cual le permite a una aplicación utilizar solos los componentes que requiera. Esta comunicación se hace a través de una API (Application Programming Interface - Interfaz de Programación de Aplicaciones).

### Plataformas disponibles y sistemas operativos

| Plataforma | Sistema Operativo | Compilador | 32-bit | 64-bit |
| Microsoft® | Windows XP Professional SP2 | Visual C++.NET 2005 | X | |
| Microsoft® | Windows 2000 SP4 | Visual C++.NET 2003 | X | |
| Microsoft® | Windows Server 2003 | Visual C++ 6.0 SP5 | X | |
| Microsoft® | Windows XP Professional x64 Edition | Platform SDK for Windows Server February 2003 Versión 13.10.2240.8 | | X |
| Red Hat® | Enterprise Linux, Versión 3 | GNU C++ gcc 3.2.3 | X | X |
| Apple® | OS X 10.4 (Native BSD) | GNU C++ gcc 4.0 and XCode 2.3 | X | |
| IBM® | AIX® Versión 5.1 | VisualAge® C++ Versión 6.0 | X | X |
| HP | HP-UX 11.0 | HP aC++ Versión A.03.52 | X | X |
| Sun$^{TM}$ | Solaris$^{TM}$ 8&9 | Sun ONE$^{TM}$ Studio 8 | X | X |

## Funcionalidad
### Modelador ACIS

La distribución central de ACIS puede dividirse en tres categorías

#### Modelado de sólidos

* Extrusiones/Revoluciones/Barridos de conjuntos de curvas en 2D para crear superficies complejas o sólidos.
* Ajuste de superficies a conjuntos de curvas.
* Generación de patrones de formas repetidas.
* Sólidos huecos y engrosamiento de superficies.
* Doblado interactivo, torceduras, estiramientos y deformaciones de curvas, superficies y sólidos.
* Operaciones Booleanas de intersección/unión/diferencia de cualquier combinación de curvas, superficies o sólidos.

#### Gestión de modelado de sólidos

* Es posible adjuntar datos definidos por el usuario a cualquier nivel de un modelo.
* Rastrear cambios de geometría y topología.
* Modelado de subregiones de un sólido por medio de topología celular.
* Manejo de historia de construcción de modelo de manera independiente con capacidad de rehacer/deshacer cambios.

#### Visualización de modelos sólidos
### Modelador ACIS con extensiones

* Modelado de sólidos deformables.
* Cobertura avanzada,
* Descomposición de características,
* Remoción de líneas ocultas (tecnología 3D PHL V5), basado en tecnología CATIA V5.

## Formas de interactuar con ACIS

Existen tres maneras de interactuar con ACIS.
* La primera es por medio del conjunto de APIs invocadas a través de los componentes de software requeridos. Es quizás la forma más indicada de interactuar con ACIS, pues provee manejo de memoria e historial de modelado (deshacer/rehacer), y captura de errores tanto internos en ACIS, como externos a este (p.ej. violación de segmentos de memoria).
* La segunda manera de interactuar con ACIS, es por medio de funciones directas. Aún existen funciones que, por razones historias, están disponibles para ser utilizadas directamente. Cabe anotar que estas funciones no tienen el tipo de protección dado por las APIs.
* La tercera, y tal vez de mayor utilidad, sería a través de Scheme, el lenguaje tipo script utilizado para creas prototipos de utilidades de manera rápida.

### Interfaz en Scheme

Como se mencionó anteriormente, la tercera manera de interactuar con ACIS es haciendo uso de la interfaz Scheme AIDE (o en inglés Scheme ACIS Interface Driver Extension). Esta es una pequeña aplicación que hace uso de ACIS. Es muy útil para desarrolladores de aplicaciones en ACIS, pues permite correr pequeños programas tipo script en lenguaje Scheme, útil para la creación de código de prototipo. Otros propósitos suelen ser:
* Proveer una forma de comprobar la funcionalidad ofrecida por ACIS sin necesidad de escribir o compilar una aplicación en C++. Tal como se menciona antes, esto permite que los desarrolladores puedan aprender y crear prototipos de cualquier funcionalidad.
* Ayudar a dar una idea de cómo implementar alguna funcionalidad específica en una aplicación desarrollada en C++, dado que Spatial Corp proporciona el código fuente en C++ para la creación de las extensiones en Scheme utilizadas por Scheme AIDE,
* Servir como ejemplo para la creación de aplicaciones de ACIS en Scheme o el punto de partida para la creación de una nueva aplicación de ACIS en Scheme.
* Finalmente, servir como una herramienta de comunicación con Spatial para reportar fallas o “bugs“ en el software.
Scheme AIDE es un programa tipo TUI (Text-based User Interface) que accepta comandos en Scheme y muestra los resultados en una ventana separada, estos comandos pueden ser instrucciones nativas en Scheme o extensiones Scheme para la manipulación de ACIS.

## Sistema de archivos

ACIS guarda información sobre los modelos en archivos externos los cuales tiene un formato abierto. Esto le permite a otras aplicación, aún aquellas que no están basadas en ACIS, el acceso y manipulación del modelo geométrico. La información mínima necesaria para entender el formado de archivo ACIS incluye la estructura del formato del archivo, como se guardan los datos, los tipos de datos escritos, los subtipos y las referencias.

### Tipos de archivos

Existen dos tipos de archivos en ACIS. El tipo Standard ACIS Text (SAT) y el tipo Standar ACIS Binary (SAB). Ambos poseen la misma información, por lo tanto el término archivo SAT se utiliza cuando no se necesita hacer ninguna diferenciación. Los archivos tipo SAT son archivos de texto tipo ASCII y por lo tanto se pueden visualizar por medio de cualquier editor de texto. Los archivos tipo SAT tienen características de texto fáciles de leer tales como nueva línea, espacios entre palabras. Estos archivos tiene la extensión.sat. Los archivos tipo SAB, por el contrario, no se pueden visualizar fácilmente con un edidor de texto. Estos están diseñados para ser más compactos y no para la lectura por los humanos. Los archivos tipo SAB tienen la extensión.sab.

### Estructura del archivo

La estructura del archivo está dividida en bloques tales como:
* Encabezado (tres renglones),
* Registros de entidades - La mayor parte de los datos,
* Opcional - Marcador de comienzo de historia de datos.
* Opcional - Registros de entidades antiguas necesarias para la historia y operaciones de navegación (rehacer/deshacer).
* Opcional - Marcador de final de historia de datos
* Marcador de fin de archivo.