Revision de pesos vehiculo y modo de kilos por contenedor

master
Gerardo 2024-04-17 22:55:01 +02:00
parent bf4fffcaff
commit 07261ebb14
7 changed files with 233 additions and 55 deletions

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<ArcGIS defaultAssembly="OliviaAddInPro.dll" defaultNamespace="OliviaAddInPro" xmlns="http://schemas.esri.com/DADF/Registry" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.esri.com/DADF/Registry file:///C:/Program%20Files/ArcGIS/Pro/bin/ArcGIS.Desktop.Framework.xsd">
<AddInInfo id="{10742570-cf59-42f2-bea2-2a38002a06ee}" version="4.0" desktopVersion="3.0.3.36057">
<AddInInfo id="{10742570-cf59-42f2-bea2-2a38002a06ee}" version="4.1" desktopVersion="3.0.3.36057">
<Name>OliviaAddInPro</Name>
<Description>AddIn de Optimización de la Limpieza Viaria para ArcGIs Pro</Description>
<Image>Images\AddinDesktop32.png</Image>
<Author>VSM</Author>
<Company>VSM - Narvaling</Company>
<Date>12/04/2024 12:00:00, 2024</Date>
<Date>17/04/2024 12:00:00, 2024</Date>
<Subject>Framework</Subject>
<!-- Note subject can be one or more of these topics:
Content, Framework, Editing, Geodatabase, Geometry, Geoprocessing, Layouts, Map Authoring, Map Exploration -->

View File

@ -12,6 +12,8 @@ using Xceed.Wpf.Toolkit.PropertyGrid;
using Xceed.Wpf.Toolkit.PropertyGrid.Editors;
using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
using static OliviaAddInPro.Model.OliviaConf;
using System.Reflection;
using System.Collections.ObjectModel;
namespace OliviaAddInPro.Model
{
@ -51,12 +53,12 @@ namespace OliviaAddInPro.Model
public enum OpsNW
{
nw_0, //TomTom
nw_0/*, //TomTom
nw_1, //Streetmap
nw_2, //
nw_3,
nw_4,
*/
}
private string m2s(int min)
{
@ -489,6 +491,7 @@ namespace OliviaAddInPro.Model
{
val= OpsRecoCont.UsaKgDef;
}
check(val);
return val;
}
set
@ -516,13 +519,22 @@ namespace OliviaAddInPro.Model
{
PropertyDescriptor propDescrKgDef = TypeDescriptor.GetProperties(this.GetType())["kgrec_val"];
PropertyDescriptor propDescrKgTabla = TypeDescriptor.GetProperties(this.GetType())["kgrec"];
if (propDescrKgDef == null && propDescrKgTabla == null)
{
return;
}
ReadOnlyAttribute attrKgDef = propDescrKgDef.Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
ReadOnlyAttribute attrKgTabla = propDescrKgTabla.Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
if (attrKgDef != null && attrKgTabla != null)
{
System.Reflection.FieldInfo aFieldKgDef = attrKgDef.GetType().GetField("isReadOnly", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
System.Reflection.FieldInfo aFieldKgTabla = attrKgTabla.GetType().GetField("isReadOnly", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
//System.Reflection.FieldInfo aFieldKgDef = attrKgDef.GetType().GetField(/*"isReadOnly"*/nameof(ReadOnlyAttribute.IsReadOnly), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | BindingFlags.IgnoreCase);
// System.Reflection.FieldInfo aFieldKgTabla = attrKgTabla.GetType().GetField(/*"isReadOnly"*/nameof(ReadOnlyAttribute.IsReadOnly), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | BindingFlags.IgnoreCase);
System.Reflection.FieldInfo aFieldKgDef = attrKgDef.GetType().GetField("<IsReadOnly>k__BackingField", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | BindingFlags.IgnoreCase);
System.Reflection.FieldInfo aFieldKgTabla = attrKgTabla.GetType().GetField("<IsReadOnly>k__BackingField", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | BindingFlags.IgnoreCase);
if (aFieldKgDef!=null)
aFieldKgDef.SetValue(attrKgDef, val!= OpsRecoCont.UsaKgDef);
if(aFieldKgDef!=null)
aFieldKgDef.SetValue(attrKgTabla, val != OpsRecoCont.LeeCampoTabla);
}
}

View File

@ -409,25 +409,26 @@ namespace OliviaAddInPro.Model
//Carga Trasera
////////////////////////////////////////////////
//Trasera-satelite
n = 4;
n = 3;
i_def = 2;
//Rellena volumenes
info[0] = 2;
info[1] = 3;
info[2] = 5;
info[3] = 7;
info[0] = 3;
info[1] = 5;
info[2] = 7;
rellena_carg((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Satelite, n, i_def, info);
//rellena la corrección de la carga máxima
info[0] = info[1] = -500;
info[2] = info[3] = 0;
info[0] = - 850;
info[1] = -1000;
info[2] =-1500;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Organica, n, info);
//Trasera-2 ejes
n = 6;
n = 5;
i_def = 2;
//Rellena volumenes
info[0] = 8;
@ -435,15 +436,15 @@ namespace OliviaAddInPro.Model
info[2] = 12;
info[3] = 14;
info[4] = 16;
info[5] = 17;
//info[5] = 17;
rellena_carg((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes2, n, i_def, info);
//rellena la corrección de la carga máxima
info[1] = -500;
info[2] = -1000;
info[0] = 0;
info[1] = 500;
info[2] = 0;
info[3] = -1500;
info[4] = -2000;
info[0] = info[5] = 0;
info[4] = -3500;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
@ -460,6 +461,16 @@ namespace OliviaAddInPro.Model
rellena_carg((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes3, n, i_def, info);
info[0] = 1500;
info[1] = 0;
info[2] = 0;
info[3] = 0;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Organica, n, info);
//////////////////////////////////////////////////
//Carga Lateral
////////////////////////////////////////////////
@ -476,30 +487,50 @@ namespace OliviaAddInPro.Model
rellena_carg((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes2, n, i_def, info);
//rellena la corrección de la carga máxima
info[0] = -500;
info[1] = -1000;
info[0] = -3400;
info[1] = -4500;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Organica, n, info);
//Lateral - 3 ejes
n = 3;
n = 4;
i_def = 2;
//Rellena volumenes
info[0] = 21;
info[1] = 23;
info[2] = 26;
info[0] = 19;
info[1] = 21;
info[2] = 23;
info[3] = 26;
rellena_carg((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, n, i_def, info);
//Superior - satelite, no hay
rellena_carg((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Satelite, 0, 0, null);
info[0] = -400;
info[1] = -1500;
info[2] = -2400;
info[3] = -3000;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Organica, n, info);
//////////////////////////////////////////////////
//Carga Superior
////////////////////////////////////////////////
///
//Superior - satelite, no hay
n = 1;
i_def = 0;
//Rellena volumenes
info[0] = 11;
info[1] = 17;
rellena_carg((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Satelite, i_def, 0, null);
//Superior - 2 ejes
n = 2;
i_def = 0;
@ -509,19 +540,30 @@ namespace OliviaAddInPro.Model
rellena_carg((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, n, i_def, info);
info[0] = -5500;
info[1] = -8500;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Organica, n, info);
//Superior - 3 ejes
n = 3;
n = 2;
i_def = 2;
//Rellena volumenes
info[0] = 20;
info[1] = 23;
info[2] = 25;
//info[2] = 25;
rellena_carg((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes3, n, i_def, info);
info[1] = -4000;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Organica, n, info);
//Bilateral - satelite, no hay
rellena_carg((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, 0, 0, null);
//////////////////////////////////////////////////
//Carga Bilateral
@ -530,48 +572,50 @@ namespace OliviaAddInPro.Model
n = 1;
i_def = 0;
info[0] = 11;
//Bilateral - satelite, no hay
rellena_carg((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, n, i_def, info);
(int)RecogidaDef.TiposVehic.Satelite, i_def, 0, null);
//offsets
//Bilateral - satelite - resto, org
info[0] = -3700;
//bilateral -satélite - envases
info[0] = -3850;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Resto, n, info);
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Organica, n, info);
//bilateral -satélite - envases
info[0] = 480;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Envases, n, info);
//bilateral -satélite - papel
info[0] = -2160;
info[0] = 7;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Papel, n, info);
//bilateral -satélite - vidrio
info[0] = -2050;
info[0] = 0;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
//Bilateral - 2 ejes
n = 3;
//Bilateral - 2 ejes------------------------------------------------------
n = 1;
i_def = 1;
//Rellena volumenes
info[0] = 14;
info[1] = 16;
info[2] = 18;
//info[1] = 16;
//info[2] = 18;
rellena_carg((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes2, n, i_def, info);
(int)RecogidaDef.TiposVehic.Ejes2, n, (int)RecogidaDef.TiposFracción.Resto, info);
//Bilateral - 3 ejes
n = 3;
n = 2;
i_def = 1;
//Rellena volumenes
info[0] = 20;
info[1] = 23;
info[2] = 26;
// info[2] = 26;
rellena_carg((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes3, n, i_def, info);
@ -588,7 +632,125 @@ namespace OliviaAddInPro.Model
////////////////////////////////////////////////////////
//Rellena offsets
rellena_offsets_bcn();
//rellena_offsets_bcn();
n = 4;
info[0] = 240;
info[1] = 0;
info[2] = 0;
info[3] = 0;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Envases, n, info);
n = 2;
info[0] = 0;
info[1] = -2040;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Envases, n, info);
//papel
n =3;
info[0] = -430;
info[1] = -500;
info[2] = -770;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Papel, n, info);
info[0] = -400;
info[1] = -250;
info[2] = -450;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Satelite, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
n = 4;
info[0] = 700;
info[1] = 0;
info[2] = 0;
info[3] = 0;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
info[0] = -1590;
info[1] = -2310;
info[2] = -2530;
info[3] = -2860;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Papel, n, info);
n = 2;
info[0] = -3100;
info[1] = -5950;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
info[0] = -1760;
info[1] = -6120;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Papel, n, info);
info[0] = 0;
info[1] = -550;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
info[0] = -2200;
info[1] = -2530;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Superior,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Papel, n, info);
info[0] = 0;
info[1] = -2450;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
info[0] = -2200;
info[1] = -2530;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Papel, n, info);
n = 1;
info[0] = -2540;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Papel, n, info);
info[0] = -2400;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Bilateral,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Vidrio, n, info);
n = 5;
info[0] = -880;
info[1] = -1100;
info[2] = -1320;
info[3] = -1540;
info[4] = -1760;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Papel, n, info);
n = 4;
info[0] = -1980;
info[1] = -2200;
info[2] = -2420;
info[3] = -2530;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Trasera,
(int)RecogidaDef.TiposVehic.Ejes3, (int)RecogidaDef.TiposFracción.Papel, n, info);
n = 2;
info[0] = -1650;
info[1] = -1770;
rellena_carg_offset((int)RecogidaDef.TiposCarga.Lateral,
(int)RecogidaDef.TiposVehic.Ejes2, (int)RecogidaDef.TiposFracción.Papel, n, info);
}
private static void rellena_offsets_bcn()

View File

@ -1079,6 +1079,8 @@ namespace OliviaAddInPro.Services
//HelperGdb.SaveFileDlg("Introduzca nombre de Feature Class a importar", GdbFileName, null, ArcGIS.Desktop.Catalog.ItemFilters.featureClasses_all);
if (!string.IsNullOrEmpty(path_aux))
{
/*var aux = path_aux.Split("\\");
tratamiento = aux[aux.Length-1];*/
tratamiento = new DirectoryInfo(System.IO.Path.GetDirectoryName(path_aux)).Name;
//tratamiento = System.IO.Path.GetFileName(System.IO.Path.GetDirectoryName(path_aux));
amb_aux = System.IO.Path.GetFileNameWithoutExtension(path_aux);

View File

@ -67,7 +67,7 @@ namespace OliviaAddInPro.Services.LanzaSrv
GeneralDef.EjecGeoParamSep + GeneralDef.GR_kgM + GeneralDef.EjecGeoParamIgual + reco.KgMaxVehic + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_camp_kgrec + GeneralDef.EjecGeoParamIgual + conf.kgrec + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_camp_uds + GeneralDef.EjecGeoParamIgual + conf.uds + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_kgrecog + GeneralDef.EjecGeoParamIgual + conf.kgrec_val + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_kgrecog + GeneralDef.EjecGeoParamIgual + (conf.is_campo?"0":(conf.is_lleno?"-1":conf.kgrec_val)) + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_carga_cont + GeneralDef.EjecGeoParamIgual + 0 + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GR_dens + GeneralDef.EjecGeoParamIgual + reco.DensCont + " " +
GeneralDef.EjecGeoParamSep + GeneralDef.GG_tco + GeneralDef.EjecGeoParamIgual + reco.TConv + " " +

View File

@ -91,8 +91,8 @@
<ComboBox x:Name="comboBox_tipoCapac" IsEnabled="{Binding EnabComboCapac, Mode=TwoWay}" ItemsSource="{Binding TiposCapac, Mode=TwoWay}" HorizontalAlignment="Left" Margin="0,0,0,0"
VerticalAlignment="Top" Width="75"
SelectedIndex="{Binding TipoCapac}" SelectionChanged="comboBox_tipoCapac_SelectionChanged"/>
<TextBox x:Name="txtBox_kgCapac" IsEnabled="{Binding Path=CapaAbierta, Mode = TwoWay}" Grid.Column="1" Margin="5,0,0,3" TextWrapping="NoWrap" Text="{Binding Path=TextKgCapac, Mode = TwoWay}" TextAlignment="Right" MaxLength="8" PreviewTextInput="txtBox_kgCapac_PreviewTextInput"/>
<Label x:Name="label_kgmax" Grid.Column="2" Content="kg máx. por viaje" Margin="0,-1,0,0"/>
<TextBox x:Name="txtBox_kgCapac" IsEnabled="{Binding Path=CapaAbierta, Mode = TwoWay}" Grid.Column="1" Margin="5,0,74,3" TextWrapping="NoWrap" Text="{Binding Path=TextKgCapac, Mode = TwoWay}" TextAlignment="Right" MaxLength="8" PreviewTextInput="txtBox_kgCapac_PreviewTextInput" Grid.ColumnSpan="2"/>
<Label x:Name="label_kgmax" Grid.Column="2" Content="kg máx. por viaje" Margin="26,-1,-26,0"/>
</Grid>
<Label Content="Modos de viaje" HorizontalAlignment="Left" Margin="15,0,0,0" VerticalAlignment="Top" FontWeight="DemiBold"/>
<ComboBox x:Name="comboBox_mv" IsEnabled="{Binding Path=CapaAbierta, Mode = TwoWay}" ItemsSource="{Binding Path=TiposMv, Mode = TwoWay}" HorizontalAlignment="Left" Margin="20,0,0,0"

View File

@ -61,7 +61,9 @@ namespace OliviaAddInPro
private void txtBox_kgCapac_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 1, 10000);
int ii;
e.Handled = !int.TryParse(((TextBox)sender).Text + e.Text, out ii);//!PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 1, 10000);
}
private void comboBox_frac_SelectionChanged(object sender, SelectionChangedEventArgs e)