(gile) Posté(e) le 26 janvier 2010 Posté(e) le 26 janvier 2010 Salut, J'ai rassemblé dans cet assembly des fonctions LISP définies en dotNET que j'avais données ici ou là.On est encore loin de DOSlib (et je n'en suis pas capable) mais contrairement aux ARX il ne devrait pas y avoir de problème compatibilité suivant les format DWG (depuis 2007). Fonctions défines :Presse-papiergc-CopyToClipboardgc-TextFromClipboard Boites de dialoguegc-GetFileDlggc-GetFolderDlggc-InputBoxgc-MessageBox Calques dans les fenêtres de présentationgc-VpFreezegc-VpThawgc-VpThawAll Excelgc-XlReadgc-XlWrite [Edit : ajouté un argument 'defaut' à gc-getfolderdlg] [Edit : ajout de la fonction gc-Purge] [Edit : correction d'un bug dans gc-Purge] Téléchargez LispExtension.zip sur cette page extraire et installer LispExtensionSetup.msi. Un raccourci vers l'aide est créé sur le bureau. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 17 février 2010 Posté(e) le 17 février 2010 salut Gile, et merci pour le boulot,pourquoi gc-GetFolderDlg n'a pas d'argument "defolder" alors que gc-GetFileDlg en a un ?ou au moins, stocker le dernier répertoire dans une variable statique ...Sinon c'est vrais que ça comblerait un manque ...Gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
(gile) Posté(e) le 17 février 2010 Auteur Posté(e) le 17 février 2010 Salut, La classe FolderBrowserDialog a bien une propriété RootFolder qui définit le dossier racine à partir duquel la recherche démarre.J'ai volontairement écarté cette option car elle empêche de remonter dans l'arborescence au delà du dossier racine spécifié. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 18 février 2010 Posté(e) le 18 février 2010 Salut,Il existe également une propriété SelectedPath :co joint un exemple que je ne suis pas arrivé à faire marcher, mais qui se compile(la function lisp n'est pas reconnue par Autocad) Imports System.Windows.Forms Module module3 ' First create a FolderBrowserDialog object Dim FolderBrowserDialog1 As New FolderBrowserDialog _ Public Function SelectFolder(ByVal Msg As String, ByVal Folder As String, ByVal Create As Boolean) Dim DirectoryBrowser As System.Windows.Forms.FolderBrowserDialog Dim SelFolder As String DirectoryBrowser = New System.Windows.Forms.FolderBrowserDialog ' Desktop is the root folder in the dialog. DirectoryBrowser.RootFolder = Environment.SpecialFolder.Desktop 'DirectoryBrowser.Description = "Which directory do you want to use?" DirectoryBrowser.Description = Msg ' DirectoryBrowser.SelectedPath = Folder If (DirectoryBrowser.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then 'Console.WriteLine(DirectoryBrowser.SelectedPath) SelFolder = DirectoryBrowser.SelectedPath Else SelFolder = Folder End If Return SelFolder End Function End Module ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
(gile) Posté(e) le 18 février 2010 Auteur Posté(e) le 18 février 2010 Salut, La propriété SelectedPath sert à récupérer le répertoire sélectionné, pas à définir la racine de la recherche. Il me semble qu'il manque le type de retour dans la signature de ta fonction :Public Function SelectFolder(ByVal Msg As String, ByVal Folder As String, ByVal Create As Boolean) [surligneur]As String[/surligneur] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 18 février 2010 Posté(e) le 18 février 2010 Salut, La propriété SelectedPath sert à récupérer le répertoire sélectionné, pas à définir la racine de la recherche. Il me semble qu'il manque le type de retour dans la signature de ta fonction :Public Function SelectFolder(ByVal Msg As String, ByVal Folder As String, ByVal Create As Boolean) [surligneur]As String[/surligneur] pour le as string, je l'avais oublié, mais ça ne marche pas mieux.mais j'ai déjà eu des pb semblables de commandMethod ou lisp function pas reconnus, qui le sont miraculeusement après sans que je sache pourquoi ... par contre, d'après la littérature, SelectedPath peut être initialisée, mais il faut que le chemin initial soit compatible avec le RootFolder .pour celà, il est conseillé d'utiliser :Environment.SpecialFolder.MyComputer je dis ça, je ne suis pas arrivé à le tester puisque ma commande n'est pas reconnue ... ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
(gile) Posté(e) le 18 février 2010 Auteur Posté(e) le 18 février 2010 Effectivement, le dossier spécifié est présélectionné.Je vais modifier les fichiers en téléchargement. Pour ton problème, les références acdbmgd.dll et acmgd.dll sont elles bien en Copie locale = false ? PS : intéressante littérature que tu as trouvé là, c'est où, si c'est pas indiscret. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 18 février 2010 Posté(e) le 18 février 2010 Pour ton problème, les références acdbmgd.dll et acmgd.dll sont elles bien en Copie locale = false ? Tout est sur false.mais bon, je fait surtout des tests à l'aveugle, sans connaitre les bases théoriques, il faut que je me trouve un bouquin sérieux, pour arrêter de perdre du temps par tâtonnement. PS : intéressante littérature que tu as trouvé là, c'est où, si c'est pas indiscret. pas de la littérature, mais des discussions en français sur code source, develloppez,tiens une qui parle de ce pbhttp:// http://www.developpez.net/forums/d475455/dotnet/csharp/windows-forms/folderbrowserdialog-repertoire-initiale/ ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
(gile) Posté(e) le 18 février 2010 Auteur Posté(e) le 18 février 2010 J'avais mal regardé ton code.Avec l'attribut LispFunction la méthode (procédure ou fonction) doit avoir un et un seul paramètre de type RessultBuffer Un ResultBuffer est un conteneur de TypedValue qui sont un peu l'équivalent des paires pointées du LISP.Une TypedValue est constituée d'un 'typeCode et d'une valeur. le typeCode est un entier, mais il est souvent plus explicite d'user les enum LispDataType (dans ce cas) ou DxfCode (pour les xdata, les filtres de sélection etc...)On utilise aussi un ResultBuffer pour retourner ce sera traduit en liste LISP (un peu comme les array de variant un ResultBuffer permet de constituer une collection d'objets de types différents) C'est en anglais, mais les exemples sont assez simple à comprendre (et en VB et C#) AutoCAD .NET developer's help > Basics of the AutoCAD .NET API > Define Commands and AutoLISP Functions > AutoLISP Function Definition Le code de gc-Getfolderdlg (la majeure partie du code teste la validité des arguments (les TypedValues) et comme les messages d'erreur sont récurrents, j'ai fait une classe spéciale pour toutes les fonction LISP)using System.Windows.Forms; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using LispExtensionTools; namespace LispDialog { public class Folder { /// <summary> /// Fonction LISP gc-getfolderdlg /// Ouvre une boite de dialogue permettant de choisir un répertoire /// (gc-getfolderdlg message defaut [nouveau]) /// Exemple : /// (getfolder "Choisir ou créer un dossier" (getvar 'dwgprefix) T) /// </summary> [LispFunction("gc-getfolderdlg")] public static string GetFolder(ResultBuffer buff) { try { if (buff == null) { LispErrorMsg.TooFew(); return null; } TypedValue[] args = buff.AsArray(); if (args.Length < 2) { LispErrorMsg.TooFew(); return null; } if (args.Length > 3) { LispErrorMsg.TooMuch(); return null; } int tCode = args[0].TypeCode; if (tCode != (int)LispDataType.Text) { LispErrorMsg.BadType("stringp", args[0]); return null; } tCode = args[1].TypeCode; if (tCode != (int)LispDataType.Text) { LispErrorMsg.BadType("stringp", args[1]); return null; } bool newFolder = ((args.Length == 3) && (args[2].TypeCode != (int)LispDataType.Nil)) ? true : false; using (FolderBrowserDialog openDialog = new FolderBrowserDialog()) { openDialog.Description = (string)args[0].Value; openDialog.ShowNewFolderButton = newFolder; openDialog.RootFolder = System.Environment.SpecialFolder.Desktop; openDialog.SelectedPath = (string)args[1].Value; if (openDialog.ShowDialog() == DialogResult.OK) { return openDialog.SelectedPath; } else return null; } } catch (System.Exception ex) { LispErrorMsg.Message(ex.Message); return null; } } } } Les messages d'erreurusing Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; namespace LispExtensionTools { public static class LispErrorMsg { static Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; internal static void TooFew() { ed.WriteMessage("\nErreur: nombre d'arguments insuffisants\n"); } internal static void TooMuch() { ed.WriteMessage("\nErreur: nombre d'arguments trop important\n"); } internal static void BadType(string T, TypedValue tV) { string msg = tV.TypeCode == (int)LispDataType.Nil ? "nil" : tV.Value.ToString(); ed.WriteMessage("\nErreur: type d'argument incorrect: {0} {1}\n",T , msg); } internal static void Message(string msg) { ed.WriteMessage("\nErreur: {0}\n", msg); } } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 18 février 2010 Auteur Posté(e) le 18 février 2010 Je met aussi gc-getfiledlg qui retourne un ResultBuffer using System.Windows.Forms; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using LispExtensionTools; namespace LispDialog { public class Files { /// <summary> /// Fonction LISP gc-getfiledlg /// Ouvre une boite de dialogue permettant de choisir un ou plusieurs fichier /// (gc-getfiledlg titre repertoire filtre [multiple]) /// Exemple : /// (getfiles "Choix des fichiers" "C:\\" "Dessin (*.dwg)|*.dwg|Tous (*.*)|*.*" T) /// </summary> [LispFunction("gc-getfiledlg")] public static ResultBuffer GetFileDialog(ResultBuffer buff) { ResultBuffer result = new ResultBuffer(); try { if (buff == null) { LispErrorMsg.TooFew(); return null; } TypedValue[] args = buff.AsArray(); if (args.Length < 3) { LispErrorMsg.TooFew(); return null; } if (args.Length > 4) { LispErrorMsg.TooMuch(); return null; } for (int i = 0; i != 3; i++) { int tCode = args[i].TypeCode; if (tCode != (int)LispDataType.Text) { LispErrorMsg.BadType("stringp", args[i]); return null; } } string filter = (string)args[2].Value; bool mult = ((args.Length == 4) && (args[3].TypeCode != (int)LispDataType.Nil)) ? true : false; using (OpenFileDialog openDialog = new OpenFileDialog()) { openDialog.Title = (string)args[0].Value; openDialog.InitialDirectory = (string)args[1].Value; openDialog.Filter = (filter == "") ? "Tous (*.*)|*.*" : filter; openDialog.FilterIndex = 1; openDialog.Multiselect = mult; if (openDialog.ShowDialog() == DialogResult.OK) { if (mult) { string[] fileNames = openDialog.FileNames; foreach (string file in fileNames) { result.Add(new TypedValue((int)LispDataType.Text, file)); } } else { string file = openDialog.FileName; result.Add(new TypedValue((int)LispDataType.Text, file)); } return result; } else return null; } } catch (System.Exception ex) { LispErrorMsg.Message(ex.Message); return null; } } } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
GEGEMATIC Posté(e) le 19 février 2010 Posté(e) le 19 février 2010 J'avais mal regardé ton code.Avec l'attribut LispFunction la méthode (procédure ou fonction) doit avoir un et un seul paramètre de type RessultBuffer Un ResultBuffer est un conteneur de TypedValue qui sont un peu l'équivalent des paires pointées du LISP.Une TypedValue est constituée d'un 'typeCode et d'une valeur. le typeCode est un entier, mais il est souvent plus explicite d'user les enum LispDataType (dans ce cas) ou DxfCode (pour les xdata, les filtres de sélection etc...)On utilise aussi un ResultBuffer pour retourner ce sera traduit en liste LISP (un peu comme les array de variant un ResultBuffer permet de constituer une collection d'objets de types différents) C'est en anglais, mais les exemples sont assez simple à comprendre (et en VB et C#) AutoCAD .NET developer's help > Basics of the AutoCAD .NET API > Define Commands and AutoLISP Functions > AutoLISP Function Definition Merci des infos, je suis bien couillon, puisque ce resultbuffer était déjà utilisé dans le code des fonction d'échange Lisp/.net qu'on a vu la semaine dernière.Gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
(gile) Posté(e) le 29 mai 2010 Auteur Posté(e) le 29 mai 2010 Salut, Ajout de la fonction gc-Purge.Le fichier d'aide est mis à jour. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 mai 2010 Posté(e) le 29 mai 2010 Bonjour à toutes et tous, Salut Gilles Exemple sur une v2008 couplé avec covadis => [surligneur]Essai presse papier [/surligneur] Commande: (gc-copytoclipboard "Voyons") System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée [surligneur]Essais Boites de dialogue [/surligneur] Ouvre une boite de dialogue pour choisir un (ou plusieurs) fichier(s) Commande: (gc-getfiledlg "Choisir les fichiers" "C:\\Program Files" "" T)("C:\\Users\\Lilian\\Desktop\\269 Insertion XREF.BMP") Ouvre une boite de dialogue pour choisir (ou de créer) un répertoire -En sélectionnant un dossier existant : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Users\\Lilian\\Desktop\\test" - Par création d'un nouveau dossier : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Users\\Lilian\\Documents\\test2" Ouvre une boite de dialogue pour récupérer une entrée utilisateur Commande: (gc-inputbox "Quizz" "Question 1\Alors, ça fonctionne ?" "Yes !")"Yes !" Ouvre une boite de dialogue qui délivre un message et retourne une réponse Commande: (gc-messagebox "Dernier test pour les BD" "Est-ce que celle-ci aussi fonctionne ?" 0 16)System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée Pas de pb particulier,...SAUF pour "gc-messagebox " à priori,... [surligneur]Essai Calques dans les fenêtres de présentation [/surligneur] Dégèle les calques dans la fenêtre de présentation Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée fonctionne jusqu'à la sélection de l'objet,... [surligneur]Essai Excel [/surligneur] Lit une feuille Excel Commande: (gc-xlread (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 0)(_> "Feuil1")System.FormatException: Le format de la chaîne d'entrée est incorrect. à System.Text.StringBuilder.FormatError() à System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) à System.String.Format(IFormatProvider provider, String format, Object[] args) à Autodesk.AutoCAD.EditorInput.Editor.WriteMessage(String message, Object[] parameter) à LispExtensionTools.LispErrorMsg.Message(String msg) à LispExcel.ExcelFunctions.ExcelRead(ResultBuffer resbuf) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée fonctionne jusqu'à la sélection du fichier,... [surligneur]Essai Purge [/surligneur] Purge le dessin Commande: (gc-purge 2097151)System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée Marche pas ! Je vais faire les mêmes tests depuis une v2011 sans applicatif et reviens faire le point. PS: Existe t-il une méthode, comme F1 dans AutoCAD par exemple pour lancer le fichier d'aide "Extension Lisp" par hasard ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 29 mai 2010 Posté(e) le 29 mai 2010 Re, Sur une v2011 sans applicatif => [surligneur]Essai presse papier [/surligneur] Commande: (gc-copytoclipboard "Voyons") "Voyons"Commande: AIDE M'ouvre tout de suite après l'aide !! [surligneur]Essais Boites de dialogue [/surligneur] Ouvre une boite de dialogue pour choisir un (ou plusieurs) fichier(s) Commande: (gc-getfiledlg "Choisir les fichiers" "C:\\Program Files" "" T)("C:\\Users\\Lilian\\Desktop\\test\\Notes Stagiaires-.xls") Ouvre une boite de dialogue pour choisir (ou de créer) un répertoire -En sélectionnant un dossier existant : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Users\\Lilian\\Desktop\\test" - Par création d'un nouveau dossier : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Users\\Lilian\\Desktop\\test2" Ouvre une boite de dialogue pour récupérer une entrée utilisateur Commande: (gc-inputbox "Quizz" "Question 1\Alors, ça fonctionne ?" "Yes !")"Yes !" Ouvre une boite de dialogue qui délivre un message et retourne une réponse Commande: (gc-messagebox "Dernier test pour les BD" "Est-ce que celle-ci aussi fonctionne ?" 0 16) http://free0.hiboox.com/images/2110/77fd819a3d87b3685ed0d95bc6d407da.jpg Pas de pb particulier,..... [surligneur]Essai Calques dans les fenêtres de présentation [/surligneur] Dégèle les calques dans la fenêtre de présentation Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.FormatException: Le format de la chaîne d'entrée est incorrect. à System.Text.StringBuilder.FormatError() à System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) à System.String.Format(IFormatProvider provider, String format, Object[] args) à Autodesk.AutoCAD.EditorInput.Editor.WriteMessage(String message, Object[] parameter) à LispExtensionTools.LispErrorMsg.Message(String msg) à VpLayerLisp.VpLayer.vpFreezeOrThaw(ResultBuffer resbuf, Boolean frz) à VpLayerLisp.VpLayer.VpThaw(ResultBuffer resbuf) à Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction) à Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction) à Autodesk.AutoCAD.Runtime.CommandClass.Invoke(MethodInfo mi, Boolean bLispFunction) à Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.InvokeLisp(); erreur: Demande ADS erronée fonctionne jusqu'à la sélection de l'objet,... Ou alors, je m'y prend mal,.. (Création des calques en question et sélection d'une entité sur le calque "test 1") [surligneur]Essai Excel [/surligneur] Lit une feuille Excel Commande: (gc-xlread (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 0) "Feuil1")nil Alors que la "feuil1" existe en 3éme onglet mais est vide, une raison surement ?! Test avec le premier onglet "NOTES STAGIAIRES CN" Commande: (gc-xlread (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 0) "NOTES STAGIAIRES CN")(("" "Date:" "29-mai-10" "" "" "TABLEAU DE NOTES" "" "" "" "" "" "" "" "" "Matière:" "EPREUVE ECRITE N° 2" "" "" "" "" "" "" "" "" "" "") ("" "Classe:" "STAGIAIRES" "" "" "" "" "" "" "" "" "" "" "" "Semestre:" " Etc,etc, (Ce n'est qu'un extrait de la feuille qui est assez longue et il me semble avoir l'ensemble en ligne de commande,... [surligneur]Essai Purge [/surligneur] Purge le dessin Commande: (gc-purge 2097151)T J'ai regardé avant ce qu'il y avait à purger, c'est ok ! Je vais maintenant tester sur mon portable qui a une v2008 sans applicatif,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 mai 2010 Auteur Posté(e) le 29 mai 2010 Merci. Je ne comprends l'erreur (toujours la même) que tu as avec Covadis. L'autre erreur, est due à une faute de frappe de ma part dans le message d'erreur retourné quand l'utilisateur sélectionne une entité non valide. Le premier argument pour gc-vpthaw doit être le nom d'entité de la fenêtre de présentation, c'est donc la fenêtre qu'il faut sélectionner et pas une entité dans la fenêtre, ou encore faire :(setq vp (car (entsel)))puis (gc-vpthaw vp '("test1" "test2")) J'ai modifier la DLL en téléchargement. M'ouvre tout de suite après l'aide !! tu as du faire 2 fois entrée et donc relancer la dernière commande (AIDE). Existe t-il une méthode, comme F1 dans AutoCAD par exemple pour lancer le fichier d'aide "Extension Lisp" par hasard ? Je ne sais pas le faire pour les fonctions LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 mai 2010 Posté(e) le 29 mai 2010 Re, Sur une v2008 sans applicatif => [surligneur]Essai presse papier [/surligneur] Commande: (gc-copytoclipboard "Voyons") System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronéeCommande: (gc-copytoclipboard "Voyons") System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronée Décidément, semble ne pas aimer 2008 ! [surligneur]Essais Boites de dialogue [/surligneur] Ouvre une boite de dialogue pour choisir un (ou plusieurs) fichier(s) Commande: (gc-getfiledlg "Choisir les fichiers" "C:\\Program Files" "" T)("C:\\Documents and Settings\\Lilian LESCOUËT\\Bureau\\TEST\\Extraction d'attributs.xls") Ouvre une boite de dialogue pour choisir (ou de créer) un répertoire -En sélectionnant un dossier existant : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Documents and Settings\\Lilian LESCOUËT\\Bureau\\TEST" - Par création d'un nouveau dossier : Commande: (gc-getfolderdlg "Choisir ou créer un dossier" (getvar 'dwgprefix) T)"C:\\Documents and Settings\\Lilian LESCOUËT\\Bureau\\test 2" Le dossier est bien créé ! Ouvre une boite de dialogue pour récupérer une entrée utilisateur Commande: (gc-inputbox "Quizz" "Question 1\Alors, ça fonctionne ?" "Yes !")"Yes !" Ouvre une boite de dialogue qui délivre un message et retourne une réponse Commande: (gc-inputbox "Quizz" "Question 1\Alors, ça fonctionne ?" "Yes !")"Yes !"Commande: (gc-messagebox "Dernier test pour les BD" "Est-ce que celle-ci aussi("_> fonctionne ?" 0 16)System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronée Pas de pb particulier,.....Si ce n'est "gc-messagebox " avec ou sans applicatif, marche pas sous V2008 [surligneur]Essai Calques dans les fenêtres de présentation [/surligneur] Dégèle les calques dans la fenêtre de présentation Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronéeCommande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronée fonctionne jusqu'à la sélection de l'objet,... Ou alors, je m'y prend mal,.. (Création des calques en question et sélection d'une entité sur le calque "test 1") [surligneur]Essai Excel [/surligneur] Lit une feuille Excel Commande: (gc-xlread (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 0))"" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Semble fonctionner, pourquoi tous ces "" "" "" "" "" "" "" "" "" "" "" " sur les cellules vides ? Test avec le second onglet "ixl 1" Commande: (gc-xlread (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 0)(_> "ixl 1")"" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "") ("" "")) "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "467C" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "") ("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "4650" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " Une écriture ("TEST" en cellule A2 ne semble pas reconnue, et pour le reste ?????!!! [surligneur]Essai Purge [/surligneur] Purge le dessin Commande: (gc-purge 2097151)System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgPerDocumentCommandClass.Invoke(AcMgPerDocumentCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronée Idem V2008 avec applicatif, Voila pour cette batterie de tests, plus qu'à analyser, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 29 mai 2010 Posté(e) le 29 mai 2010 Re, Je ne comprends l'erreur (toujours la même) que tu as avec Covadis. Et sur la V2008 sans covadis ? (Message précédent) L'autre erreur, est due à une faute de frappe Retesté : V2008 + covadis => Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* )*Annuler*Commande:erreur: Demande ADS erronée V2008 sans covadis => Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: System.ArgumentException: Erreur lors de la liaison avec la méthode cible. à System.Delegate.CreateDelegate(Type type, Object firstArgument, MethodInfo method, Boolean throwOnBindFailure) à AcMgCommandClass.InvokeWorker(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.InvokeWorkerWithExceptionFilter(AcMgCommandClass* , MethodInfo mi, Object commandObject, Boolean bLispFunction) à AcMgCommandClass.Invoke(AcMgCommandClass* , gcroot<:reflection::methodinfo>* mi, Boolean bLispFunction) à AcMgCommandClass.CommandThunk.InvokeLisp(CommandThunk* ); erreur: Demande ADS erronée V2011 sans covadis => Commande: (gc-vpthaw (car (entsel)) '("test 1" "test 2"))Choix de l'objet: Régénération de la présentation.Régénération du modèle.T Marche nickel !, c'est donc 2008 qui pose pb ? tu as du faire 2 fois entrée et donc relancer la dernière commande (AIDE). Vraisemblablement,... Je ne sais pas le faire pour les fonctions LISP. C'était juste une question car comme tu l'as constaté à maintes reprises, je passe à coté de certaines choses assez régulièrement par manque de "maitrise" (voire de compréhension par moment,... :exclam: ), ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 mai 2010 Auteur Posté(e) le 29 mai 2010 Je ne comprends vraiment pas pourquoi certaines fonctionnent et d'autres non.Ni pourquoi c'est uniquement sur 2008 (décidément un grand cru !) qu'il y a des soucis. pourquoi tous ces "" "" "" "" "" "" "" "" "" "" "" " sur les cellules vides ? Pourquoi toutes ces cellules vides ? Sérieusement, pour pouvoir être traiter en LISP la lecture du fichier Excel le résultat est retourné sous forme d'une liste composée d'une sous-liste pour chaque rangée, chaque sous liste contenant une chaîne par cellule (donc une chaîne vide su la cellule est vide).Ce qui permet, pour connaître ce contenu de la cellule B3 (2ème colonne de la 3ème rangée) de faire (nth 1 (nth 2 lst)) où lst est la liste retournée par gc-xlread. Inversement, pour écrire, l'argument doit être une liste de sous-listes de chaînes. Pour reprendre l'exemple de l'aide :(gc-xlwrite (getfiled "Choisir le fichier Excel" "" "xls;xlsx" 1) nil '(("N°" "Aire") (12 258.3)) ) La fonction écrit dans la feuille active (nil) du fichier sélectionné "N°" dans la cellule A1 "Aire" dans la cellule B1, "12" dans la cellule A2 et "258.3" dans la cellule B2. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 30 mai 2010 Posté(e) le 30 mai 2010 Bonjour à toutes et tous, Ok ! Merci pour ces précisions Gilles, (décidément un grand cru !) Faut croire,....:mad: Bon Dimanche, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 24 juin 2010 Auteur Posté(e) le 24 juin 2010 Nouvelle version : correction d'un bug dans gc-purge. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 29 juin 2010 Auteur Posté(e) le 29 juin 2010 Un nouveau bug m'a été signalé avec gc-purge.C'est réparé (j'espère).Nouvelle version en téléchargement dans le premier message. 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