Hola Antonio.
Se me ha ocurrido una idea genial que sería para usarla de apoyo en Civil 3D.
Te lo comento, porque los objetos serían puntos de AutoCAD, así que este tipo de objetos sí lo tocáis porque son de AutoCAD propiamente.
La idea y finalidad es la siguiente.
En Civil 3D, se pueden proyectar objetos a la visualización del perfil.
Los objetos que permite proyectar Civil 3D en la visualización de perfil, pueden ser de varios tipos (puntos autocad, bloques, polilineas, puntos COGO,..).
Luego, se puede indicar si se quieren representar en la visualización del perfil tal como se mostraban o seleccionar otro tipo de punto,bloque,etc.. (aunque esto no viene al caso).
La finalidad de proyectar objetos (puntos), es que para hacer rasantes, se necesitan normalmente puntos de paso, que obligan a la rasante que pase por ese punto a X elevación.
Luego, se fuerza a pasar los vértices de rasante por esos puntos proyectados en la visualización de perfil. (este paso también es manual aunque intentaré programarlo para anclar un vértice de rasante a un punto proyectado).
Los puntos proyectados en la visualización del perfil, pueden tomar la elevación de varias formas:
-manual. (le tecleas la cota)
-objeto (tal cual la elevación que tenga el objeto indicada).
-a partir de una superficie (que suele hacerse con la superficie de obra lineal)
En general, yo uso la tercera opción (a partir de superficie), no obstante, algunos puntos (puntos de paso de elevación), tengo que calcular yo esa elevación.
En ese caso, se la pongo manual o bien voy al punto de AutoCAD y le pongo esa cota. (en la paleta de propiedades).
Por último, hay otros puntos, que serán de paso para la rasante, pero calculo su elevación a partir de la cota conocida de otro punto (que previamente he calculado o he decidido que tenga esa cota).
Imaginemos el siguiente caso:
<strong>Tengo un punto a cota 25 que representa el borde de arcén derecho. A ese punto de Autocad, le asigné (en sus propiedades) la Elevación =25 metros.
Ahora para conocer el otro punto opuesto a la carretera, sabiendo la distancia entre ellos (5), y el peralte (+2%), puedo calcular la cota de ese punto, que en este caso, sería de 25+0.10 metros= 25.10 m.</strong>
Por tanto, lo que se pretende con este comando, es poder asignar a puntos de AutoCAD, e incluso bloques, que tomen la elevación de otros puntos de AutoCAD o bloques cuando estos últimos sean modificados de cota o posición.
Es decir, para ir bien, la herramienta tendría que ser dinámica para estos objetos con el evento de Modified.
Y, una vez detecta el cambio de ese punto, calcula cual sería la cota del otro punto que es una Referencia a este punto, y le asigna la elevación a este nuevo punto.
Para hacer esto, debería haber un formulario, que permitiera indicar cual es el objeto Madre (puntos AutoCAD o bloque), e indicar cual serían sus referencias (puntos vinculados a éste), que podrían ser también puntos de AutoCAD o bloques.
Para seleccionar estos puntos de referencias, estaría bien una selección rápida(por capa o color o tipo objeto) por ejemplo.
Luego, para cada vínculo(referencia) con el objeto Madre, habría que indicarle una fórmula, que será la que permitirá obtener la elevación de este nuevo punto.
La típica fórmula que hemos usado en este caso es: elevación punto+ (dist.entre puntos * peralte/100)
Esta sería la fórmula típica pero supongo que se podrían poner más.
NOTA: La distancia (2D) entre puntos , debería calcularla el programa a partir de la distancia entre el punto Madre y su referencia.
Como digo, esto sería de gran ayuda cuando se trabaja en Civil y te modifcan el proyecto, puesto que tienes que volver a recalcular manualmente estos puntos.
Civil 3D es dinámico, pero hasta cierto punto.