jxfzcgh
外卖仔
外卖仔
  • 注册日期2003-07-26
  • 发帖数69
  • QQ
  • 铜币452枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1422回复:0

写入annoText的问题

楼主#
更多 发布于:2008-09-17 16:05
<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>
喜欢0 评分0
游客

返回顶部