#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 LabelEngineLayerPropertiessuite 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 SubAyez 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


