Quiero crear un servicio en línea que use AutoCAD sentado en un servidor para servir a los usuarios que solicitan el servicio desde una página web. es posible?

Probablemente pueda lograr esto, pero violaría el EULA de AutoCAD. No les gusta en un servidor (a menos que Autodesk lo posea) porque quieren que pague una licencia por usuario.


Ignorando la legalidad, puedo pensar en tres formas de hacer esto.

Más lento, pero más fácil: la API ActiveX de AutoCAD (también conocida como Automatización COM). Esta es la forma más fácil de controlar AutoCAD desde un programa externo. Puede usar ASP o Asp.net para la interfaz web y escribir un dll en VB6, Vb.net o C # para ejecutar en el servidor y conducir AutoCAD como desee. Esta API expone los conceptos básicos de la pantalla de AutoCAD y la base de datos de dibujo. Hay algunas funciones a las que no puede acceder con esta API, pero puede acceder a aproximadamente el 70% de las funciones de AutoCAD. Lo malo es que es lento. Cada llamada se ordena a través de límites de proceso, y cada interacción con la base de datos de dibujo se envuelve en una transacción separada detrás de escena. Esto está bien en algunos escenarios, como la creación de nuevas entidades en un dibujo, pero realmente se atasca para el trabajo de alto volumen, como iterar sobre el conjunto de entidades en un dibujo buscando algo.


Una forma más eficiente de controlar AutoCAD es usar AutoCAD. API neta Puede crear un archivo DLL que se carga en el espacio de proceso de AutoCAD y puede acceder a las bases de datos y la interfaz de usuario sin cruzar los límites del proceso todo el tiempo. Esto es más rápido al menos en un orden de magnitud. La desventaja es que es más difícil manejarlo desde un programa externo. Lo que he hecho antes es crear dos dlls, uno para ejecutar dentro de AutoCAD y hacer las manipulaciones, y otro para ejecutar fuera de él que interactúa con el mundo exterior. Puede pasar objetos COM personalizados a través del límite del proceso para decirle al programa interno qué hacer y obtener resultados. La API .Net expone aproximadamente el 90% de la funcionalidad de AutoCAD. Solo hay algunas ocasiones en las que he tenido que llamar a una función nativa de AutoCAD de la manera más difícil.

Se puede encontrar información sobre estas técnicas en:

Interfaz de una aplicación COM externa con un módulo .NET en proceso a AutoCAD (redux)

Arquitectura peculiar que interconecta .NET con AutoCAD fuera de proceso


La tercera API que se podría usar es AutoCAD ARX. Esto está destinado a ser utilizado desde C ++. Revela aproximadamente el 99% de la funcionalidad de AutoCAD. Puede hacer casi cualquier cosa aquí y es el más rápido, pero tendrá muchos de los mismos requisitos arquitectónicos que el ejemplo .Net dado anteriormente. De hecho, la API .Net a menudo es solo un contenedor administrado delgado sobre la API ARX.


Otra cosa para pensar es ganar competencia con la tabla de objetos en ejecución COM. Es posible que necesite esto para admitir múltiples usuarios simultáneos en su servidor. Mapearía a esos usuarios para separar las instancias de AutoCAD que se ejecutan en el servidor para mantenerlos fuera del camino del otro. Debería crearlos y realizar un seguimiento de ellos al hacerlos coincidir con la instancia de aplicación correcta que figura en la tabla de objetos en ejecución. Tendría que hacer esto a través de las interfaces COM, ya que un comando simplificado como GetObject generalmente solo le dará la primera instancia. Tal vez pueda evitar algo de este desorden simplemente creando el objeto de la aplicación y luego no perder de vista a qué usuario lo tiene vinculado.


¡Buena suerte con tu proyecto! Espero que esto ayude a aclarar qué API es la adecuada para su tarea.

More Interesting

Hice un sitio web de Squarespace usando la plantilla de Hayden y necesito reducir los márgenes izquierdo y derecho. ¿Hay un código CSS que pueda insertar para hacer esto?

He creado un sitio web con WordPress ¿Cómo alojarlo en WordPress gratis?

No sé nada sobre diseño web, etc. ¿Funcionaría comprar un sitio web generador de dinero y externalizar su mantenimiento?

Recientemente he lanzado creativorama.com. ¿Alguien tiene algún consejo sobre qué mejoras deben hacerse para aumentar las conversiones?

Quiero que un sitio web aparezca de manera diferente como administrador y como usuario habitual. ¿Qué piensa sobre cómo lograr esto con Ruby on Rails?

Soy un estudiante de primer año de CSE de una universidad india de primer nivel. Como es el momento de las vacaciones, comencé con HTML, CSS, PHP y MySql para el desarrollo web. ¿Qué otras medidas debo tomar para convertirme en un desarrollador web competente al final de las vacaciones?

Tengo una licenciatura en diseño web y quiero obtener un certificado en desarrollo front-end o UX. ¿Qué programa o tutoría en línea me recomiendan?

Mi sitio web se está cargando lentamente. Al comprimir el CSS, el aspecto del sitio empeora. ¿Qué tengo que hacer?

Estoy desarrollando una página web que depende solo del front-end, ¿es posible crear una base de datos o algo similar que se ejecute en el front-end?

Tengo una idea para un sitio web. ¿Cómo hago para crearlo si no sé cómo crear realmente un sitio web?

Necesito iniciar un pequeño sitio web por mi cuenta. Como desarrollador web, ¿qué tipo de sitio web debo elegir?

¿Por qué necesito un software de base de datos (sql) cuando estoy creando un sitio web, una red social, una aplicación, etc.?

Tengo robots.txt en mi sitio web, ¿debería eliminarlo?

Si he comprado un nombre de dominio, ¿cómo creo ahora el sitio web?

Mi sitio de contenido de viajes: ¿Qué estoy haciendo bien o mal?