La interfaz de scripting de QCAD 3

La versión 3 de QCAD revoluciona la forma en que se puede ampliar QCAD y desarrollar nuevas aplicaciones relacionadas con CAD sobre él.

Utilizando la potente interfaz de scripts de QCAD 3, se pueden añadir a QCAD nuevas herramientas interactivas y componentes de interfaz de usuario sin tener que configurar un entorno de desarrollo ni requerir una licencia especial de desarrollador. Del mismo modo, pueden desarrollarse aplicaciones completamente nuevas utilizando únicamente la interfaz de scripts de QCAD.

Ampliación de QCAD

Extender QCAD implica crear un archivo ECMAScript que añada un componente de interfaz de usuario cuando se cargue QCAD. Por ejemplo, si la extensión es una nueva herramienta, el script podría añadir un menú, un botón de la barra de herramientas, un comando o un código clave para lanzar esa herramienta.

Cuando se lanza la herramienta, el mismo script comienza a manejar toda la interacción del usuario para "hacer algo". Podría, por ejemplo, mostrar un cuadro de diálogo, pedir alguna entrada al usuario, permitir al usuario especificar una posición en el dibujo, etc. Basándose en esas entradas, el script podría, por ejemplo, añadir o modificar el contenido de un dibujo.

Los casos de uso típicos para ampliar QCAD a través de su interfaz de script son:

  • Una herramienta que genere automáticamente un componente reutilizable a partir de unos parámetros dados por el usuario y que, opcionalmente, permita al usuario posicionar el componente en el dibujo actual.
  • Un componente de interfaz de usuario que muestre un dibujo interactivo o muestre información sobre el dibujo actual o la selección en el dibujo.
  • Una herramienta que genera un nuevo dibujo, basándose en el dibujo visualizado actualmente.
  • Importadores y exportadores para nuevos formatos de archivo.
  • ...

Ejemplos de extensiones existentes de QCAD son:

  • Casi todas las herramientas y componentes de la interfaz de usuario de la aplicación QCAD se implementan como extensiones de script. Algunas herramientas implementan la mayor parte de su funcionalidad en ECMAScript (por ejemplo, exportador SVG, editor de propiedades, herramientas de dibujo, herramientas de modificación, ...) y otras herramientas se implementan principalmente en C++ pero se llaman a través de ECMAScript (por ejemplo, importador / exportador DWG basado en Teigha).

Plugins C++ de QCAD

Hay situaciones en las que extender QCAD sólo a través de scripts no es posible. Este es mayormente el caso, si su extensión está basada en una librería C o C++ existente. En ese caso, puede crear un plugin QCAD C++ que envuelva su librería y añada los ganchos necesarios para acceder a la funcionalidad de la librería a través de la interfaz del script. Tal plugin puede ser cargado automáticamente por QCAD en el arranque para añadir funciones y clases a la interfaz de script de QCAD. Estas extensiones de script pueden entonces ser utilizadas por sus complementos de script para hacer que esa funcionalidad esté disponible como parte de la interfaz de la aplicación.

Un complemento puede, por ejemplo, ofrecer la exportación a un formato de archivo a través de una biblioteca existente para ese formato. El complemento se registra como exportador de archivos y pasa a estar disponible como opción de formato en el cuadro de diálogo Archivo - Guardar como. Alternativamente, podría registrar una función de script para exportar un documento (por ejemplo, exportDocument(documento, fileName)). Esta función podría ser llamada por un complemento de script que está disponible a través de una nueva entrada de menú Archivo - Exportar XY.

Creación de nuevas aplicaciones basadas en la tecnología QCAD

Una nueva aplicación podría, por ejemplo, crear un documento de dibujo, añadirle algunas entidades, guardarlo como archivo DXF y cerrarse. O podría crear una interfaz de usuario compleja que permita al usuario interactuar y trabajar con ella. Desarrollar scripts sobre la tecnología QCAD es igual que desarrollar en cualquier otro entorno. La interfaz de scripts no impone ningún límite, ya que casi todas las clases del kit de herramientas Qt y QCAD son totalmente scriptables.

Aunque se puede desarrollar cualquier tipo de aplicación utilizando este enfoque, las aplicaciones basadas en QCAD normalmente estarán relacionadas con CAD.

Por ejemplo:

  • Aplicaciones GUI que deben ser capaces de cargar y mostrar dibujos CAD.
  • Aplicaciones que analizan dibujos.
  • Aplicaciones que convierten o publican dibujos.
  • Aplicaciones que crean dibujos basados en la entrada del usuario, bases de datos SQL, archivos XML, etc.
  • ...

Ejemplos de aplicaciones existentes basadas en QCAD son:

  • Las utilidades de línea de comandos que se incluyen con cada instalación de QCAD Professional: dwg2pdf, dwg2bmp y dwg2svg.
  • La propia aplicación QCAD.

Requisitos

Cualquier usuario de QCAD puede empezar a desarrollar nuevas herramientas y funciones para QCAD inmediatamente.

Todo lo que se necesita es un editor de texto y conocimientos básicos de ECMAScript (JavaScript).

No se requiere una licencia de Teigha. Teigha proporciona exportación e importación de archivos en formato DXF / DWG y se incluye con cada licencia de usuario regular de QCAD Professional. Si su complemento de script o aplicación se basa en el soporte de formato DXF / DWG a través de Teigha, el usuario (s) de su complemento requerirá una licencia QCAD Professional de usuario único, sitio o servidor.

No se requiere una licencia Qt. Las bibliotecas Qt y la interfaz ECMAScript a las bibliotecas Qt se incluyen con cada instalación regular de QCAD.

Alcance de la API

La interfaz de scripting de QCAD proporciona acceso completo al framework Qt sobre el que está construido QCAD. Por lo tanto, si ya está familiarizado con Qt, puede aprovechar este conocimiento en sus scripts de QCAD. Por ejemplo, la creación de una barra de herramientas con la interfaz de scripts de QCAD funciona de la misma manera que en C++, sólo que con la sintaxis ECMAScript ligeramente diferente:

var toolBar = new QToolBar("Mi barra de herramientas");
mainWindow.addToolBar(Qt.TopToolBarArea, toolBar);

Cuando se trata de funcionalidades específicas de CAD, puede utilizar la API de QCAD, por ejemplo en este fragmento de código, que añade una entidad de línea a un documento de dibujo:

var op = new RAddObjectsOperation();
var lineEntity = new RLineEntity(document, new RLineData(new RVector(0,0), new RVector(50,10)));
op.addObject(lineEntity);
op.apply(document);

La API Qt ofrece módulos y clases para:

  • Desarrollo de GUI
  • Acceso a bases de datos SQL
  • WebKit
  • XML
  • OpenGL
  • Redes
  • Internacionalización / Localización
  • Multimedia

La API Qt está documentada en doc.qt.io

La API QCAD añade a esto toda la funcionalidad específica de CAD como:

  • Escena gráfica y vista
  • Importación / exportación de formatos CAD
  • Manejo de la interacción del usuario en las vistas gráficas
  • Núcleo CAD (almacenamiento de entidades, renderizado de entidades, algoritmos, índice espacial, ...)

La API de QCAD está documentada en qcad.org/doc/qcad/latest/developer/

En el mismo sitio también encontrará algunos tutoriales y howtos para empezar.