ACIS

De Viquipèdia
Dreceres ràpides: navegació, cerca
Per a altres significats vegeu «Acis (desambiguació)».
Modelador 3D ACIS®
Desenvolupador(s) Spatial Corp
Versió estable

Versió R20

/ Juliol de 2009
Sistema operatiu Windows 2000 (i superior), AIX (IBM), Solaris (Sun Microsystems, HP-UX (Hewlett-Packard), Mac OS X (Apple Computer) i Linux (RedHat)
Tipus Modelador 3D
Llicència Programari privatiu
Lloc web www.spatial.com

El modelador ACIS és un nucli geomètric de modelatge tridimensional en el camp de la computació, propietat de Spatial Corp. ACIS és utilitzat per diversos sistemes de Disseny assistit per ordinador (o en anglès CAD), Fabricació assistida per ordinador (CAM), CAE, AEC, CMM, Animació en 3D i fabricació de vaixells. ACIS proveeix la funcionalitat necessària per modelar en 3D.

ACIS posseeix una arquitectura oberta, i orientada a objectes, en llenguatge C++, la qual cosa li permet tenir capacitats de modelatge de sòlids més robustes. Amb ACIS es poden construir aplicacions amb característiques mixtes, car integra modelatge de diferents tipus: Superfície, filferro i modelatge de sòlids de topologia amb i sense varietat, a més d'una gran col·lecció d'operacions geomètriques.

Arquitectura[modifica | modifica el codi]

Plataformes disponibles i Sistemes Operatius[modifica | modifica el codi]

Plataforma Sistema Operatiu 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 Version 13.10.2240.8 X
Red Hat® Enterprise Linux, Version 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® Version 5.1 VisualAge® C++ Version 6.0 X X
HP HP-UX 11.0 HP aC++ Version A.03.52 X X
SunTM SolarisTM 8&9 Sun ONETM Studio 8 X X

Funcionalitat[modifica | modifica el codi]

Modelador ACIS[modifica | modifica el codi]

La distribució central de ACIS pot dividir-se en tres categories:

Modelatge de sòlids[modifica | modifica el codi]

  • Extrusions/Revolucions/Model d'escombrat de conjunts de corbes en 2D per crear superfícies complexes o sòlids.
  • Ajust de superfícies a conjunts de corbes.
  • Generació de patrons de formes repetides.
  • Sòlids foradats i gruix de superfícies.
  • Doblegat interactiu, torçats, estiraments i deformacions de corbes, superfícies i sòlids.
  • Operacions Booleanes d'intersecció/unió/diferència de qualsevol combinació de corbes, superfícies i/o sòlids.

Gestió de modelatge de sòlids[modifica | modifica el codi]

  • És possible adjuntar dades definides pel usuari a qualsevol nivell d'un model.
  • Rastrejar canvis de geometria i topologia.
  • Modelatge de sub-regions d'un sòlid per mitjà de topologia cel·lular.
  • Maneig d'història de construcció de model de manera independent amb capacitat de refer/desfer canvis.

Visualització de models sòlids[modifica | modifica el codi]

Modelador ACIS amb extensions[modifica | modifica el codi]

  • Modelatge de sòlids deformables.
  • Cobertura avançada.
  • Descomposició de característiques.
  • Remoció de línies ocultes (tecnologia 3D PHL V5), basada en tecnologia CATIA V5.

Interacció amb ACIS[modifica | modifica el codi]

Existeixen dues maneres directes d'interaccionar amb ACIS. La primera és per mitjà del conjunt d'APIs invocades a través dels components de software requerits.

Interfície en C++ ( API )[modifica | modifica el codi]

void main ()
{
// Inicialitzar motor geomètric
outcome res = api_start_modeller(0);
res = api_initialize_kernel ();
check_outcome (res);
BODY *lingote, *htta,
//
// Crear peça base
SPAposition cantonada_inf = SPAposition (0.0, 0,0, 0.0);
SPAposition cantonada_sup = SPAposition (20.0, 20.0,10.0);
res = api_solid_block(cantonada_inf, cantonada_sup, lingote);
check_outcome(res);
//
// Crear peça d'operació
SPAposition p_inf = SPAposition(10.0, 10.0, 5.0);
SPAposition p_sup = SPAposition(10.0, 10.0, 15.0);
double rad_menor = 5.0, rad_mayor = 5.0, rad_sup = 5.0;
res = api_solid_cylinder_cone(p_inf, p_sup, rad_menor, rad_mayor, rad_sup, NULL, htta);
check_outcome(res);
//
// Realizar operació Booleana d'unió
res = api_boolean(lingote, htta, UNION);
//
if (!res.ok()){
cout << "Operació no exitosa" << endl;
} else {
// Guardar resultaT 
ENTITY_LIST model_llista;
model_llista.add(lingote);
//
// Gestió d'arxiu
FileInfo fileinfo;
res = api_save_version(15,0);
check_outcome(res);
fileinfo.set_units (1.0);
fileinfo.set_product_id ("Wikipedia ACIS");
res = api_set_file_info (3, fileinfo);
check_outcome(res);
//
FILE *output_file = acis_fopen ("acis_model.sat", "w"); 
res = api_save_entity_list (output_file, TRUE, elist);
check_outcome(res);
acis_fclose (output_file);
}
api_terminate_kernel();
api_stop_modeller();
}

Interfície en Scheme[modifica | modifica el codi]

La segona és fent ús de la interfície Scheme AIDE (o en anglès Scheme ACIS Interface Driver Extension). Aquesta és una petita aplicació que fa ús d'ACIS. És molt útil per desenvolupadors d'aplicacions en ACIS, car permet córrer petits programes tipus script en llenguatge Scheme útil per la creació de codi de prototipus. Altres propòsits solen ser:

  • Proveir una forma de comprovar la funcionalitat oferta per ACIS sense necessitat d'escriure o compilar una aplicació en C++. Tal com s'ha mencionat abans, això permet que els programadors puguin aprendre i crear prototipus de qualsevol funcionalitat.
  • Ajudar a donar una idea de com implementar alguna funcionalitat específica en una aplicació desenvolupada en C++, donat que Spatial Corp proporciona el codi font en C++ per la creació de les extensions en Scheme utilitzades per Scheme AIDE.
  • Servir com a exemple per la creació d'aplicacions de ACIS en Scheme o el punt de partida per la creació d'una nova aplicació d'ACIS en Scheme.
  • Finalment, servir com una ferramenta de comunicació amb Spatial per reportar errades o "bugs" en el software.

Scheme AIDE és un programa tipus TUI (Text-based User Interface) que accepta comandes en Scheme i mostra els resultats en una finestra separada, aquestes comandes poden ser instruccions natives en Scheme o extensions Scheme per la manipulació d'ACIS.

(define lingote (solid:block (position 0 0 0) (position 20 20 10)))
(define htta (solid:cylinder (position 10 10 5) (position 10 10 15) 5))
(bool:unite lingote htta)
(part:save "acis_modl.sat")

Sistema d'arxius[modifica | modifica el codi]

ACIS guarda informació sobre els models en arxius externs els quals té un format obert. Això li permet a altres aplicacions, encara aquelles que no estan basades en ACIS, l'accés i manipulació del model geomètric. La informació mínima necessària per entendre el format d'arxiu ACIS inclou l'estructura del format de l'arxiu, com es guarden les dades, els tipus de dades escrites, els subtipus i les referències.

Tipus d'arxius[modifica | modifica el codi]

Existeixen dos tipus d'arxius en ACIS. El tipus Standard ACIS Text (SAT) i el tipus Standar ACIS Binary (SAB). Ambdós posseeixen la mateixa informació, per la qual cosa el terme arxiu SAT s'utilitza quan no es necessita fer ninguna diferenciació. Els arxiu tipus SAT són arxius de text tipus ASCII i per la qual cosa es poden visualitzar per mitjà de qualsevol editor de text. Els arxius tipus SAT tenen característiques de text fàcils de llegir, com nova línia, espais entre paraules. Aquests arxius tenen l'extensió .sat. Els arxius tipus SAB, en canvi, no es poden visualitzar fàcilment amb un editor de text. Aquests estan dissenyats per se més compactes i no per la lectura pels humans. Els arxius tipus SAB tenen l'extensió .sab.

Estructura de l'arxiu[modifica | modifica el codi]

L'estructura de l'arxiu està dividida en blocs com:

  • Encapçalat (tres renglons),
  • Registres d'entitats - La major part de les dades,
  • Opcional - Marcador del començament d'història de dades.
  • Opcional - Registres d'entitats antigues necessàries per la història i operacions de navegació (refer/desfer).
  • Opcional - Marcador de final d'història de dades.
  • Marcador de fi d'arxiu.

Enllaços externs[modifica | modifica el codi]