2 votos

Cómo utilizar ITransform2D en características de dimensión (arcobjects)

Estoy tratando de mover una característica de dimensión dentro de una geodatabase personal utilizando ArcObjects VBA. He podido mover otros tipos de características utilizando un código similar al que se muestra a continuación. Sin embargo, no funciona para las características de dimensión. ¿Puede alguien ayudarme?

Sub AdjustDimensionFeature()
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

Dim pmap As IMap
Set pmap = pMxDoc.FocusMap

Dim pFtrLyr As IFeatureLayer
Set pFtrLyr = pmap.Layer(0)

Dim pFC As IFeatureClass
Set pFC = pFtrLyr.FeatureClass

Dim pFtr As IFeature
Set pFtr = pFC.GetFeature(8362)

Dim pTransform2D As ITransform2D
Dim pPolygon As IPolygon
Set pPolygon = pFtr.ShapeCopy

Set pTransform2D = pPolygon

pTransform2D.Move 20, 20

Set pFtr.Shape = pPolygon

pFtr.Store

End Sub

2voto

kjo Puntos 197

Aquí está la solución que he encontrado

Dim pDimFtr as IDimensionFeature
set pDimFtr = pFtr
Dim pDimShp As IDimensionShape
Set pDimShp = pDimFtr.DimensionShape

Dim pPtsColl As IPointCollection
Set pPtsColl = New Multipoint
pPtsColl.AddPoint pDimShp.BeginDimensionPoint
pPtsColl.AddPoint pDimShp.DimensionLinePoint
pPtsColl.AddPoint pDimShp.EndDimensionPoint
'pPtsColl.AddPoint pDimShp.TextPoint

Dim pTransform2D As ITransform2D
Dim pPolygon As IPolygon
Set pPolygon = pFtr.ShapeCopy

Set pTransform2D = pPtsColl

pTransform2D.Move 20, 20

Set pDimShp.BeginDimensionPoint = pPtsColl.Point(0)
Set pDimShp.DimensionLinePoint = pPtsColl.Point(1)
Set pDimShp.EndDimensionPoint = pPtsColl.Point(2)
'Set pDimShp.TextPoint = pPtsColl.Point(3)

pDimFtr.DimensionShape = pDimShp

pFtr.Store

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X