Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit 4ea125c

Browse files
authored
Merge pull request #671 from Esri/dev
Dev to Master merge
2 parents 64fd0e1 + 4038573 commit 4ea125c

31 files changed

Lines changed: 385 additions & 194 deletions

DistanceAndDirection.jpg

-205 KB
Binary file not shown.

DistanceDirection.png

645 KB
Loading

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The Distance and Direction component provides the ability to create geodesic features such as lines, circles, ellipses and range rings.
44

5-
![Image of Distance and Direction](DistanceAndDirection.jpg)
5+
![Image of Distance and Direction](DistanceDirection.png)
66

77
## Features
88

@@ -26,19 +26,19 @@ The Distance and Direction component provides the ability to create geodesic fea
2626
### Build Requirements
2727

2828
* Visual Studio 2015
29-
* Important Note: Visual Studio 2013 is required if building on ArcGIS 10.3.1
29+
* Important Note: Visual Studio 2013 [may also be required if building on ArcGIS 10.4.1-10.5.1](https://support.esri.com/en/technical-article/000012659)
3030
* ArcGIS for Desktop
31-
* ArcMap 10.3.1+
32-
* ArcGIS Pro 2.1+
33-
* ArcGIS Desktop SDK for .NET 10.3.1+
31+
* ArcMap 10.4.1+
32+
* ArcGIS Pro 2.2+
33+
* ArcGIS Desktop SDK for .NET 10.4.1+
3434
* [ArcGIS Desktop for .NET Requirements](https://desktop.arcgis.com/en/desktop/latest/get-started/system-requirements/arcobjects-sdk-system-requirements.htm)
35-
* [ArcGIS Pro SDK](http://pro.arcgis.com/en/pro-app/sdk/) 2.1+
35+
* [ArcGIS Pro SDK](http://pro.arcgis.com/en/pro-app/sdk/) 2.2+
3636

3737
### Run Requirements
3838

3939
* ArcGIS for Desktop
40-
* ArcMap 10.3.1+
41-
* ArcGIS Pro 2.1+
40+
* ArcMap 10.4.1+
41+
* ArcGIS Pro 2.2+
4242

4343
## Instructions
4444

source/addins/ArcMapAddinDistanceAndDirection/ArcMapAddinDistanceAndDirection/ArcMapAddinDistanceAndDirection.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
1818
<ProductVersion>9.0.21022</ProductVersion>
1919
<SchemaVersion>2.0</SchemaVersion>
20-
<ProjectGuid>{C37767BB-18E6-4743-A5EC-1D7F2B38F487}</ProjectGuid>
20+
<ProjectGuid>{E319BB7C-DE2F-44F2-8A0E-EBD4F9E110B7}</ProjectGuid>
2121
<OutputType>Library</OutputType>
2222
<AppDesignerFolder>Properties</AppDesignerFolder>
2323
<RootNamespace>ArcMapAddinDistanceAndDirection</RootNamespace>
@@ -264,7 +264,7 @@
264264
<AddInTargetVersion>10.3</AddInTargetVersion>
265265
</PropertyGroup>
266266
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
267-
<Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />
267+
<Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />
268268
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
269269
Other similar extension points exist, see Microsoft.Common.targets.
270270
-->
@@ -284,7 +284,7 @@
284284
</Target>
285285
<Target Name="AfterBuild">
286286
<!-- Gives build warning when add-in targets file is not found. -->
287-
<Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />
287+
<Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />
288288
</Target>
289289
<ProjectExtensions>
290290
<!-- Default ESRI add-in properties -->

source/addins/ArcMapAddinDistanceAndDirection/ArcMapAddinDistanceAndDirection/Config.esriaddinx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Company>Esri</Company>
99
<Date>1/17/2017</Date>
1010
<Targets>
11-
<Target name="Desktop" version="10.3" />
11+
<Target name="Desktop" version="10.4" />
1212
</Targets>
1313
<AddIn language="CLR4.5" library="DistanceAndDirection.dll" namespace="ArcMapAddinDistanceAndDirection">
1414
<ArcMap>
-5.74 KB
Loading

source/addins/ArcMapAddinDistanceAndDirection/ArcMapAddinDistanceAndDirection/ViewModels/CircleViewModel.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using ESRI.ArcGIS.ArcMapUI;
2424
using ESRI.ArcGIS.Carto;
2525
using DistanceAndDirectionLibrary.Helpers;
26+
using System.Globalization;
2627

2728
namespace ArcMapAddinDistanceAndDirection.ViewModels
2829
{
@@ -826,7 +827,7 @@ internal override void Reset(bool toolReset)
826827
base.Reset(toolReset);
827828
TravelTime = 0;
828829
TravelRate = 0;
829-
}
830+
}
830831

831832
/// <summary>
832833
/// Create a geodetic circle
@@ -838,6 +839,7 @@ private IGeometry CreateCircle()
838839
return null;
839840
}
840841

842+
string unitLabel = "";
841843
// This section including UpdateDistance serves to handle Diameter appropriately
842844
var polyLine = (IPolyline)new Polyline();
843845
polyLine.SpatialReference = Point1.SpatialReference;
@@ -867,8 +869,8 @@ private IGeometry CreateCircle()
867869
//Get centroid of polygon
868870
var area = (IArea)newPoly;
869871

870-
string unitLabel = "";
871872
int roundingFactor = 0;
873+
DistanceTypes dtVal = (DistanceTypes)LineDistanceType;
872874
// If Distance Calculator is in use, use the unit from the Rate combobox
873875
// to label the circle
874876
if (IsDistanceCalcExpanded)
@@ -888,7 +890,8 @@ private IGeometry CreateCircle()
888890
roundingFactor = 2;
889891
break;
890892
case DistanceTypes.NauticalMiles:
891-
unitLabel = "Nautical Miles";
893+
var displayValue = new EnumToFriendlyNameConverter();
894+
unitLabel = Convert.ToString(displayValue.Convert(RateUnit, typeof(string), new object(), CultureInfo.CurrentCulture));
892895
roundingFactor = 2;
893896
break;
894897
default:
@@ -914,15 +917,16 @@ private IGeometry CreateCircle()
914917
roundingFactor = 2;
915918
break;
916919
case DistanceTypes.NauticalMiles:
917-
unitLabel = "Nautical Miles";
920+
unitLabel = RateUnit.ToString();
918921
roundingFactor = 2;
919922
break;
920923
default:
921924
break;
922925
}
923926

924-
DistanceTypes dtVal = (DistanceTypes)LineDistanceType;
925-
unitLabel = StringParser.GetStringValue(dtVal);
927+
928+
var displayValue = new EnumToFriendlyNameConverter();
929+
unitLabel = Convert.ToString(displayValue.Convert(dtVal, typeof(string), new object(), CultureInfo.CurrentCulture));
926930
}
927931

928932
string circleTypeLabel = circleType.ToString();
@@ -942,7 +946,7 @@ private IGeometry CreateCircle()
942946
this.AddTextToMap(area.LabelPoint, string.Format("{0}:{1} {2}",
943947
circleTypeLabel,
944948
distanceLabel,
945-
unitLabel));
949+
StringParser.GetStringValue(dtVal)));
946950
}
947951

948952
double radiusDistance = radiusOrDiameterDistance;
@@ -954,9 +958,9 @@ private IGeometry CreateCircle()
954958
circleAttributes.Add("centerx", Point1.X);
955959
circleAttributes.Add("centery", Point1.Y);
956960
if (IsDistanceCalcExpanded)
957-
circleAttributes.Add("distanceunit", RateUnit.ToString());
961+
circleAttributes.Add("distanceunit", unitLabel.ToString());
958962
else
959-
circleAttributes.Add("distanceunit", LineDistanceType.ToString());
963+
circleAttributes.Add("distanceunit", unitLabel.ToString());
960964
var color = new RgbColorClass() { Red = 255 } as IColor;
961965
this.AddGraphicToMap(construct as IGeometry, color, attributes: circleAttributes);
962966
Point2 = null;

source/addins/ArcMapAddinDistanceAndDirection/ArcMapAddinDistanceAndDirection/ViewModels/EllipseViewModel.cs

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using DistanceAndDirectionLibrary;
2424
using System.Collections.Generic;
2525
using DistanceAndDirectionLibrary.Helpers;
26+
using System.Globalization;
2627

2728
namespace ArcMapAddinDistanceAndDirection.ViewModels
2829
{
@@ -586,9 +587,17 @@ private void UpdateAzimuthFromTo(AzimuthTypes fromType, AzimuthTypes toType)
586587
double angle = Azimuth;
587588

588589
if (fromType == AzimuthTypes.Degrees && toType == AzimuthTypes.Mils)
589-
angle *= 17.777777778;
590+
angle *= ValueConverterConstant.DegreeToMils;
591+
else if (fromType == AzimuthTypes.Degrees && toType == AzimuthTypes.Gradians)
592+
angle *= ValueConverterConstant.DegreeToGradian;
590593
else if (fromType == AzimuthTypes.Mils && toType == AzimuthTypes.Degrees)
591-
angle *= 0.05625;
594+
angle *= ValueConverterConstant.MilsToDegree;
595+
else if (fromType == AzimuthTypes.Mils && toType == AzimuthTypes.Gradians)
596+
angle *= ValueConverterConstant.MilsToGradian;
597+
else if (fromType == AzimuthTypes.Gradians && toType == AzimuthTypes.Degrees)
598+
angle *= ValueConverterConstant.GradianToDegree;
599+
else if (fromType == AzimuthTypes.Gradians && toType == AzimuthTypes.Mils)
600+
angle *= ValueConverterConstant.GradianToMils;
592601

593602
Azimuth = angle;
594603
}
@@ -601,9 +610,9 @@ private void UpdateAzimuthFromTo(AzimuthTypes fromType, AzimuthTypes toType)
601610
private double GetAzimuthAsDegrees()
602611
{
603612
if (AzimuthType == AzimuthTypes.Mils)
604-
{
605-
return Azimuth * 0.05625;
606-
}
613+
return Azimuth * ValueConverterConstant.MilsToDegree;
614+
else if (AzimuthType == AzimuthTypes.Gradians)
615+
return Azimuth * ValueConverterConstant.GradianToDegree;
607616

608617
return Azimuth;
609618
}
@@ -634,14 +643,11 @@ private double GetAngleDegrees(double angle)
634643
bearing = 360.0 - (bearing - 90);
635644

636645
if (AzimuthType == AzimuthTypes.Degrees)
637-
{
638646
return bearing;
639-
}
640-
641-
if (AzimuthType == AzimuthTypes.Mils)
642-
{
643-
return bearing * 17.777777778;
644-
}
647+
else if (AzimuthType == AzimuthTypes.Mils)
648+
return bearing * ValueConverterConstant.DegreeToMils;
649+
else if (AzimuthType == AzimuthTypes.Gradians)
650+
return bearing * ValueConverterConstant.DegreeToGradian;
645651

646652
return 0.0;
647653
}
@@ -688,28 +694,23 @@ private IGeometry DrawEllipse()
688694
var ellipticArc = (IConstructGeodetic)new Polyline();
689695

690696
double bearing;
691-
if (AzimuthType == AzimuthTypes.Mils)
692-
{
693-
bearing = GetAzimuthAsDegrees();
694-
}
695-
else
696-
{
697-
bearing = Azimuth;
698-
}
699-
697+
bearing = GetAzimuthAsDegrees();
700698
ellipticArc.ConstructGeodesicEllipse(Point1, GetLinearUnit(), MajorAxisDistance, MinorAxisDistance, bearing, esriCurveDensifyMethod.esriCurveDensifyByAngle, 0.01);
701699
var line = ellipticArc as IPolyline;
702700
if (line != null)
703701
{
704702
var color = (IColor)new RgbColorClass() { Red = 255 };
705703

704+
var displayValue = new EnumToFriendlyNameConverter();
705+
var unitLabel = Convert.ToString(displayValue.Convert(LineDistanceType, typeof(string), new object(), CultureInfo.CurrentCulture));
706+
706707
IDictionary<String, System.Object> ellipseAttributes = new Dictionary<String, System.Object>();
707708
ellipseAttributes.Add("majoraxis", MajorAxisDistance);
708709
ellipseAttributes.Add("minoraxis", MinorAxisDistance);
709710
ellipseAttributes.Add("azimuth", Azimuth);
710711
ellipseAttributes.Add("centerx", Point1.X);
711712
ellipseAttributes.Add("centery", Point1.Y);
712-
ellipseAttributes.Add("distanceunit", LineDistanceType.ToString());
713+
ellipseAttributes.Add("distanceunit", unitLabel.ToString());
713714
ellipseAttributes.Add("angleunit", AzimuthType.ToString());
714715

715716
AddGraphicToMap((IGeometry)line, color, attributes: ellipseAttributes);
@@ -727,9 +728,6 @@ private IGeometry DrawEllipse()
727728
double majAxisDist = majorAxisDistance * 2;
728729
double minAxisDist = minorAxisDistance * 2;
729730

730-
DistanceTypes dtVal1 = dtVal;
731-
var temp = StringParser.GetStringValue(dtVal);
732-
733731
if (area != null)
734732
{
735733
AddTextToMap(area.LabelPoint, string.Format("{0}:{1} {2}{3}{4}:{5} {6}{7}{8}:{9} {10}",

0 commit comments

Comments
 (0)