int hitPartIndex; hitPartIndex = gcPolyline.GeometryCount; hitPartIndex--; IGeometry geometry = gcPolyline.get_Geometry(hitPartIndex); var pointCollection = (IPointCollection4)geometry; int indextransformPoint; indextransformPoint = pointCollection.PointCount; indextransformPoint--; Double zOffset = Convert.ToDouble( textBox3.Text); MessageBox.Show("zOffset = " + textBox3.Text); if (zOffset == 0 ) return gcPolyline as IPolyline; IPoint TestPoint; TestPoint = pointCollection.get_Point(0); TestPoint.X = pointCollection.get_Point(0).X; TestPoint.Y = pointCollection.get_Point(0).Y; TestPoint.Z = pointCollection.get_Point(0).Z + zOffset; MessageBox.Show("test.z = " + TestPoint.Z.ToString()); var transform3D = (ITransform3D)TestPoint; transform3D.Move3D(0, 0, zOffset); pointCollection.UpdatePoint(indextransformPoint, TestPoint);
Solved! Go to Solution.
IApplication m_application; public frmSetHeight() { InitializeComponent(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void btnOK_Click(object sender, EventArgs e) { m_application = AddHeight.ArcScene.Application; ISxDocument pDoc = ArcScene.Document; IFeatureLayer pFtrLyr = GetCurrentFeatyreLayer(); IFeatureSelection pFtrSel = pFtrLyr as IFeatureSelection; IQueryFilter pFilter = new QueryFilterClass(); pFilter.WhereClause = ""; ICursor cursor; pFtrSel.SelectionSet.Search(pFilter, false, out cursor); IFeatureCursor pFtrCsr = cursor as IFeatureCursor; IFeature pFtr = pFtrCsr.NextFeature(); while(pFtr != null) { ITransform3D trans3D = pFtr.Shape as ITransform3D; double dx = 0; double dy = 0; double dz = Convert.ToDouble(textBox1.Text); trans3D.Move3D(dx, dy,dz); pFtr.Store(); pFtr = pFtrCsr.NextFeature(); } pDoc.Scene.SceneGraph.Invalidate (pFtrLyr, true, true ); pDoc.Scene.SceneGraph.RefreshViewers(); } private IFeatureLayer GetCurrentFeatyreLayer() { var pLayer = ((ISxDocument)m_application.Document).SelectedLayer; return pLayer as IFeatureLayer; }
IZAware zAware = TestPoint as IZAware; zAware.ZAware = true;
int hitPartIndex = 0; hitPartIndex = gcPolyline.GeometryCount; hitPartIndex--; IGeometry geometry = gcPolyline.get_Geometry(hitPartIndex); var pointCollection = (IPointCollection4)geometry; int indextransformPoint = 1; indextransformPoint = pointCollection.PointCount; MessageBox.Show("indexTransformPoint = " + indextransformPoint.ToString() + "\nhitPartIndex = " + hitPartIndex.ToString()); indextransformPoint--; Double zOffset = Convert.ToDouble( textBox3.Text); MessageBox.Show("zOffset = " + textBox3.Text); if (zOffset == 0 ) return gcPolyline as IPolyline; IPoint TestPoint; TestPoint = pointCollection.get_Point(indextransformPoint); TestPoint.X = pointCollection.get_Point(indextransformPoint).X; TestPoint.Y = pointCollection.get_Point(indextransformPoint).Y; TestPoint.Z = pointCollection.get_Point(indextransformPoint).Z + zOffset; var transform3D = (ITransform3D)TestPoint; transform3D.Move3D(0, 0, zOffset); var newTestPoint = (IPoint)transform3D; IZAware zAware = newTestPoint as IZAware; zAware.ZAware = true; pointCollection.UpdatePoint(indextransformPoint, newTestPoint); MessageBox.Show(pointCollection.get_Point(indextransformPoint).Z.ToString()); m_application.RefreshWindow();
IPoint[] array = new IPoint[1]; array[0] = newTestPoint; IGeometryBridge testBridge = new GeometryEnvironmentClass(); //MessageBox.Show("until testBridge"); try { testBridge.ReplacePoints(pointCollection, 0, 1, array); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } //MessageBox.Show("after testBridge");
IPolyline pl = null; IFeature feature; pl = (IPolyline)feature.Shape; feature.Shape = ModifyVertexOfAPolyline((IGeometryCollection)pl);
private IPolyline ModifyFirstVertexOfAPolyline(IGeometryCollection gcPolyline) { int hitPartIndex = 0; hitPartIndex = gcPolyline.GeometryCount; hitPartIndex--; IGeometry geometry = gcPolyline.get_Geometry(hitPartIndex); var pointCollection = (IPointCollection4)geometry; int indextransformPoint = 1; indextransformPoint = pointCollection.PointCount; MessageBox.Show("indexTransformPoint = " + indextransformPoint.ToString() + "\nhitPartIndex = " + hitPartIndex.ToString()); indextransformPoint--; Double zOffset = Convert.ToDouble( textBox3.Text); if (zOffset == 0 ) return gcPolyline as IPolyline; IPoint TestPoint; TestPoint = pointCollection.get_Point(indextransformPoint); IZAware zAware = TestPoint as IZAware; zAware.ZAware = true; TestPoint.X = pointCollection.get_Point(indextransformPoint).X; TestPoint.Y = pointCollection.get_Point(indextransformPoint).Y; TestPoint.Z = pointCollection.get_Point(indextransformPoint).Z + zOffset; var transform3D = (ITransform3D)TestPoint; transform3D.Move3D(0, 0, zOffset); TestPoint = (IPoint)transform3D; var newTestPoint = (IPoint)transform3D; pointCollection.UpdatePoint(indextransformPoint, TestPoint); MessageBox.Show(pointCollection.get_Point(indextransformPoint).Z.ToString()); m_application.RefreshWindow(); return pointCollection as IPolyline; }
IPolyline pl = null; IFeature feature; pl = (IPolyline)feature.Shape; feature.Shape = ModifyVertexOfAPolyline((IGeometryCollection)pl); feature.Store();
IApplication m_application; public frmSetHeight() { InitializeComponent(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void btnOK_Click(object sender, EventArgs e) { m_application = AddHeight.ArcScene.Application; ISxDocument pDoc = ArcScene.Document; IFeatureLayer pFtrLyr = GetCurrentFeatyreLayer(); IFeatureSelection pFtrSel = pFtrLyr as IFeatureSelection; IQueryFilter pFilter = new QueryFilterClass(); pFilter.WhereClause = ""; ICursor cursor; pFtrSel.SelectionSet.Search(pFilter, false, out cursor); IFeatureCursor pFtrCsr = cursor as IFeatureCursor; IFeature pFtr = pFtrCsr.NextFeature(); while(pFtr != null) { ITransform3D trans3D = pFtr.Shape as ITransform3D; double dx = 0; double dy = 0; double dz = Convert.ToDouble(textBox1.Text); trans3D.Move3D(dx, dy,dz); pFtr.Store(); pFtr = pFtrCsr.NextFeature(); } pDoc.Scene.SceneGraph.Invalidate (pFtrLyr, true, true ); pDoc.Scene.SceneGraph.RefreshViewers(); } private IFeatureLayer GetCurrentFeatyreLayer() { var pLayer = ((ISxDocument)m_application.Document).SelectedLayer; return pLayer as IFeatureLayer; }