public static double GetPipeKOd(Entity ent, PipeSeriesEnum pipeSeries) { PipeTypeEnum pipeType = GetPipeType(ent); PipeSystemEnum pipeSystem = GetPipeSystem(ent); switch (pipeType) { case PipeTypeEnum.Ukendt: return(0.0); case PipeTypeEnum.Twin: switch (pipeSystem) { case PipeSystemEnum.Ukendt: return(0.0); case PipeSystemEnum.Stål: return(GetTwinPipeKOd(ent, pipeSeries)); case PipeSystemEnum.Kobberflex: return(GetCuTwinPipeKOd(ent, pipeSeries)); case PipeSystemEnum.AluPex: return(GetAluPexTwinPipeKOd(ent, pipeSeries)); default: return(0.0); } case PipeTypeEnum.Frem: case PipeTypeEnum.Retur: switch (pipeSystem) { case PipeSystemEnum.Ukendt: return(0.0); case PipeSystemEnum.Stål: return(GetBondedPipeKOd(ent, pipeSeries)); case PipeSystemEnum.Kobberflex: return(GetCuEnkeltPipeKOd(ent, pipeSeries)); case PipeSystemEnum.AluPex: return(GetAluPexEnkeltPipeKOd(ent, pipeSeries)); default: return(0.0); } default: return(0.0); } }
public static double GetPipeOd(Entity ent) { int dn = GetPipeDN(ent); PipeSystemEnum system = GetPipeSystem(ent); switch (system) { case PipeSystemEnum.Ukendt: return(0); case PipeSystemEnum.Stål: if (OdsSteel.ContainsKey(dn)) { return(OdsSteel[dn]); } else { return(0); } case PipeSystemEnum.Kobberflex: if (OdsCu.ContainsKey(dn)) { return(OdsCu[dn]); } else { return(0); } case PipeSystemEnum.AluPex: if (OdsAluPex.ContainsKey(dn)) { return(OdsAluPex[dn]); } else { return(0); } default: return(0); } }
public static bool IsInSituBent(Entity ent) { PipeTypeEnum type = GetPipeType(ent); PipeSystemEnum system = GetPipeSystem(ent); //Flexrør er altid insitu bukkede if ( system == PipeSystemEnum.Kobberflex || system == PipeSystemEnum.AluPex ) { return(true); } switch (type) { case PipeTypeEnum.Ukendt: throw new Exception( $"IsInSituBent -> Entity handle {ent.Handle} has invalid layer!"); case PipeTypeEnum.Twin: if (GetPipeDN(ent) < 65) { return(true); } break; case PipeTypeEnum.Frem: case PipeTypeEnum.Retur: if (GetPipeDN(ent) < 100) { return(true); } break; default: throw new Exception( $"IsInSituBent -> Entity handle {ent.Handle} has invalid layer!"); } return(false); }
public static PipeSeriesEnum GetPipeSeriesV2(Entity ent) { double realKod = ((Polyline)ent).ConstantWidth; PipeSystemEnum pipeSystem = GetPipeSystem(ent); double kod; switch (pipeSystem) { case PipeSystemEnum.Ukendt: break; case PipeSystemEnum.Stål: kod = GetPipeKOd(ent, PipeSeriesEnum.S3) / 1000; if (Equalz(kod, realKod, 0.0001)) { return(PipeSeriesEnum.S3); } kod = GetPipeKOd(ent, PipeSeriesEnum.S2) / 1000; if (Equalz(kod, realKod, 0.0001)) { return(PipeSeriesEnum.S2); } kod = GetPipeKOd(ent, PipeSeriesEnum.S1) / 1000; if (Equalz(kod, realKod, 0.0001)) { return(PipeSeriesEnum.S1); } break; case PipeSystemEnum.Kobberflex: case PipeSystemEnum.AluPex: kod = GetPipeKOd(ent, PipeSeriesEnum.S2) / 1000; if (Equalz(kod, realKod, 0.0001)) { return(PipeSeriesEnum.S2); } kod = GetPipeKOd(ent, PipeSeriesEnum.S1) / 1000; if (Equalz(kod, realKod, 0.0001)) { return(PipeSeriesEnum.S1); } break; default: break; } bool Equalz(double x, double y, double eps) { if (Math.Abs(x - y) < eps) { return(true); } else { return(false); } } return(PipeSeriesEnum.Undefined); }
public static string GetLabel(Entity ent) { //Test to see if the polyline resides in the correct layer int DN = GetPipeDN(ent); if (DN == 999) { prdDbg("Kunne ikke finde dimension på valgte rør! Kontroller lag!"); return(""); } var type = GetPipeType(ent); if (type == PipeTypeEnum.Ukendt) { prdDbg("Kunne ikke finde systemet på valgte rør! Kontroller lag!"); return(""); } double od = GetPipeOd(ent); if (od < 1.0) { prdDbg("Kunne ikke finde rørdimensionen på valgte rør! Kontroller lag!"); return(""); } PipeSystemEnum system = GetPipeSystem(ent); if (system == PipeSystemEnum.Ukendt) { prdDbg("Kunne ikke finde system på valgte rør! Kontroller lag!"); return(""); } //Build label string labelText = ""; double kOd = 0; PipeSeriesEnum series = GetPipeSeriesV2(ent); kOd = GetPipeKOd(ent, series); if (kOd < 1.0) { prdDbg("Kunne ikke finde kappedimensionen på valgte rør! Kontroller lag!"); return(""); } switch (type) { case PipeTypeEnum.Twin: switch (system) { case PipeSystemEnum.Stål: labelText = $"DN{DN}-ø{od.ToString("N1")}+ø{od.ToString("N1")}/{kOd.ToString("N0")}"; break; case PipeSystemEnum.Kobberflex: labelText = $"CU{DN}-ø{od.ToString("N0")}+ø{od.ToString("N0")}/{kOd.ToString("N0")}"; break; case PipeSystemEnum.AluPex: labelText = $"AluPex{DN}-ø{od.ToString("N0")}+ø{od.ToString("N0")}/{kOd.ToString("N0")}"; break; default: break; } break; case PipeTypeEnum.Frem: case PipeTypeEnum.Retur: switch (system) { case PipeSystemEnum.Stål: labelText = $"DN{DN}-ø{od.ToString("N1")}/{kOd.ToString("N0")}"; break; case PipeSystemEnum.Kobberflex: labelText = $"CU{DN}-ø{od.ToString("N0")}/{kOd.ToString("N0")}"; break; case PipeSystemEnum.AluPex: labelText = $"AluPex{DN}-ø{od.ToString("N0")}/{kOd.ToString("N0")}"; break; default: break; } break; default: break; } return(labelText); }
public static double GetPipeMinElasticRadius(Entity ent, bool considerInSituBending = true) { if (considerInSituBending && IsInSituBent(ent)) { return(0); } Dictionary <int, double> cuS1Enkelt = new Dictionary <int, double> { { 15, 0.6 }, { 18, 0.7 }, { 22, 0.8 }, { 28, 0.8 }, }; Dictionary <int, double> cuS2Enkelt = new Dictionary <int, double> { { 15, 0.8 }, { 18, 0.8 }, { 22, 0.8 }, { 28, 1.0 }, }; Dictionary <int, double> cuS1Twin = new Dictionary <int, double> { { 22, 0.9 }, { 28, 0.9 }, }; Dictionary <int, double> cuS2Twin = new Dictionary <int, double> { { 22, 1.1 }, { 28, 1.1 }, }; Dictionary <int, double> aluPexS1Enkelt = new Dictionary <int, double> { { 20, 0.7 }, { 25, 0.7 }, { 32, 0.7 }, }; Dictionary <int, double> aluPexS2Enkelt = new Dictionary <int, double> { { 20, 0.7 }, { 32, 0.9 }, }; Dictionary <int, double> aluPexS1Twin = new Dictionary <int, double> { { 20, 0.9 }, { 25, 0.9 }, { 32, 1.1 }, }; Dictionary <int, double> aluPexS2Twin = new Dictionary <int, double> { { 16, 0.9 }, { 20, 1.0 }, { 25, 1.0 }, { 32, 1.5 }, }; Dictionary <int, double> steelRadii = new Dictionary <int, double> { { 20, 13.0 }, { 25, 17.0 }, { 32, 21.0 }, { 40, 24.0 }, { 50, 30.0 }, { 65, 38.0 }, { 80, 44.0 }, { 100, 57.0 }, { 125, 70.0 }, { 150, 84.0 }, { 200, 110.0 }, { 250, 137.0 }, { 300, 162.0 }, { 350, 178.0 }, { 400, 203.0 }, { 999, 0.0 } }; PipeTypeEnum pipeType = GetPipeType(ent); PipeSeriesEnum pipeSeries = GetPipeSeriesV2(ent); PipeSystemEnum pipeSystem = GetPipeSystem(ent); switch (pipeSystem) { case PipeSystemEnum.Ukendt: return(0); case PipeSystemEnum.Stål: return(steelRadii[GetPipeDN(ent)]); case PipeSystemEnum.Kobberflex: switch (pipeType) { case PipeTypeEnum.Ukendt: return(0); case PipeTypeEnum.Twin: switch (pipeSeries) { case PipeSeriesEnum.Undefined: return(0); case PipeSeriesEnum.S1: return(cuS1Twin[GetPipeDN(ent)]); case PipeSeriesEnum.S2: return(cuS2Twin[GetPipeDN(ent)]); case PipeSeriesEnum.S3: return(0); default: return(0); } case PipeTypeEnum.Frem: case PipeTypeEnum.Retur: switch (pipeSeries) { case PipeSeriesEnum.Undefined: return(0); case PipeSeriesEnum.S1: return(cuS1Enkelt[GetPipeDN(ent)]); case PipeSeriesEnum.S2: return(cuS2Enkelt[GetPipeDN(ent)]); case PipeSeriesEnum.S3: return(0); default: return(0); } default: return(0); } case PipeSystemEnum.AluPex: switch (pipeType) { case PipeTypeEnum.Ukendt: return(0); case PipeTypeEnum.Twin: switch (pipeSeries) { case PipeSeriesEnum.Undefined: return(0); case PipeSeriesEnum.S1: return(aluPexS1Twin[GetPipeDN(ent)]); case PipeSeriesEnum.S2: return(aluPexS2Twin[GetPipeDN(ent)]); case PipeSeriesEnum.S3: return(0); default: return(0); } case PipeTypeEnum.Frem: case PipeTypeEnum.Retur: switch (pipeSeries) { case PipeSeriesEnum.Undefined: return(0); case PipeSeriesEnum.S1: return(aluPexS1Enkelt[GetPipeDN(ent)]); case PipeSeriesEnum.S2: return(aluPexS2Enkelt[GetPipeDN(ent)]); case PipeSeriesEnum.S3: return(0); default: return(0); } default: return(0); } default: return(0); } }
internal static void UpdateWidths() { DocumentCollection docCol = Application.DocumentManager; Database localDb = docCol.MdiActiveDocument.Database; Document doc = docCol.MdiActiveDocument; Editor editor = docCol.MdiActiveDocument.Editor; using (DocumentLock docLock = doc.LockDocument()) using (Transaction tx = localDb.TransactionManager.StartTransaction()) { try { HashSet <Polyline> pipes = localDb.GetFjvPipes(tx); foreach (Polyline pipe in pipes) { PipeSystemEnum system = GetPipeSystem(pipe); PipeSeriesEnum tempSeries; //Work around the fact that flexible pipes only have 2 series switch (system) { case PipeSystemEnum.Ukendt: tempSeries = CurrentSeries; break; case PipeSystemEnum.Stål: tempSeries = CurrentSeries; break; case PipeSystemEnum.Kobberflex: case PipeSystemEnum.AluPex: if (CurrentSeries == PipeSeriesEnum.S3) { tempSeries = PipeSeriesEnum.S2; } else { tempSeries = CurrentSeries; } break; default: tempSeries = CurrentSeries; break; } double kappeOd = GetPipeKOd(pipe, tempSeries); if (kappeOd < 0.1) { continue; } pipe.CheckOrOpenForWrite(); pipe.ConstantWidth = kappeOd / 1000; } tx.Commit(); } catch (System.Exception e) { prdDbg(e.ToString() + "\n"); tx.Abort(); return; } } }