Aller au contenu

Accès aux Objets des Dictionnaires


PhilOctet

Messages recommandés

Bonjour,

 

J'ai réussi avec les blocs :

 

Public Sub RenamePathBlock(ByRef dtb As AcBdd.Database, ByRef acTrans As AcBdd.Transaction, ByVal NomBlock As String)

 

Dim acBlcTbl As AcBdd.BlockTable = acTrans.GetObject(dtb.BlockTableId, AcBdd.OpenMode.ForRead)

Dim acBlcTblRec As AcBdd.BlockTableRecord = acTrans.GetObject(acBlcTbl(NomBlock), AcBdd.OpenMode.ForWrite)

 

Par contre, je n'arrive pas à accéder aux propriétés d'une image ou d'un calque sous jacent en connaissant son nom de référence afin de la modifier.

 

Je pense que la routine doit commencer par :

 

Public Sub RenamePathImage(ByRef dtb As AcBdd.Database, ByRef acTrans As AcBdd.Transaction, ByVal NomImage As String)

 

Dim DBDIct As AcBdd.DBDictionary = acTrans.GetObject(dtb.NamedObjectsDictionaryId, AcBdd.OpenMode.ForRead)

Dim DBImgDIct As AcBdd.DBDictionary = acTrans.GetObject(DBDIct.GetAt("ACAD_IMAGE_DICT"), AcBdd.OpenMode.ForRead)

 

merci de votre aide.

 

 

 

 

[Edité le 14/2/2010 par PhilOctet]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

En DotNet les dictionnaires (Dictionary) sont des conteneurs de paires clé/valeur (Key/Value) où les clés sont uniques.

Dans un DBDictionary, le clé est de type string et la valeur de type ObjectId.

Pour accéder à une entrée du NamedObjectsDictionnary, on utilise la méthode GetAt(), et bien c'est la même chose pour les entrées de tous les DBDictionary.

 

DBDictionary NOD = (DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead);
if (!NOD.Contains("ACAD_IMAGE_DICT"))
   return;
DBDictionary imgDict = (DBDictionary)tr.GetObject(NOD.GetAt("ACAD_IMAGE_DICT"), OpenMode.ForRead);
if (!imgDict.Contains("NomImage"))
   return;
RasterImageDef img = (RasterImageDef)tr.GetObject(imgDict.GetAt("NomImage"), OpenMode.ForWrite, false);

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Merci. Au risque de te surprendre, c'est bien ce que je faisais.

 

Mais cela m'a permis d'aller chercher ailleurs d'où venait mon problème.

 

En réalité, le nomimage que je passais en paramètre était une extraction du nom de fichier et non pas le nom de l'image dans le dictionnaire.

 

encore merci

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité