本文整理汇总了C#中Segment.InterpolatedZ方法的典型用法代码示例。如果您正苦于以下问题:C# Segment.InterpolatedZ方法的具体用法?C# Segment.InterpolatedZ怎么用?C# Segment.InterpolatedZ使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Segment
的用法示例。
在下文中一共展示了Segment.InterpolatedZ方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TramificaInsertandoEntidadSeleccionada_EntitySelected
void TramificaInsertandoEntidadSeleccionada_EntitySelected(object sender, EntitySelectedEventArgs e)
{
var líneaATramificar = e.Entity as ReadOnlyLine;
// Seleccionamos las líneas visibles del archivo de dibujo (excluyendo la línea que vamos a tramificar)
var líneasContraLasCualesTramificar = from entidad in DigiNG.DrawingFile.ExplotaAReadOnlyLine().Visibles()
where entidad != e.Entity
select entidad;
// Obtenemos las intersecciones de la línea seleccionada con el reto de líneas visibles
var intersecciones = líneaATramificar.DetectIntersections(líneasContraLasCualesTramificar);
// Construimos una línea nueva con los códigos de la línea a tramificar
Line líneaNueva = new Line(líneaATramificar.Codes);
// Recorremos todos los segmentos de la línea a tramificar
for (int vértice = 0; vértice < líneaATramificar.Points.Count - 1; vértice++)
{
// Añadimos el vértice de la línea original
líneaNueva.Points.Add(líneaATramificar.Points[vértice]);
// Ahora localizamos únicamente las intersecciones localizadas para el segmento actual en la línea a tramificar
var vérticesAAñadirEnEsteSegmento = intersecciones.SoloDeSegmento(líneaATramificar, vértice);
// Tenemos una lista de vértices, pero pueden venir desordenados. Vamos a ordenarlos calculando su distancia a la coordenada del primer vértice de este segmento
Point2D vérticeComienzoSegmento = (Point2D)líneaATramificar.Points[vértice];
var vérticesOrdenados = from v in vérticesAAñadirEnEsteSegmento
let distancia = (v.Key - vérticeComienzoSegmento).Module
orderby distancia
select v.Key;
// Ahora insertamos estos vértices en la línea nueva. Los vértices son 2D (los métodos de extensión proporcionados por el tipo IntersectionDetector trabajan con Point2D
// así que tendremos que ínterpolar la coordenada Z
foreach (var v in vérticesOrdenados)
{
var segmento = new Segment(líneaATramificar.Points[vértice], líneaATramificar.Points[vértice + 1]);
double z = segmento.InterpolatedZ(v);
líneaNueva.Points.Add(new Point3D(v.X, v.Y, z));
}
}
// Por último añadimos el último vértice
líneaNueva.Points.Add(líneaATramificar.Points.Last());
DigiNG.DrawingFile.Add(líneaNueva);
DigiNG.DrawingFile.Delete(e.Entity);
Dispose();
}