(gile) Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Salut, J'aurais besoin de savoir à partir de quelle version la fonction dotNET DrawLineTypePattern existe. Je sais qu'elle n'est pas présente dans le SDK .NET de 2007 mais qu'elle est dans celui de 2010 et je n'ai à disposition que ces deux versions pour tester. Il faudrait donc charger (NETLOAD) LinetypeDisplay.dll dans AutoCAD 2008 et/ou 2009 et lancer la commande TEST pour voir si dans la boite de dialogue la colonne "Présentation" est remplie ou non. Avec 2007 http://img28.imageshack.us/img28/8426/linetype17.png Avec 2010 http://img36.imageshack.us/img36/7373/linetype18.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 Je donne le code pour ceux que ça intéresse (la propriété OwnerDraw du contrôle ListView doit être true) using System; using System.Drawing; using System.Windows.Forms; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Internal; using Autodesk.AutoCAD.Runtime; namespace LinetypesDisplay { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) { e.DrawDefault = true; } private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) { Database db = HostApplicationServices.WorkingDatabase; if (e.ColumnIndex == 1) { Rectangle rect = e.Bounds; rect.Location = new Point(0, 0); using (Transaction tr = db.TransactionManager.StartTransaction()) { LinetypeTable ltt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForRead); string ltName = e.Item.Text; IntPtr iPtr = Utils.DrawLineTypePattern(ltt[ltName], rect.Left, rect.Top, rect.Right, rect.Bottom); System.Drawing.Image img = System.Drawing.Image.FromHbitmap(iPtr); e.Graphics.DrawImage(img, e.Bounds.Location); } } else e.DrawDefault = true; } [CommandMethod("test")] public void test() { this.listView1.Items.Clear(); Database db = HostApplicationServices.WorkingDatabase; using (Transaction tr = db.TransactionManager.StartTransaction()) { LinetypeTable ltt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForRead); foreach (ObjectId id in ltt) { LinetypeTableRecord lttr = (LinetypeTableRecord)tr.GetObject(id, OpenMode.ForRead); string ltName = lttr.Name; ListViewItem lvi = new ListViewItem( new string[] { lttr.Name, string.Empty, lttr.AsciiDescription }); this.listView1.Items.Add(lvi); } } this.ShowDialog(); } } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Bonsoir à toutes et tous, Salut Gilles, Dans ton premier message, tu as oublié le lien,... J'ai alors copier le code du second message et enregistré sous"LinetypeDisplay.dll" Voilà ce que me retourne AutoCAD (V2008 pleine) Commande: netloadImpossible de charger l'assemblage. Détails de l'erreur: System.BadImageFormatException: Impossible de charger le fichier ou l'assembly 'file:///C:\Users\Lilian\Desktop\LinetypeDisplay.dll' ou une de ses dépendances. Le module était censé contenir un manifeste de l'assembly.Nom du fichier : 'file:///C:\Users\Lilian\Desktop\LinetypeDisplay.dll' à System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) à System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) à System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) à System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark) à System.Reflection.Assembly.LoadFrom(String assemblyFile) à Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName) à loadmgd()AVT : le journal de liaison d'assembly est désactivé.Pour activer le journal des échecs de liaison d'assembly, attribuez la valeur 1 à la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD).Remarque : une certaine perte de performance est associée à l'enregistrement dans le journal des échecs de liaison d'assembly.Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog].Commande: Spécifiez le coin opposé: teqtSpécification de fenêtre non valable.Spécifiez le coin opposé: Spécifiez le coin opposé: *Annuler* Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, J'ai alors pensé à une erreur de nom de fichiers puisque dans le code "type" à un "s", soit "Linetype[surligneur] s[/surligneur]Display" Toujours même message,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 Salut Lilian, Merci pour ton empressement et ta disponibilité.J'ai mis le lien dans mon premier message. Une dll dotNET ne se crée pas en copiant le code source dans un fichier texte. Il faut compiler le code avec un compilateur comme celui de Visual Studio par exemple. C'est plus complexe que du LISP... Je donne le code pour ceux qui pratiquent la programmation .NET. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, Je trouvais ça louche aussi,... :cool: Pour le moment le lien pointe vers cette page Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 C'est réparé. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, Alors sous V2008 => http://free0.hiboox.com/images/2010/0882e1bd3dec756b1f47fb9e0b7c5e3c.jpg Ps: Merci pour ton empressement et ta disponibilité. Et c'est toi qui écrit ça ? ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, Et sous un AutoCAD 2011 base => Idem 2008 !!! http://free0.hiboox.com/images/2010/0882e1bd3dec756b1f47fb9e0b7c5e3c.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 Oupss!... La routine traite tous les types de ligne sauf ByBlock, ByLayer et Continuous. Ça expliquerait que tout soit vide... À refaire donc, sur un fichier qui contient quelques types de lignes chargés ou avec la nouvelle DLL (j'ai changé le lien). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, Sous 2008 => http://free0.hiboox.com/images/2010/babd2421e61c2664ac01c3f6f166d52c.jpg Le même fichier Sous 2011 => http://free0.hiboox.com/images/2010/aaab6897dc3da00a1fec280826024776.jpg La routine traite tous les types de ligne sauf ByBlock, ByLayer et Continuous. Cherchez l'erreur !!! :D Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 Merci, j'ai une réponse pour 2008, reste à savoir pour 2009... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 hello gile tjrs impossible de telecharger un fichier *.zip venant de chez toi ca va devenir embetant je vais tester sur AA2011 avec le fichier texte comme l'a fait lilian donc ca ne vas pas et cane marche pas pas de compilateur sous la main a+ phil [Edité le 22/5/2010 par PHILPHIL] FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lili2006 Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 Re, T'as vu c'est bizarre les infos ne se présentent pas de la même façon suivant les versions ! Pour PHILPHIL Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
PHILPHIL Posté(e) le 22 mai 2010 Posté(e) le 22 mai 2010 hello merci lilianj'ai pu télécharger le *.DLL j'ai la meme chose que l'image de lilian sous A2011 avec AA2011 a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 T'as vu c'est bizarre les infos ne se présentent pas de la même façon suivant les versions ! C'est justement ce qui m'intéresse.Les colonnes "Type de ligne " et "Description" affichent ce qu'on peut trouver dans le fichier acadiso.lin* (propriétés Name et AsciiDescription en .NET).Ces données sont identiques quelle que soit la version. La colonne "Présentation" affiche l'image crée par la méthode .NET DrawLineTypePattern qui n'est pas fournie avec les version 2007 et 2008 (c'est pour ça que les colonnes sont vides) mais qui l'est avec 2010 et 2011.Cette méthode permet de créer une image qui montre l'apparence du type de ligne à partir de sa définition.Les images dans mon premier message ont été faites sur un fichier provenant d'ArchiCAD ou de VectorWorks, les descriptions ne sont pas reconnues, mais l'apparence du type de ligne est peut être recréé. Je cherche à savoir à partir de quelle version cette méthode est utilisable (2009 ou 2010) pour écrire mon programme en conséquence. * exemple extrait de acadiso.lin pour EAU_CHAUDE :*EAU_CHAUDE,Eau chaude ---- HW ---- HW ---- HW ----A,12.7,-5.08,["HW",STANDARD,S=2.54,R=0.0,X=-2.54,Y=-1.27],-5.08 Le nom du type de ligne apparait sue la première ligne après l'astérisque et il est séparé de la description par une virgule.sur la seconde ligne, c'est la définition du type de ligne. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 22 mai 2010 Auteur Posté(e) le 22 mai 2010 Merci PHILPHIL. Ce qui m'intéresserait vraiment maintenant, c'est un test sur 2009 (même si je soupçonne que ça fonctionne comme sur 2010/2011). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 23 mai 2010 Posté(e) le 23 mai 2010 Salut (gile), Pour 2008, comme lili2006, la colonne de présentation et vide. Autre remarque, si je relance TEST, les informations dans la boite sont affichés de manière répétitive et ce autant de fois que je relance la commande. Pour 2009, je pourrais tester dans 2 ou 3 jours... si tu n'a pas de retour d'ici là! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 23 mai 2010 Auteur Posté(e) le 23 mai 2010 Merci, Autre remarque, si je relance TEST, les informations dans la boite sont affichés de manière répétitive et ce autant de fois que je relance la commande. Oui, ce code n'a été écrit vite fait que test, il manque un : this.ListView1.Items.Clear();pour vider le contrôle avant de le remplir à nouveau. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rom1_am Posté(e) le 24 mai 2010 Posté(e) le 24 mai 2010 Bonjour, J'ai essayé sous AutoCAD 2009 et la colonne Présentation est vide. a+ _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
(gile) Posté(e) le 24 mai 2010 Auteur Posté(e) le 24 mai 2010 Merci rom1_am, Je suis un peu étonné que ça ne fonctionne pas avec 2009, parce que la méthode DrawLinetypePattern() est bien présente l'assembly acmgdinternal.dll de 2009, je dois faire quelque chose de travers... http://img401.imageshack.us/img401/886/dltp.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rom1_am Posté(e) le 24 mai 2010 Posté(e) le 24 mai 2010 Rebonjour, Je peux pas t'aider car ça dépasse mes compétences, mais j'ai bien la dll acmgdinternal (version 17.2.56.0) dans le répertoire d'AutoCAD2009 et lorsque j'ajoute cette dll en référence dans un projet Visual studio, j'ai bien accès à cette fonction Drawlinetypepattern. En espérant que cela puisse te donner des pistes... _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
Gilles1 Posté(e) le 24 mai 2010 Posté(e) le 24 mai 2010 Bonjour à toutes et à tous. autocad 2009 [http://img189.imageshack.us/img189/7694/nouvelleimagejj.png] [/img]
Gilles1 Posté(e) le 24 mai 2010 Posté(e) le 24 mai 2010 Re, Il semble que cela n'ai pas fonctionné dans précédent post. donc sous autocad 2009 cela ne donne rien. http://www.hiboox.fr/go/images/informatique/nouvelle-image,5d94a0bbe0c0c477f405b28c3a1be685.jpg.html
(gile) Posté(e) le 24 mai 2010 Auteur Posté(e) le 24 mai 2010 Merci. Bon, il semblerait que la méthode soit fournie mais ne fonctionne pas.Le sujet est clos Merci encore à tous... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant