Integration 2.2f1 :

- aggiunta esportazione L251 come OUTLINE e L252 come APERTURE.
This commit is contained in:
Dario Sassi
2020-06-10 06:56:43 +00:00
parent b957b51fa4
commit d1d7da06b7
3 changed files with 134 additions and 5 deletions
+128 -2
View File
@@ -82,13 +82,40 @@ namespace ib.essetre.integration.egaltech
string CutId = ( IsFromProject ? singlePart.elementId : singlePart.cutId).ToString() ;
tw.WriteLine( Constants.USERATTRIBUTE + "\"CUTID\":" + "\"" + CutId + "\"") ;
// Scrivo eventuale Outline
foreach ( Feature singleFeature in singlePart.features) {
// Assegno identificativo del processo
string TaskId = (IsFromProject ? singleFeature.processId : singleFeature.taskId).ToString() ;
// Se Outline (processo "251") elaborazione speciale
if ( singleFeature.processKey.Contains( "251")) {
WriteOutlineAperture( true, singleFeature, TaskId, tw) ;
}
}
// Scrivo eventuali Aperture
foreach ( Feature singleFeature in singlePart.features) {
// Assegno identificativo del processo
string TaskId = (IsFromProject ? singleFeature.processId : singleFeature.taskId).ToString() ;
// Se Aperture (processo "252") elaborazione speciale
if ( singleFeature.processKey.Contains( "252")) {
WriteOutlineAperture( false, singleFeature, TaskId, tw) ;
}
}
// Scrivo tutti gli altri processi
foreach ( Feature singleFeature in singlePart.features) {
// Assegno identificativo del processo
string TaskId = ( IsFromProject ? singleFeature.processId : singleFeature.taskId).ToString() ;
// Se Contorno Libero (processo "250") elaborazione speciale
if ( singleFeature.processKey.Contains( "250")) {
// Se Outline (processo "251") o Aperture (processo "252") salto
if ( singleFeature.processKey.Contains( "251") ||
singleFeature.processKey.Contains( "252")) {
;
}
// Se Free Contour (processo "250") elaborazione speciale
else if ( singleFeature.processKey.Contains( "250")) {
WriteFreeContour( singleFeature, TaskId, tw) ;
}
// Altri processi
else {
// Tipo di Process
tw.WriteLine( Constants.PROCESS_KEY + singleFeature.processKey + " " + singleFeature.designation) ;
@@ -129,6 +156,105 @@ namespace ib.essetre.integration.egaltech
return true ;
}
// Il seguente metodo analizza il campo sag1 della singleFeature passata: se non è vuoto allora la stringa
// viene splittata nei parametri P di POLY ed analizzata
public void WriteOutlineAperture( bool bOutline, Feature singleFeature, String TaskId, StreamWriter tw)
{
// Se non ci sono dati, esco
if (singleFeature.sag1 == "")
return;
// Divido i dati in record punti
string[] arrParam = singleFeature.sag1.Split(new string[] { "POLY([", "),", ")]" }, StringSplitOptions.RemoveEmptyEntries);
// Se curva chiusa, copio il primo punto nell'ultimo elemento
if ( arrParam[arrParam.Length - 1] == ",'P','C')")
arrParam[arrParam.Length - 1] = arrParam[0];
// altrimenti aperta, quindi elimino l'ultimo elemento
else
Array.Resize( ref arrParam, arrParam.Length - 1);
// Se il parametro Q10 è 1, l'ordine dell'array viene invertito
if ( singleFeature.processParameters[35] == "1")
Array.Reverse(arrParam);
// Recupero il lato di lavoro
string sSide = singleFeature.processKey.Substring( Math.Max( 0, singleFeature.processKey.Length - 1)) ;
// Ciclo sugli elementi
Boolean flagArco = false ;
for ( int i = 0 ; i < arrParam.Length ; i ++) {
char[] separators = { ',', '(' } ;
string[] parts = arrParam[i].Split( separators) ; // ogni parametro P di POLY viene splittato in più parti
// il primo elemento di parts[] indica se ci troviamo all'inizio di un Arco o no
switch ( parts[0]) {
case "P":
default:
// Se StartPoint
if ( i == 0) {
tw.Write( ( bOutline ? Constants.OUTLINE_KEY : Constants.APERTURE_KEY)) ;
tw.Write( Constants.SIDE + sSide + " ") ;
tw.Write( Constants.PROCESS + singleFeature.process + " ") ;
tw.Write( "P01:" + MultAndConvertTo8(parts[1]) + " "); // x
tw.Write( "P02:" + MultAndConvertTo8(parts[2]) + " "); // y
tw.Write( "P03:" + MultAndConvertTo8(parts[3]) + " "); // z
tw.Write( "P06:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P08:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P10:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P11:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P12:" + Constants.EIGHT_ZEROS + " ");
tw.WriteLine( " ");
// Parametri speciali Q diversi da 0, preceduti da "USERATTRIBUTE:"
for ( int j = 1; j <= 20; ++j) {
string singleParameter = singleFeature.processParameters[j + 25];
if ( ! singleParameter.Equals( "0")) {
singleParameter = singleParameter.Replace( ",", ".");
tw.WriteLine( Constants.USERATTRIBUTE + "\"Q" + j.ToString( "D2") + "\":\"" + singleParameter + "\" ");
}
}
// TaskId
tw.WriteLine(Constants.USERATTRIBUTE + "\"TASKID\":" + "\"" + TaskId + "\"");
}
// se altrimenti FineArco
else if ( flagArco) {
tw.Write( ( bOutline ? Constants.OUTLINE_KEY : Constants.APERTURE_KEY)) ;
tw.Write( Constants.SIDE + sSide + " ") ;
tw.Write( Constants.PROCESS + singleFeature.process + " ") ;
tw.Write( "P01:" + MultAndConvertTo8(parts[1]) + " "); // x (EndPoint Arc)
tw.Write( "P02:" + MultAndConvertTo8(parts[2]) + " "); // y (EndPoint Arc)
tw.Write( "P03:" + MultAndConvertTo8(parts[3]) + " "); // z (Endpoint Arc)
tw.Write( "P06:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P08:" + "00000200" + " ");
string[] PrevParts = arrParam[i - 1].Split(separators);
tw.Write( "P10:" + MultAndConvertTo8(PrevParts[1]) + " "); // x (Point on Arc)
tw.Write( "P11:" + MultAndConvertTo8(PrevParts[2]) + " "); // y (Point on Arc)
tw.Write( "P12:" + MultAndConvertTo8(PrevParts[3]) + " "); // z (Point on Arc)
tw.WriteLine( " ");
flagArco = false;
}
// altrimenti FineSegmento
else {
tw.Write( ( bOutline ? Constants.OUTLINE_KEY : Constants.APERTURE_KEY)) ;
tw.Write( Constants.SIDE + sSide + " ") ;
tw.Write( Constants.PROCESS + singleFeature.process + " ") ;
tw.Write( "P01:" + MultAndConvertTo8(parts[1]) + " "); // x
tw.Write( "P02:" + MultAndConvertTo8(parts[2]) + " "); // y
tw.Write( "P03:" + MultAndConvertTo8(parts[3]) + " "); // z
tw.Write( "P06:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P08:" + "00000100" + " ");
tw.Write( "P10:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P11:" + Constants.EIGHT_ZEROS + " ");
tw.Write( "P12:" + Constants.EIGHT_ZEROS + " ");
tw.WriteLine( " ");
}
break;
case "A": // InizioArco
flagArco = true;
break;
}
}
}
// Il seguente metodo analizza il campo sag1 della singleFeature passata: se non è vuoto allora la stringa
// viene splittata nei parametri P di POLY ed analizzata
public void WriteFreeContour( Feature singleFeature, String TaskId, StreamWriter tw)
+4 -1
View File
@@ -21,7 +21,10 @@ namespace ib.essetre.integration.egaltech
public const string LENGTH = "LENGTH: " ;
public const string HEIGHT = "HEIGHT: " ;
public const string WIDTH = "WIDTH: " ;
public const string PROCESS_KEY = "PROCESSKEY: " ;
public const string OUTLINE_KEY = "OUTLINE: ";
public const string APERTURE_KEY = "APERTURE: ";
public const string SIDE = "SIDE: ";
public const string PROCESS_KEY = "PROCESSKEY: ";
public const string PROCESS_PARAMETERS = "PROCESSPARAMETERS: " ;
public const string REFERENCE_PLANE = "REFERENCEPLANE: " ;
public const string PROCESS_IDENT = "PROCESSIDENT: " ;
@@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
// usando l'asterisco '*' come illustrato di seguito:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.2.5.1")]
[assembly: AssemblyFileVersion("2.2.5.1")]
[assembly: AssemblyVersion("2.2.6.1")]
[assembly: AssemblyFileVersion("2.2.6.1")]