POST
|
Thank you for explaining! I really appreciate it. I have one more follow-up question regarding the use of 'bool'. I noticed you changed validFacet to a variable within the body of the code rather than the original use as a method pointing back to public static bool ValidFacet. My question is this: How come the error 'not all code paths return a value' is not being thrown for ValidFacet when it is never used in the body of the code? In my attempts to use return type values other than 'void' I keep receiving the 'not all code paths' error message. For example: public static IPoint NewPoint (double X, double y) { //create a new point and put the coordinates provided IPoint pntNew; IPoint newPoint; pntNew = new Point(); pntNew.PutCoords(X, y); //return the new geometry newPoint = pntNew; } I either have the 'code paths' error or if I change newPoint to NewPoint then I receive a method error. The only way to not have an error is to remove IPoint which seems like it will change the function of NewPoint. So, how come your procedure can use 'bool', use validFacet as a variable, not mention ValidFacet in the code body, and not receive an error?
... View more
05-12-2015
09:24 AM
|
0
|
2
|
533
|
POST
|
Ted, Thank you for your help. I was not aware of VBA's automatic conversion to variant. It is something I am now trying to make sure I consider as the problem when encountering other errors.
... View more
05-11-2015
09:08 AM
|
0
|
2
|
1498
|
POST
|
Daniel, Thanks for your help, the code appears to work! I have other code I am working on that are tied-in to that code so I can't currently test it but all the errors are gone and other areas that were also using a ValidFacet reference are no longer showing errors. I am interested in the logic and reasoning behind the changes you made. If you don't mind, I know (and appreciate) that you have already spend quite a bit of time translating the code, I have a few questions about some of your modifications. First, what made you decide to change from 'void' to 'bool'? I have other class programs that use boolean in the code but I have as 'void' in the return type. Second, I noticed you are not using the IFeatureCursor. Why is it no longer needed; ie. what code modifications made IFeatureCursor obsolete? Lastly, why were you able to define pFlayer as null instead of using pFLayer = (IFeatureLayer)pMap.get_Layer(0); . Is it because you upgraded the else if to an if and included in the logic statement else for pSearchLayer = pFlayer and set it to for a non-blank pSearchLayer?
... View more
05-11-2015
09:04 AM
|
0
|
4
|
1498
|
POST
|
Since the statement seems to be checking to see if the variable's value exists in the ValidFacet, I have also tried if (!FacetClass.ValidFacet.Contains(pTopFac)) The statement does not work but perhaps it is closer to what is needed?
... View more
05-05-2015
06:44 AM
|
0
|
0
|
1498
|
POST
|
I have encountered another instance where the same situation arises; ValidFacet is used in a different class and with a string parameter. I still cannot figure out exactly what the original vba code is trying to say or how to convert the vba to C#. If Not ValidFacet(pTopFac) Then pTopFac = "END OF DATA" End If So far I have this (which doesn't work): if (FacetClass.ValidFacet() != pTopFac) { pTopFac = "END OF DATA"; }
... View more
05-05-2015
06:12 AM
|
0
|
1
|
1498
|
POST
|
I am transferring a code from a VBA module to a C# arcmap add-in. I am using ArcMap 10.2 and Visual Studio 2010. I cannot figure out how to translate what appears to be a method from a different class (module) within an ElseIf Not statement that places 2 variables from the current class within the method. The biggest problem for me in translating the code is that I can't really figure out with 100% certainty what the original code is saying with that ElseIf Not statement. Any assistance will be appreciated. This is the code snippet that I am referring to (ValidFacet is the method from a different module): ElseIf Not ValidFacet(txtFacetNumber.Text & cboFacetLetter.Text) Then
MsgBox "The facet you entered does not exist." & vbCrLf & _
"Please check and try again.", vbSystemModal Here it is again within the original VBA code. Private Sub cmdCreateFacet_Click()
Dim strFacetNumber As String
If txtFacetNumber.Text = "" Then
MsgBox "You must inter a value for the facet.", vbCritical + vbSystemModal
txtFacetNumber.SetFocus
Exit Sub
ElseIf cboFacetLetter.Text = "" And Not optFullFacet.Value Then
MsgBox "You must inter a value for the facet letter.", vbCritical + vbSystemModal
cboFacetLetter.SetFocus
Exit Sub
ElseIf Not ValidFacet(txtFacetNumber.Text & cboFacetLetter.Text) Then
MsgBox "The facet you entered does not exist." & vbCrLf & _
"Please check and try again.", vbSystemModal
cboFacetLetter.Text = ""
With txtFacetNumber
.Text = ""
.SetFocus
End With
Exit Sub
End If
strFacetNumber = txtFacetNumber.Text & cboFacetLetter.Text
DrawMap strFacetNumber
'MsgBox "Drawing"
cmdExit_Click
End Sub Here is my C# translation so far. I have created a different class (FacetClass) for the ValidFacet method. I reference the FacetClass namespace (SingleFacet1) within the 'using' section although both SingleFacetForm1 and FacetClass are from the same namespace.
public partial class SingleFacetForm1 : Form
{
private void searchBtn_Click(object sender, EventArgs e)
{
string facetNumberstr;
if (facetNumbertxt.Text == "")
{
MessageBox.Show(new Form {TopMost = true }, "You must enter a value for the facet.");
facetNumbertxt.Focus();
}
else if (qFacetCmb.Text == "" && !(wFacetrb.Checked))
{
MessageBox.Show(new Form {TopMost = true }, "You must enter a value for the facet letter.");
qFacetCmb.Focus();
}
else (! FacetClass.ValidFacet(facetNumbertxt.Text && qFacetCmb.Text))
{
MessageBox.Show(new Form {TopMost = true }, "The facet you entered does not exist." + newLine + " " + "Please check and try again.");
qFacetCmb.Text = "";
facetNumbertxt.Text = "";
facetNumbertxt.Focus();
}
facetNumberstr = facetNumbertxt.Text + qFacetCmb.Text;
facetNumberstr.DrawMap facetNumberstr;
//facetNumberstr = new Draw(Map);
//Draw(Map) (facetNumberstr);
MessageBox.Show("Drawing");
//cancelBtn_Click();
cancelBtn_Click
} And just in case it helps, here is my C# code for ValidFacet:
public static void ValidFacet()
{
string newLine = System.Environment.NewLine;
IMxDocument pMxDoc = ArcMap.Document;
IMap pMap = pMxDoc.FocusMap;
IFeatureLayer pFLayer;
bool ValidFacet = true;
string facetStr = "";
int y;
pFLayer = (IFeatureLayer)pMap.get_Layer(0);
for (y = 0; y <= pMap.LayerCount - 1; y++)
{
if (pMap.get_Layer(y).Name == "Facet")
{
pFLayer = pMap.get_Layer(y) as IFeatureLayer;
}
else if (pFLayer as IFeatureLayer == null)
{
MessageBox.Show("Failed to find the Facet Layer." + newLine + "Please check and try again");
ValidFacet = false;
}
}
//IFeatureLayer pFLayer;
IGeoFeatureLayer pSearchLayer;
IFeatureClass pSearchFC;
IFeatureCursor pFCursor;
IQueryFilter pQueryFilter;
//pFLayer = pSearchLayer;
pSearchLayer = (IGeoFeatureLayer)pFLayer;
pSearchFC = pSearchLayer.DisplayFeatureClass;
//Set queryfilter and search for pages to update
pQueryFilter = new QueryFilter();
String strSelField = "qfname";
pQueryFilter.WhereClause = strSelField + " like '" + facetStr + "%'";
pFCursor = pSearchFC.Search(pQueryFilter, false);
if (pSearchFC.FeatureCount(pQueryFilter) < 1)
{
ValidFacet = false;
}
}
... View more
04-27-2015
09:05 AM
|
0
|
12
|
5404
|
POST
|
No responses here but just in case this helps someone out in the future, here is the now working code. Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Geometry Imports ESRI.ArcGIS.Output Imports System.Windows.Forms Imports ESRI.ArcGIS.ArcMapUI Public Class PDFCreation Inherits ESRI.ArcGIS.Desktop.AddIns.Button Protected Overrides Sub OnClick() PDFModule() End Sub Protected Overrides Sub OnUpdate() Enabled = My.ArcMap.Application IsNot Nothing End Sub Public Sub PDFModule() Dim pMxDoc As IMxDocument Dim pActiveView As IActiveView Dim pPageLayout As IPageLayout Dim pExport As IExport Dim pPixelEnv As IEnvelope Dim lDPI As Long Dim tExpRect As tagRECT Dim hDC As Long Dim res = 96 pMxDoc = My.ArcMap.Application.Document pPageLayout = pMxDoc.PageLayout pActiveView = pPageLayout pExport = New ESRI.ArcGIS.Output.ExportPDF pPixelEnv = New Envelope lDPI = 300 pExport.Resolution = lDPI tExpRect.left = 0 tExpRect.top = 0 tExpRect.bottom = My.ArcMap.Document.ActiveView.ExportFrame.bottom * (lDPI / res) tExpRect.right = My.ArcMap.Document.ActiveView.ExportFrame.right * (lDPI / res) pPixelEnv.PutCoords(tExpRect.left, tExpRect.top, tExpRect.right, tExpRect.bottom) pExport.PixelBounds = pPixelEnv Dim pdfName As String = "" Dim saveFileDialog1 As New SaveFileDialog saveFileDialog1.Filter = "PDF File|*.pdf" saveFileDialog1.Title = "Save A PDF File" saveFileDialog1.FileName = pdfName saveFileDialog1.ShowDialog() pExport.ExportFileName = saveFileDialog1.FileName hDC = pExport.StartExporting pActiveView.Output(hDC, lDPI, tExpRect, Nothing, Nothing) pExport.FinishExporting() MessageBox.Show("Finished Exporting Map") pExport.Cleanup() End Sub End Class
... View more
03-27-2015
08:21 AM
|
0
|
0
|
775
|
POST
|
So drag a (Select Elements) rectangle over the area, delete the rectangle and the green lines (which were selected behind the scenes) will also be deleted? I will have to give this a try the next time it happens. Thanks.
... View more
03-25-2015
11:14 AM
|
0
|
1
|
3017
|
POST
|
I don't know about what happens in Maegan's case, but for me, I can't ever select the green lines. I have tried to Identify the lines but the few times I get a result, the result does not make any sense.
... View more
03-25-2015
10:57 AM
|
0
|
3
|
3017
|
POST
|
This has happened to me. In my case the map would look fine when I closed it but then when I reopened it or modified the layout, the green lines would appear. Always two of them. I have managed to create a (4th) version of my map that the green lines have yet to appear in. I took everything off the page layout (ie. scale bar, compass, text, border). Then, using the select tool, I drew a selection area over the entire map. When I did that, I discovered two little-bitty blank boxes at the bottom right of my page. I deleted those two boxes and re-inserted everything from scratch. I don't know for certain that the boxes were causing the problem but the lines have not re-appeared so perhaps it is worth a try for you.
... View more
03-25-2015
10:43 AM
|
0
|
0
|
3017
|
POST
|
ESRI has a Spatial Analyst tutorial: http://help.arcgis.com/en/arcgisdesktop/10.0/pdf/spatial-analyst-tutorial.pdf Colorado State University has a paper that includes a brief description of spatial analysis http://www.consplan.com/images/figures29.pdf To understand the different types of spatial analyses available, you can look at ESRI's complete listing of Spatial Analyst tools ArcGIS Help 10.1
... View more
03-24-2015
07:42 AM
|
2
|
1
|
873
|
POST
|
As an extension to what Rebecca and Tim said, it could also be that the browser you are using cannot be used with Geoforms. If adjusting the privacy settings does not work then, if you have not already, try a different browser.
... View more
03-24-2015
06:01 AM
|
1
|
2
|
893
|
POST
|
I have been trying to get my print pagelayout working by using the IExportPDF interface. Using that method, I can theoretically specify the boundaries and page extent so that my printed pagelayout is centered on the page. The VBA version of the code worked perfectly with everything centered and looking good. If you are interested in fiddling with my code and getting it to work for your purposes, you can find it here Export Page Layout to PDF using ESRI add-in with vb.net . If you do a search for ExportPDF here or at StackExchange GIS then you can find some different examples of codes using the interface. You can also export to different extensions such as jpg using IExport.
... View more
03-24-2015
05:28 AM
|
0
|
0
|
282
|
POST
|
Are you also deleting the file from the location that it is automatically placed in by ArcMap? Ex. On my computer the style is automatically saved in AppData\Roaming\ESRI\Desktop10.2\ArcMap.
... View more
03-19-2015
12:54 PM
|
0
|
1
|
376
|
POST
|
I have had this happen too. As in your case, it was not every time. I never noticed anything I did or didn't do differently than normal when the problem occurred. I assumed it was just a glitch and circumvented it by repeating the process 1-2 times. Similar to when I make a selection in a layer, export it to a new layer, open the new layer, double-check it looked okay, go to properties and symbolize, go back to the attribute table and discover all records from the original layer were present.
... View more
03-19-2015
08:53 AM
|
2
|
0
|
786
|
Title | Kudos | Posted |
---|---|---|
1 | 10-24-2019 11:54 AM | |
1 | 05-24-2018 09:42 AM | |
1 | 10-24-2019 12:24 PM | |
1 | 01-07-2016 10:48 AM | |
1 | 02-24-2016 08:53 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|