Corridor |
Exception | Condition |
---|---|
ArgumentException | This exception is thrown if the Corridor name is empty or becomes empty after it is trimmed (removing all leading and trailing blank spaces). It will also be thrown if the specified name already exists in the drawing. Corridor names are case-sensitive; therefore, "Corridor - 1" will not match "corridor - 1". This practice is not recommended. |
ArgumentNullException | This exception is thrown if the specified name string is null. |
This method creates a new, empty Corridor with the specified name. The Corridor object will not contain a Baseline or BaselineRegion. The method does not allow duplicate names; however, Corridor names are case-sensitive, so it is possible to add a Corridor "corridor - 1" when a "Corridor - 1" already exists. Adding Corridor objects with names that differ only by case is not recommended.
1[CommandMethod(ReferenceGuideSample.GoupId, "CreateCorridorHavingBaselines", CommandFlags.Modal)] 2public void CreateCorridorHavingMultiBaselines() 3{ 4 using (Transaction tr = startTransaction()) 5 { 6 ObjectId alignmentId = promptForEntity("\nSelect an alignment: ", typeof(Alignment)); 7 Alignment alignment = alignmentId.GetObject(OpenMode.ForRead) as Alignment; 8 ObjectId profileId = alignment.GetProfileIds()[0]; 9 ObjectId assemblyId = promptForEntity("\nSelect an assembly: ", typeof(Assembly)); 10 ObjectId featurelineId = promptForEntity("\nSelect a feature line: ", typeof(FeatureLine)); 11 12 // Create a corridor having 1 alignment-based baseline 13 { 14 string corridorName = "New Corridor 1"; 15 ObjectId corridorId = _civildoc.CorridorCollection.Add(corridorName, "Baseline Name 1", alignmentId, profileId); 16 Corridor corridor = corridorId.GetObject(OpenMode.ForWrite) as Corridor; 17 corridor.Baselines[0].BaselineRegions.Add("Region Name 1", assemblyId); 18 corridor.Rebuild(); 19 20 corridorName = "New Corridor 2"; 21 corridorId = _civildoc.CorridorCollection.Add(corridorName, "Baseline Name 1", alignmentId, profileId, "Region Name 1", assemblyId); 22 corridor = corridorId.GetObject(OpenMode.ForWrite) as Corridor; 23 corridor.Rebuild(); 24 } 25 26 // Create a corridor having 1 featureline-based baseline 27 { 28 string corridorName = "New Corridor 3"; 29 ObjectId corridorId = _civildoc.CorridorCollection.Add(corridorName, "Baseline Name 1", featurelineId); 30 Corridor corridor = corridorId.GetObject(OpenMode.ForWrite) as Corridor; 31 corridor.Baselines[0].BaselineRegions.Add("Region Name 1", assemblyId); 32 corridor.Rebuild(); 33 34 corridorName = "New Corridor 4"; 35 corridorId = _civildoc.CorridorCollection.Add(corridorName, "Baseline Name 1", featurelineId, "Region Name 1", assemblyId); 36 corridor = corridorId.GetObject(OpenMode.ForWrite) as Corridor; 37 corridor.Rebuild(); 38 } 39 40 // Create a corridor having 3 baselines; 41 { 42 string corridorName = "New Corridor 5"; 43 ObjectId corridorId = _civildoc.CorridorCollection.Add(corridorName); 44 Corridor corridor = corridorId.GetObject(OpenMode.ForWrite) as Corridor; 45 46 // Add baseline 1: alignment-based baseline. 47 Baseline baseline = corridor.Baselines.Add("Baseline Name 1", alignmentId, profileId); 48 baseline.BaselineRegions.Add("Region Name 1", assemblyId); 49 50 // Add baseline 2: alignment-based baseline. 51 // Here alignmentId, profileId and assemblyId can be replaced with another alingmentId, profileId and assemblyId. 52 baseline = corridor.Baselines.Add("Baseline Name 2", alignmentId, profileId); 53 baseline.BaselineRegions.Add("Region Name 1", assemblyId); 54 55 // Add baseline 3: featureline-based baseline. 56 baseline = corridor.Baselines.Add("Baseline Name 3", featurelineId); 57 baseline.BaselineRegions.Add("Region Name 1", assemblyId); 58 59 // Last rebuild corridor 60 corridor.Rebuild(); 61 } 62 tr.Commit(); 63 } 64}