Conectando SolidWorks y MATLAB

En la publicación Conectado Pro/ENGINEER y MATLAB explicaba como vincular dichos programas para poder caracterizar y diseñar el control de modelos mecánicos hechos en Pro/ENGINEER, teniendo en cuenta que ademas de Pro/ENGINEER hay otros programas dedicados a diseño y que se pueden conectar son MATLAB como SolidWorks, he decidido hacer esta publicación en la que explicaré el proceso de conexión de SolidWorks con MATLAB.

Para comenzar debemos descargar las librerías que vincularan los dos programas, vamos a SimMechanics Link y luego de ingresar algunos datos escogemos el archivo que mejor se ajuste a la versión y a la arquitectura del MATLAB y del SolidWorks que están instalados en el PC. Para mi caso descargo la ultima versión de win64 ya que estoy trabajando con la versión 2012a de MATLAB y con la versión 2012 de SolidWorks sobre Windows 7 de 64bits.

Luego de descargar el archivo lo extraemos en la carpeta donde esta instalado MATLAB, en mi caso seria en C:\Program Files\MATLABR2012a\, nos preguntara sí queremos sobrescribir algunos archivos a lo que diremos que si, seguidamente nos dirigimos a MATLAB y seleccionamos File > Set Path > Add with Subfolders, buscamos la carpeta C:\Program Files\MATLABR2012a\toolbox\physmod\smlink\, luego seleccionamos, aceptamos y para finalizar damos Save.

En la Command Window escribiremos smlink_linksw, luego aparecerá una alerta y preguntara si deseamos ejecutar una función privilegiada de MATLAB a lo que diremos que si, al final saldrá un aviso informando que una dll ha sido agregada al registro.

Luego corremos SolidWorks y nos dirigimos a Herramientas > Complementos y seleccionamos el SimMechanics Link, de esta manera ya se podrán exportar los modelos de SolidWorks a MATLAB.

Ahora solo es necesario probar que las dos aplicaciones hayan quedado conectadas correctamente, así que buscamos un ensamble que hayamos hecho con anterioridad, para este caso usare el modelo del robot bípedo que aparece al inicio de esta publicación. En SolidWorks vamos a Archivo > Guardar como… y en tipo escogemos SimMechanics Link (*.xml), luego de guardar deberán aparecer algunos archivos .stl en la carpeta donde se guardo el archivo .xml.

Nos dirigimos a MATLAB y en la Command Window escribimos mech_import lo que nos abrirá un cuadro de dialogo en el que podemos buscar el archivo XML creado anteriormente, luego veremos el diagrama de bloques en Simulink y ya podremos dedicarnos a las tareas exactas de modelado y control.

Sí ejecutamos el diagrama de bloques veremos que en la simulación no aparecerán solo barras simulando los eslabones, sino que aparecerán los cuerpos tal como los diseñamos.

El modelo del bípedo fue hecho por un compañero de la universidad. El bípedo hace parte de un proyecto grupal que por ahora está en pausa.

Si tienes alguna inquietud no dudes en comentar.

34 comments

    1. Hola Anthony, es un error en la publicación que ya está corregido, en la parte en la que menciono que se deben agregar las subcarpetas digo de que debe ser la C:Program FilesMATLABR2012atoolboxphysmodsmlinkcad_systems ahí está el error, debe ser C:Program FilesMATLABR2012atoolboxphysmodsmlink sin el cad_systems. Corregido eso MATLAB ya debe aceptar ese comando.
      Un saludo

  1. Hola,
    Yo he obtenido los bloques en SimMechanics como has explicado, pero mi problema es que cuando los simulo obtengo cuerpos nada realistas que distan mucho de sus dimensiones y cotas reales. ¿A qué puede ser debido? ¿Será algún problema de visualización?
    Saludos,
    Luis.

    1. Hola Luis, cuando Solid exportó el modelo a MATLAB creo un archivo .xml con el nombre del ensamble y algunos .stl con el nombre de las piezas del ensamble, para que SimMechanics los tome debes ir a la pantalla principal de MATLAB en la caja ‘Current Folder’ abres la carpeta donde están los archivos .stl, das click derecho en la caja, seleccionas Add to Path > Current Folder. Ahora si se deberían ver bien las piezas.
      Un saludo.

      1. Hola Palma, gracias por tu respuesta, me lo ha solucionado. Tengo ahora otra pregunta. Me gustaría saber si existe algún tipo de restricción en cuanto a formato de archivos en el proceso de puenteado de Solid a Simechanics. Más concretamente, saber si es necesario tener el ensamblaje en Solid para pasarlo a Simulink o se puede hacer desde un *.STEP por ejemplo. Mi problema es que tengo un CAD de un brazo robot que me viene diseñado de fábrica en un *.STEP y no sé si se pierden datos de joints entre piezas, contactos, inercias…
        Es que cuando exporto el CAD de un brazo robótico (en serie) de 6 grados de libertad, me hace un diagrama de bloques que no está en serie y es muy malo. Igual hay algún tipo de “regla” a seguir en cuanto a extensiones para el puente Solid Matlab…
        Saludos,
        Luis.

        1. Hola Luis, es mejor que utilices archivos nativos de SolidWorks o que por lo menos el ensamble sea hecho en Solid ,así las piezas sean STEP O IGES. Perdón por la tardanza en la respuesta.
          Un saludo

  2. Buenas una pregunta no se por que en la parte de complementos de Solid works no me aparece simMechanicals link me podrian ayudar
    GRACIAS

      1. soy anónimo lo que pasa es que donde dice otros complementos no me sale el SimMechanics Link ,no se si podrá ser por que mi matlab es 2009a y tengo solidWorks 2011 o eso no tiene que ver con mi problema.
        GRACIAS POR TU RESPUESTA RÁPIDA A MI ANTERIOR MENSAJE.

        1. Hola anónimo, ese puede ser tu problema, la segunda imagen de esta publicación es la captura de pantalla de la pagina de Mathworks en la que mencionan la compatibilidad del software. Debes dirigirte allá y descargar los archivos compatibles con tu version de MATLAB.
          Un saludo

  3. palma…
    me surgió un problema que no se como resolver. seguí el tutorial a pie de letra y todo funciono sin ningún inconveniente pero cuando fui a solidworks e intente guardar mi modelo este no me dejo guardar con la extencion de simmechanics. ya comprobé y el complemento aparece como activo pero no me deja usar la extencion .xml; se te agradecería mucho tu ayuda

    1. problema solucionado 😀
      al parecer en la version 2013 la opcion de comvertir los datos no aparece desde guardar como sino que aparece una nueva barra de tareas para esa funcion.

  4. hola palma, realice todas las instrucciones hasta introducir el comando smlink_linksw me aparece este error: (Registering dll: regsvr32 “C:Program FilesMATLABR2009abinwin32cl_sldwks2sm.dll”) no ce que hice mal o porque pasa.
    otra pregunta es si se puede importar con el solidworks 2012 y matlab 2009, espero tu respuesta, muchas gracias.

    1. Hola Miguel, no es un error, ese mensaje debe aparecer, ahora deberías continuar con el proceso sin ningún problema. Por otro lado, no creo que haya problema con trabajar con SolidWorks 2012 y MATLAB 2009.
      Un saludo

      1. hola palma, disculpa la molestia pero después de introducir el comando smlink_linksw me aparece este mensaje: ( se cargo el modulo “C:Program FilesMATLABR2009abinwin32cl_sldwks2sm.dll” pero se produjo un error en la llamada a DLL RegisterServer(Codigo de error: 0x80070005)).
        y en solidworks me sigue sin aparecer el complemento SimMechanics Link. espero tu respuesta, muchas gracias por tu ayuda.

  5. Hola Palma, he hecho todos los pasos que describes pero a la hora de guardar el ensamblaje en .xml no me aparece en la lista, ¿me podrías ayudar con ese problema?, mi versión de Solidworks es 2013 y la de Matlab es 2012b.

    Gracias.

    1. Jean Carlos, Anónimo y Juan voy a revisar el tutorial con SolidWorks 2013 y con MATLAB 2013a a ver cual puede ser el problema. Tan pronto como tenga alguna solución lo estaré comentando.
      Un saludo

  6. Me aparece este error “MATLAB:dispatcher:loadLibrary Can’t reload ‘C:Program FilesMATLABR2012abinwin64pmi_mli.dll’.” alguien sabe como solucionarlo? Me aparece cuando elijo el archivo en el matlab.

  7. Hola palma he seguido todos tus pasos hasta la parte donde activo el complemento..pero cuando voy a guardar como, el formato .xml no aparece como opcion para guardarlo(tengo matlab r2013a y solidwoks 2010 academico)cual podría ser el problema y su solucion.

    Gracias.

  8. Hola que tal…!!! al instalarlo me aparece este error:

    ??? Invalid MEX-file ‘C:Windowssystem32version.dll’: .

    Error in ==> install_addon at 42
    matlab_rel = version(‘-release’);

    si alguien sabe como solucionarlo lo agradeceria mucho.

  9. Hola que tal, no me reconoce el comando smlink_linksw, uso matlab 2013b y ya cambie la ruta en el set path, espero me puedas ayudar. muchas gracias

  10. Para las ultimas versines de solid works no tienen que poner guardar como simplemente en la pestaña que les sale de simmechanics link>export>SimMechanics first generation. ahi guardan su solido como archivo .xml suerte 😉

  11. Hola que tal, todo excelente hasta la parte donde se debe de introducir la instrucción “smlink_linksw”. Aparece un error que dice:

    “No se puede cargar el modulo “cl?sldks2sm.dll”. Asegurese de que el archivo binario esté almacenado en la ruta de acceso especificado o depúrelo para comprobar si hay problemas en el archivo binario o los archivos .DLL dependientes.

    No se puede encotnrar el módulo especificado”.

    Te agradeceré su respuesta. Gracias.

  12. Hola que tal, muy bueno el aporte, y pues al igual que el amigo Alvaro, todo me va bien pero al guardar el ensamble de solidworks con la extención .xml no me aparece en las opciones ese tipo de formato, alguna sugerencia de que pueda o deba hacer?, tengo instalado solidworks 2013 y matlab r2013a y tengo acctivadas las casillas de simmechanics link. de antemano agradezco tu atención… Saludos

  13. Hola que tal, todo excelente hasta la parte donde se debe de introducir la instrucción “smlink_linksw”. Aparece un error que dice:

    “No se puede cargar el modulo “cl?sldks2sm.dll”. Asegurese de que el archivo binario esté almacenado en la ruta de acceso especificado o depúrelo para comprobar si hay problemas en el archivo binario o los archivos .DLL dependientes.

    No se puede encotnrar el módulo especificado”.

    Te agradeceré su respuesta. Gracias.

Deja un comentario