problemilla autocad, nube de puntos

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

problemilla autocad, nube de puntos

#1 Mensaje por baldo »

tengo en mente una figura rara, pero sencilla, con 3 FOR NEXT anidados calculo todos los puntos.

intete dibujarla con autocad, pero no hay manera, o no se, o muy complicado para mi.

he editado ficheros STL y dibujos diversos, en busca de un patron para encontrar el formato, pero tampoco manera.
no encontre ningun RCS, de nube de puntos.
y por supuesto que el desingsparc no sabe de esto.

la pregunta es ¿como paso de nube de puntos a algo que entienda acad?

Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

Re: problemilla autocad, nube de puntos

#2 Mensaje por baldo »

el blender parece que lo hace, segur sus especificaciones.

Automesher , es un complemento para autocad que tambien, 2 dias gratis o 40e/año.

Avatar de Usuario
Diego Gonzalez
Mensajes: 2406
Registrado: Lun Dic 17, 2007 10:59 pm
Ubicación: Oviedo Asturias
Contactar:

Re: problemilla autocad, nube de puntos

#3 Mensaje por Diego Gonzalez »

Enseñanos la nube Baldo.

Estoy intrigado ciertamente. Que demonios será
Jejejje
Mi humilde rincon web

http://sites.google.com/site/skygaps/

Avatar de Usuario
Alfon
Mensajes: 1432
Registrado: Dom Mar 04, 2007 10:44 pm
País: España
Ciudad: Figueres
Ubicación: Gerona/España
Contactar:

Re: problemilla autocad, nube de puntos

#4 Mensaje por Alfon »

baldo escribió:tengo en mente una figura rara, pero sencilla, con 3 FOR NEXT anidados calculo todos los puntos.

intete dibujarla con autocad, pero no hay manera, o no se, o muy complicado para mi.

he editado ficheros STL y dibujos diversos, en busca de un patron para encontrar el formato, pero tampoco manera.
no encontre ningun RCS, de nube de puntos.
y por supuesto que el desingsparc no sabe de esto.

la pregunta es ¿como paso de nube de puntos a algo que entienda acad?
Te cuento el método que utilizo:
Mediante fotos en varios puntos y con el agisoft photoscan, monto la nube de puntos de lo que quiero trabajar.
Exporto la nube de puntos en formato .LAZ
Luego abro el Autocad civil 3D que tiene la herramienta Autodesk ReCap, con ello, puedo abrir el .LAZ, y lo exporto a .RCS (formato nube de puntos todo en un fichero).
Luego Autocad me deja "Enlazar" y abrir el fichero .RCS , y ya lo tengo en el CAD para trabajarlo.

Espero te sirva de ayuda, si necesitas imágenes de los pasos, adjunto link a mi web, he colgado un mini tutorial, que a veces se me olvida el procedimiento:
http://www.altortech.es/wp/automatizaci ... n-autocad/


Saludos
El saber no ocupa lugar, pero sí tiempo ^_^
-- Personal --> www.bitacoradealfon.es <--
-- Comercial --> www.altortech.es <--

Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

Re: problemilla autocad, nube de puntos

#5 Mensaje por baldo »

gracias alfon, tu link no va.

mi problema es que diseñe un tornillo sinfin especial, nacio de unos algoritmos matematicos, el problema estuvo pasarlo a acad.
en los tiempos de las 3D, este problemilla podria ser muy popular.

Código: Seleccionar todo

        
        //estas son las definiciones de variables
        public struct puntoStr //le enseñamos que es un punto 3D
        {
            public double x;
            public double y;
            public double z;
        }

        public puntoStr pManio1; //definimos 3 puntos que se usaran de maniobra
        public puntoStr pManio2;
        public puntoStr pManio3;
        public puntoStr pPerpendi;//necesitaremos la perpendicular, no es un punto, pero se puede interpretar como tal. 

        public puntoStr[] corteBajo = new puntoStr[3601]; //preparamos una matriz de los puntos de un corte
        public puntoStr[] corteAlto = new puntoStr[3601]; //lo mismo del corte de mas arriba, +1 PORQUE REPETIREMOS EL 1º AL FINAL, 
        public int ptrMatriz;//puntero al 1º elemento libre de la matriz, o al siguiente en leer. 
        public int ptrMatrizHechos; //numero de grabaciones en la matriz

        //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  mas tripas por el medio
        //,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
        public void Fajar()    //por suerte, en este caso la figura se puede cortar por capas, y en cada una una "isla". aqui lo que hace es una faja
        {        //aqui llega cuando metio los puntitos de esa capa en una matriz, la "corteAlto", 
                  //el antiguo "corteAlto", ya paso a "corteBajo", que logicamnt es muy parecido pero ligeramnt distinto

            corteAlto[ptrMatrizHechos] = corteAlto[0]; //repetimos el 1º al final para no tener que comprobar si es el final y rematar

            for (ptrMatriz = 0; ptrMatriz < ptrMatrizHechos; ptrMatriz++)
            {
                pManio1 = corteBajo[ptrMatriz];
                pManio2 = corteBajo[ptrMatriz + 1];
                pManio3 = corteAlto[ptrMatriz];//cojimos 2 de abajo y uno de arriba, OJO AL ORDEN, regla mano derecha.
                if (Perpendicular())  //si hay la perpendicular del triangulo, puede ocurrir que dos puntos sean coincidentes, entonces lio, ocurre la mitad de las veces en tapas arriba y abajo
                {
                    EscribeTriangulito();
                }
                //y ahora los otros triangulitos
                pManio1 = corteBajo[ptrMatriz + 1];
                pManio2 = corteAlto[ptrMatriz+1];
                pManio3 = corteAlto[ptrMatriz];//cojimos 1 de abajo y 2 de arriba, OJO AL ORDEN, mano derecha.
                if (Perpendicular())  //si hay la perpendicular del triangulo
                {
                    EscribeTriangulito();
                }
            }
        }
        // = = = = = = = = = = = 
        bool Perpendicular()  //STL exige 3 puntos por triangulo, Y ADEMAS, el vector perpendicular, que ademas vale para decirle para donde mira el triangulo, (cara interior o exterior)
        {
            puntoStr PLocal1;//usados para hayar la normal
            puntoStr PLocal2;//usados para hayar la normal

            //producto vectorial de dos vectores, como son 3 puntos, se les resta uno de ellos para traslacion a 0,0,0, y quedan 2 vectores. 
            PLocal1.x = pManio2.x - pManio1.x; PLocal1.y = pManio2.y - pManio1.y; PLocal1.z = pManio2.z - pManio1.z;
            PLocal2.x = pManio3.x - pManio1.x; PLocal2.y = pManio3.y - pManio1.y; PLocal2.z = pManio3.z - pManio1.z;

            pPerpendi.x = (PLocal1.y* PLocal2.z) - (PLocal1.z* PLocal2.y);
            pPerpendi.y = (PLocal1.z* PLocal2.x) - (PLocal1.x* PLocal2.z);
            pPerpendi.z = (PLocal1.x* PLocal2.y) - (PLocal1.y* PLocal2.x);

            //no llega con darle un vector, este tiene que medir 1, aqui lo recorta / estira. 
            double modulo = (pPerpendi.x * pPerpendi.x) + (pPerpendi.y * pPerpendi.y) + (pPerpendi.z * pPerpendi.z);
            modulo = Math.Sqrt(modulo);
            if (modulo< 1e-10) { return false; }   //   si dos de los puntos son el mismo (o casi), se desprecia el triangulito. 
            pPerpendi.x /= modulo;
            pPerpendi.y /= modulo;
            pPerpendi.z /= modulo;
            return true;
        }

        // = = = = = = = = = = = 
        public void EscribeCabecera(string nombre)
        {
            Disc = new StreamWriter(nombre + ".stl");
            Disc.WriteLine("solid \"" + nombre + "\"");
        }
        public void EscribeFin(string nombre)
        {
            Disc.WriteLine("endsolid \"" + nombre + "\"");
            Disc.Close();
        }
        public void EscribeDisco(string s)
        {
            Disc.WriteLine(s);
        }
        void EscribeTriangulito()  //escribe los puntis y la normal. 
        {
            EscribeDisco("  facet normal " + pPerpendi.x + " " + pPerpendi.y + " " + pPerpendi.z);
            EscribeDisco("    outer loop");
            EscribeDisco("      vertex " + pManio1.x + " " + pManio1.y + " " + pManio1.z);
            EscribeDisco("      vertex " + pManio2.x + " " + pManio2.y + " " + pManio2.z);
            EscribeDisco("      vertex " + pManio3.x + " " + pManio3.y + " " + pManio3.z);
            EscribeDisco("    endloop");
            EscribeDisco("  endfacet");
        }

//,,,,,,,,,,,
        void HaceTapaAbajo()
        {   //tapa de abajo, muchos triangus que salen  de 0,0,0 . entonces,,,
            pManio1.x = 0;
            pManio1.y = 0;
            pManio1.z = 0;

            for (int i = 0; i < 3600; i++)
            {
                Program.Form1.corteAlto[i] = pManio1; //suponemos el corte de abajo todo de ese punto. Se escribe en Alto, porque inmediatamnt bajara
            }
        }
        void Meollo()
        {
            while (xEje <= xEjeMax) //mientras no se desmadre,,,
            {
                for (int i = 0; i < 3600; i++) { Program.Form1.corteBajo[i] = Program.Form1.corteAlto[i]; }//el corte alto pasa a bajo

                CalculaCorteAlto(); //calcula los puntos del corte alto

                Program.Form1.Fajar(); //calcula los triangulos de una faja, y los escribe.

                xEje += xEjeInc; //incrementa x para la siguiente
            }
        }
        void HaceTapaArriba()
        {
            pManio1.x = xEjeMax; //como en tapa de abajo, solo que aki, xejemaximo
            pManio1.y = 0;
            pManio1.z = 0;

            for (int i = 0; i < 3600; i++)
            {
                Program.Form1.corteBajo[i] = Program.Form1.corteAlto[i]; //bajamos el alto, 
                Program.Form1.corteAlto[i] = pManio1; //
            }
            Program.Form1.Fajar();
        }


son los trozos claves, en C#

1º se consigue el STL.
2º si hace falta lo abrimos con algun visor, como el Autodesk_Meshmixer_v3p5_Win64, y lo guardamos como STL binario. (hicimos la version ascii)
3º nos vamos a un conversor en linea https://www.cadforum.cz/catalog_en/stl2 ... go=convert, no pasar de 20M, por eso aligerarlo a binario.
4º abrimos el DXF, y sorpresa,,,, llega como un "bloque", no como un solido.
5º pestaña home -> modifi -> explode. y lo trocea en triangulitos.
6º mejor verlo en 2Dwireframe. surface -> planar, esto convierte los triangulis en planos, entiendo yo.
7º Surface -> edit -> scultor, se selecionan todos y dale, hacerlo aprovechando la siesta.
8º selecionar el solido 3D y ocultarlo, borrar el resto, desocultar.

y esto es como lo hago,,,
le lleva un buen buen rato hacer cualquier cosilla, aligerar el PC de otras aplicas, NO moverse tontamente, le cuesta mover girar y zoom.
probar antes con versiones ligeras con menos puntos.

Avatar de Usuario
fusion
Mensajes: 4573
Registrado: Lun Feb 20, 2006 1:12 pm
País: Madrid
Ciudad: Alcobendas
Ubicación: Madrid

Re: problemilla autocad, nube de puntos

#6 Mensaje por fusion »

Cuando me fue necesario usé un programa de 3-D: rhinoceros, se pueden hacer nubes de puntos por software o excel, creo el formato es obj.


suerte

martina1993
Mensajes: 1
Registrado: Lun Oct 12, 2020 2:22 pm
País: españa
Ciudad: barcelona
Contactar:

Re: problemilla autocad, nube de puntos

#7 Mensaje por martina1993 »

Prueba con Rhinoceros como te han dicho, mucho mejor para los 3D que AutoCAD, aunque yo no he trabajado nunca con puntos, lo siento.

Avatar de Usuario
Samaniego
Mensajes: 4
Registrado: Dom Mar 21, 2021 9:44 am
País: Spain
Ciudad: Caleta de Velez

Re: problemilla autocad, nube de puntos

#8 Mensaje por Samaniego »

Hola,
Revit y Solidworks también pueden ser una solución.
Pasar de nubes de puntos a un modelo 3D es generalmente un trabajo para el software de fotogrametría (en caso de que hayas obtenido tu nube de puntos utilizando el método de fotogrametría). Agisoft PhotoScan o 3DF Zephyr son lo que necesitas para ello. Si la nube de puntos es producida por un escáner 3d, entonces necesita un software especial de escaneo 3d que suele ser suministrado por el fabricante del escáner 3D. Skanect o Artec Studio pueden utilizarse para ello.
Saludos

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado