阅读:1535回复:0
写入annoText的问题
<P>我写了一段代码,是要将原来存储在Point要素类的文字写入到新建的 AnnoTest 图层中去(annotationfeatureclass)</P>
<P>但是就是写不进去,大家帮我看看什么地方有问题?</P> <P>另外,写入注记之前是否需要象编辑普通featureclass一样 starteditoperation stopeditoperateion?</P> <P>Private Sub Command1_Click()<BR> Dim pFcls As esriGeoDatabase.IFeatureClass<BR> Set pFcls = GetSdeFeatureClass("LayerPoint")<BR> <BR> Dim iFieldSize As Long<BR> Dim iFieldText As Long<BR> Dim iFieldColor As Long<BR> Dim iFieldRotate As Long<BR> <BR> iFieldSize = pFcls.FindField("AnnoSize")<BR> iFieldColor = pFcls.FindField("AnnoColor")<BR> iFieldText = pFcls.FindField("AnnoText")<BR> iFieldRotate = pFcls.FindField("AnnoRotate")<BR> <BR> Dim pFeatureCursor As esriGeoDatabase.IFeatureCursor<BR> Set pFeatureCursor = pFcls.Search(Nothing, True)<BR> <BR> Dim pFeature As esriGeoDatabase.IFeature<BR> Set pFeature = pFeatureCursor.NextFeature<BR> <BR> Dim pFclsAnno As esriGeoDatabase.IFeatureClass<BR> Set pFclsAnno = GetSdeFeatureClass("AnnoTest")<BR> <BR> Dim pFDOGLayer As IFDOGraphicsLayer<BR> Dim pFDOGLFactory As IFDOGraphicsLayerFactory<BR> Set pFDOGLFactory = New FDOGraphicsLayerFactory<BR> Set pFDOGLayer = pFDOGLFactory.OpenGraphicsLayer(pFclsAnno.FeatureDataset.Workspace, pFclsAnno.FeatureDataset, "AnnoTest")<BR> pFDOGLayer.BeginAddElements<BR> <BR> Dim pElementColl As IElementCollection<BR> Set pElementColl = New ElementCollection<BR> <BR> Dim i As Long<BR> i = 0<BR> <BR> Do While Not pFeature Is Nothing<BR> Dim iRotate As Double<BR> Dim iSize As Double<BR> Dim iColor As Long<BR> Dim strText As String<BR> Dim pt As esriGeometry.IPoint<BR> <BR> strText = pFeature.value(iFieldText)<BR> iRotate = pFeature.value(iFieldRotate)<BR> iSize = pFeature.value(iFieldSize)<BR> iColor = pFeature.value(iFieldColor)<BR> <BR> Set pt = pFeature.Shape<BR> <BR> Dim pTextElement As ITextElement<BR> Set pTextElement = MakeTextElement(strText, pt, iRotate, iColor, iSize)<BR> <BR> pElementColl.Add pTextElement</P> <P> i = i + 1<BR> <BR> If i Mod 100 = 0 Then<BR> pFDOGLayer.DoAddElements pElementColl, 0<BR> pElementColl.Clear<BR> End If<BR> <BR> Set pFeature = pFeatureCursor.NextFeature<BR> Loop<BR> <BR> pFDOGLayer.EndAddElements <BR> MsgBox "!"<BR> <BR>End Sub</P> <P>'创建Text Element<BR>Private Function MakeTextElement(sText As String, InsertPt As esriGeometry.IPoint, dAngle As Double, Color As Long, Size As Double) As ITextElement<BR> Dim pTextElement As ITextElement<BR> Set pTextElement = New TextElement<BR> pTextElement.ScaleText = True<BR> pTextElement.Text = sText<BR> <BR> Dim pColor As iColor<BR> Set pColor = New RgbColor<BR> pColor.RGB = Color<BR> <BR> Dim pTextsymbol As ITextSymbol<BR> Set pTextsymbol = New TextSymbol<BR> <BR> pTextsymbol.Size = IIf(Size = 0#, 2, Size)<BR> pTextsymbol.Color = pColor<BR> pTextsymbol.VerticalAlignment = esriTVABaseline<BR> pTextsymbol.HorizontalAlignment = esriTHALeft<BR> pTextsymbol.Angle = dAngle<BR> <BR> pTextElement.Symbol = pTextsymbol<BR> <BR> Dim pElement As IElement<BR> Set pElement = pTextElement<BR> pElement.Geometry = InsertPt<BR> <BR> Set MakeTextElement = pTextElement<BR>End Function</P> <P>程序可以顺利执行完成,但就是不能写入任何实体</P> <P>我的环境:ArcSDE9.1 For SQL Server ArcEngine 9.1 Vb6</P> |
|