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.
- He realizado un diseño web comunitario en PS. ¿Cómo puedo hacer que se vea más adaptado para adultos y no para adolescentes?
- Estoy buscando instalar un foro en mi sitio web. ¿Cuál es el mejor?
- Sé poco HTML y CSS. Quiero ejecutar un blog, así que acabo de descargar la plantilla de WordPress de forma gratuita, pero no tengo idea de cómo usarla. ¿Cómo empezar?
- Terminé el curso de HTML y CSS en Codecademy hace aproximadamente 8 meses, pero no he practicado mucho, ¿debería volver a hacer el curso o simplemente comenzar a construir sitios?
- Necesito crear un sitio web básico. ¿Cuáles son algunos buenos sitios web que proporcionan plantillas y edición utilizando habilidades informáticas básicas?
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.