#1 Thu 21 August 2008 15:12
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Problème création classe annotations Arcgis9.2
Bonjour à tous,
J'essaie de créer une classe d'annotations en vba mais après avoir récupéré un script à l'adresse suivante
http://edndoc.esri.com/arcobjects/8.3/? … tation.htm,j'ai un message d'erreur quand je l'execute "Le licence de cette application ne permet pas de créer ni de modifier la structure de ce type de données" alors que manuellement j'ai pas de souci.
Donc voilà je ne sais pas trop quoi faire.
Hors ligne
#2 Thu 21 August 2008 17:06
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: Problème création classe annotations Arcgis9.2
ton lien ne marche pas
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#3 Thu 21 August 2008 17:17
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Re: Problème création classe annotations Arcgis9.2
Hors ligne
#4 Thu 21 August 2008 17:26
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: Problème création classe annotations Arcgis9.2
tu as quelle licence d'arcgis ?
parce que le bout de code que tu as copié (création d'annotations liées aux entités au sein d'une géodatabase) ne fonctionne qu'avec une licence Arceditor ou Arcinfo
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#5 Thu 21 August 2008 17:37
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Re: Problème création classe annotations Arcgis9.2
ok merci, je comprends, je n'ai pas ces licences.Tu aurais un code me permettant de créer une classe d'annotations?
Hors ligne
#6 Thu 21 August 2008 18:01
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: Problème création classe annotations Arcgis9.2
Voici un code qui peut te mettre sur la piste
IFeatureWorkspaceAnno Example
The following example show how to use the CreateAnnotationClass on IFeatureWorkspaceAnno to create a new feature-linked annotation class. In this example, the annotation class is feature-linked to the "sew_str" feature class and is created in the same feature dataset as the feature class it is linked to.
The label expression is a simple expression of the values in the field called DESCRIPTION in the sew_str feature class. A text symbol for the feature-linked annotation is red with a font of "Courier New".
Code:
Dim myTxtSym As IFormattedTextSymbol Private Sub NewAnnoClass() ' get a reference to the linked feature class Dim pWS As IWorkspace Dim pWSF As IWorkspaceFactory Set pWSF = New AccessWorkspaceFactory Set pWS = pWSF.OpenFromFile("D:\data\acsa_new.mdb", 0) Dim PFWSAnno As IFeatureWorkspaceAnno Set PFWSAnno = pWS Dim pFWS As IFeatureWorkspace Set pFWS = pWS Dim pFDataset As IFeatureDataset Set pFDataset = pFWS.OpenFeatureDataset("Sewer") Dim psrcFClass As IFeatureClass Set psrcFClass = pFWS.OpenFeatureClass("sew_str") ' set up reference scale Dim pGLS As IGraphicsLayerScale Set pGLS = New GraphicsLayerScale Dim pGeoDS As IGeoDataset Set pGeoDS = pFDataset pGLS.Units = esriFeet pGLS.ReferenceScale = 2000 ' set up symbol collection Dim pSymbolColl As ISymbolCollection Set pSymbolColl = New SymbolCollection MakeText Set pSymbolColl.Symbol(0) = myTxtSym ' set up the annotation labeling properties including the expression Dim pAnnoProps As IAnnotateLayerProperties Set pAnnoProps = New LabelEngineLayerProperties
suite du code après ...
je pense que c'est la valeur suivante qu'il faut mettre à False
pAnnoProps.FeatureLinked = True
et que tu fasse 2-3 modifs dans le code
Code:
pAnnoProps.FeatureLinked = False pAnnoProps.AddUnplacedToGraphicsContainer = False pAnnoProps.CreateUnplacedElements = True pAnnoProps.DisplayAnnotation = True pAnnoProps.UseOutput = True Dim aAnnoVBScriptEngine As IAnnotationExpressionEngine Set aAnnoVBScriptEngine = New AnnotationVBScriptEngine Dim pLELayerProps As ILabelEngineLayerProperties Set pLELayerProps = pAnnoProps Set pLELayerProps.ExpressionParser = aAnnoVBScriptEngine pLELayerProps.Expression = "[DESCRIPTION]" pLELayerProps.IsExpressionSimple = True pLELayerProps.Offset = 0 pLELayerProps.SymbolID = 0 Set pLELayerProps.Symbol = myTxtSym Dim pATP As IAnnotateLayerTransformationProperties Set pATP = pAnnoProps pATP.ReferenceScale = pGLS.ReferenceScale pATP.Units = esriFeet pATP.ScaleRatio = 1 Dim pAnnoPropsColl As IAnnotateLayerPropertiesCollection Set pAnnoPropsColl = New AnnotateLayerPropertiesCollection pAnnoPropsColl.Add pAnnoProps ' use the AnnotationFeatureClassDescription co-class to get the list of required fields and the default name of the shape field Dim pOCDesc As IObjectClassDescription Set pOCDesc = New AnnotationFeatureClassDescription Dim pFDesc As IFeatureClassDescription Set pFDesc = pOCDesc ' create the new class Dim pNewClass As IFeatureClass Set pNewClass = PFWSAnno.CreateAnnotationClass("AnnoTest", pOCDesc.RequiredFields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pFDesc.ShapeFieldName, "", pFDataset, psrcFClass, pAnnoPropsColl, pGLS, pSymbolColl, True) MsgBox "done" End Sub Public Sub MakeText( ' helper function to create the text symbol Set myTxtSym = New TextSymbol '** Set the font for myTxtSym Dim myFont As IFontDisp Set myFont = New StdFont myFont.Name = "Courier New" myFont.Size = 9 myTxtSym.Font = myFont '** Set the Color for myTxtSym to be Dark Red Dim myColor As IRgbColor Set myColor = New RgbColor myColor.Red = 150 myColor.Green = 0 myColor.Blue = 0 myTxtSym.Color = myColor '** Set other properties for myTxtSym myTxtSym.Angle = 0 myTxtSym.RightToLeft = False myTxtSym.VerticalAlignment = esriTVABaseline myTxtSym.HorizontalAlignment = esriTHAFull myTxtSym.CharacterSpacing = 200 myTxtSym.Case = esriTCNormal End Sub
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#7 Fri 22 August 2008 08:53
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Re: Problème création classe annotations Arcgis9.2
merci je vais essayer
Hors ligne
#8 Fri 22 August 2008 11:39
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Re: Problème création classe annotations Arcgis9.2
Je viens d'essayer et j'ai toujours pas les droits.
Hors ligne
#9 Fri 22 August 2008 13:42
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: Problème création classe annotations Arcgis9.2
je viens de trouver un autre lien pour la version 9.2
http://edndoc.esri.com//arcobjects/9.2/ … 85cbea.htm
il suppose que tu es sous arcmap et que la première couche soit une featurelayer stockée dans une geodatabase
c'est une conversion d'étiquettes en annotations
ce n'est pas forcément ce que tu cherches mais ça peut te donner des idées.
Dernière modification par Tnarbiv (Fri 22 August 2008 13:43)
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#10 Fri 22 August 2008 14:03
- kael
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 13
Re: Problème création classe annotations Arcgis9.2
c'est parfait merci!!
Hors ligne