2009-04-22 8 views
9

¿Qué aplicaciones CAD (Rhino, Autocad) están escritas hoy en día y cómo están organizadas internamente?¿En qué están escritas las aplicaciones CAD y cómo están organizadas?

me ha puesto como ejemplo, AutoCAD y Rhino, aunque me gustaría escuchar de otros ejemplos. Estoy particularmente interesado en saber en qué está escrito su back-end (¿en varios idiomas?) Y cómo está organizado, y cómo manejan su interfaz (GUI) en tiempo real. ¿Utilizan las API nativas de Windows o algunas bibliotecas propias, ya que imagino, por buenas que sean, que las soluciones de código abierto en el mercado de hoy en día no lo cortarán? Puedo estar equivocado ...

Como la mayoría de ustedes que han utilizado ellos saben, que manejan amongs otras cosas operaciones de rotación relativamente complejas en tiempo real (sombreado no me es interesante). He estado haciendo algunos experimentos con varios paquetes recientemente, y para algunos modelos más grandes descubrí que hay una considerable diferencia de velocidad en, por ejemplo, la rotación programada (modelos de gran capacidad) entre algunos de ellos (que no nombraré) . Así que me pregunto acerca de sus partes internas ...

Además, si alguien sabe de algún libro sobre el tema, estaría interesado en escuchar de él.

Respuesta

7

Como mi empresa es un desarrollador registrado para AutoCAD, sé con certeza que su escrito en C++. Expone una interfaz COM, así como un contenedor .Net. Además, su pantalla gráfica está compuesta y posiblemente podría ser reemplazada. Hace mucho tiempo atrás en su historia se usaba multiplataforma. Sin embargo, ha sido Windows solo durante unos 10 años y ahora aprovecha cada función de Windows que he visto. Puede que le interese el Open Design Alliance.

4

El proyecto de código abierto BRL-CAD podría interesarle.

5

AutoLISP es un sabor de lisp que se ha usado durante años para programar AutoCAD. Muy poderoso, para nada amable. AutoCAD (y la mayoría de las verticales) han incorporado VBA durante aproximadamente 10 años. Tipo de poderoso, muy amigable. Los proyectos de VBA se almacenan en un archivo separado que se carga mediante un mecanismo interno al programa de host. La última versión (actualmente 2010) ya no incluye VBA por defecto. Debe instalar un habilitador de VBA por separado. Esto es para avisarnos que VBA (VB6) será en algún momento una cosa del pasado. La plataforma .NET es actualmente la opción preferida. VB.NET, C# .NET, C++ se usan comúnmente. Algunos han experimentado con otros lenguajes .NET como F # e IronPython.

+0

interesante. En su opinión, ¿cuál será la opción futura de scripting dentro de acad? Como dijiste, probablemente dejarán vba, ¿crees que lo mismo pasará con el ceceo? Por ahora hay dos versiones "auto" y "visual" ... – Rook

+0

He escuchado muchas veces la respuesta de Autodesk a esa pregunta: "Hay una enorme cantidad de código de ceceo heredado de los que nuestros clientes dependen". Supongo, pero no creo que abandonen el ceceo por muchos años. En cuanto a que VBA se va, no sucederá por muchos años por la misma razón. Quién sabe, quizás VSTA sea una opción futura. (Versión .NET de VBA) Por ahora parece ser .NET con una inclinación hacia C#. – mohnston

+1

AutoCAD 2010 enviado * sin * VBA (puede descargarlo por separado). VSTA es el futuro de los complementos de CAD. Cambian el formato binario cada 3 años, por lo que debe volver a compilar contra su (s) versión (es) de destino. –

7

software de CAD en 3D mecánicos, tales como CatiaV5, Pro/ENGINEER y SolidWorks están escritos en su mayoría en C++, a veces con una interfaz COM delgada para la publicación de la API básica para los clientes.

Dado que estas aplicaciones son realmente enorme y están siendo desarrolladas por varios equipos, que se basan en los principios de diseño ++ C escala grandes, tales como patrones/implementación de la interfaz para aislar los módulos de cambios.

Se componen de varios subsistemas, tales como:

  • un marco base para proporcionar abstracción del OS subyacente
  • un marco para la interfaz gráfica de usuario, cuadros de diálogo y la interacción del usuario
  • un renderizador 3D (en su mayoría utilizando OpenGL con un poco de capa de gráfico de escena personalizada)
  • un núcleo geométrico, con un módulo de teselación (para que la geometría se pueda mostrar en el representador)
  • modelador paramétrico b uild acerca del núcleo geométrica
  • y mucho modeladores específicas dirigidas a diferentes dominios (mecánica, la redacción, la simulación, ...)
Cuestiones relacionadas