Demixav Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Bonjour, Je cherche un LISP me permettant de sélectionner des objets suivant leurs données d'objets.Je suis tombé sur ces deux LISP "ODselect" (de Gégématic), et "Sel_by_OD_v2"(de LeCrabe), mais je n'arrive pas à les installer! Pour ODSelect, c'est un fichier dll, et il me manque deux lisp si j'ai bien compris "SelParTablelsp" et "SelParODValLsp", et impossible de les trouver. la page de téléchargement a été supprimé. Pour "Sel_by_OD_v2", lorsque je le charge, j'ai ce message en retour :Sel_By_OD_v2.lsp correctement chargé(s)Commande: ; erreur: chaîne trop longue en entrée Et lorsque j'essaie de le lancer après ce chargement, j'ai :Commande: Sel_By_OD_v2Commande inconnue "SEL_BY_OD_V2". Appuyez sur F1 pour obtenir de l'aide QQn peut m'aider please? ou une autre piste pour arriver à mes fins?...En vous remerciant! Xav AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
DenisHen Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Salut Xav. Je pense ne rien t'apprendre que pour charger une DLL in faut utiliser NETLOAD et non APPLOAD... On ne sait jamais... ;) Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Demixav Posté(e) le 3 juillet 2019 Auteur Posté(e) le 3 juillet 2019 Bonjour Denis, Une piqûre de rappel des "bases" est toujours la bienvenue! merci! :)Alors je suis bien passé par netload en effet pour charger le dll, mais après? il y a bien deux lisps manquant avec ce dll pour s'en servir... non? AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
DenisHen Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Je m'e doutais bien que tu le savais... ;) A la fin de NETLOAD, rien ne t'indique le(s) nom(s) de commande dans la fenêtre "texte" ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
lecrabe Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Hello PERSO: aucun Probl avec le Sel_By_OD v2.01 sur MAP 2020 ! Encore MERCI a Bonuscad / Bruno ... Bye, lecrabe "triste" ;; ;; cadxp.com - Je reviens sur ce sujet car a ce jour j'avais besoin d'un outil. ;; N'etant jamais mieux servi que par soi-meme, je me suis pencher sur un code de filtrage sur OD ;; ;; Je le livre en version Beta si cela interesse d'autre personnes pour effectuer des tests ;; ;; par Bonuscad (Bruno) vs 2.00 BETA - Avec correction du bug sur Entite avec de multiples tables OD ;; ;; ;; Micro-Micro-Micro-Modif vs 2.01 en 2017 par Patrice : Elargissement du DCL ;; ;; (vl-load-com) (defun c:Sel_By_OD_v2 ( / js dxf_model all_fldnamelist all_fldtypelist all_vallist tbllist tbldef tblstr fldnamelist fldtypelist fldnme fldtyp numrec ct cttemp vallist typ val nl tmp_file dcl_file dcl_id indx Id_tbl Id_nam Id_val op_log what_next js_sel n) (princ "\nSelection d'un objet modèle: ") (while (null (setq js (ssget "_+.:E:S:L:N" (list (cons 0 "*") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) ) ) ) ) ) (setq dxf_model (entget (ssname js 0)) all_fldnamelist () all_fldtypelist () all_vallist ()) (if (null (setq tbllist (ade_odgettables (cdar dxf_model)))) (princ "\nL'objet séléctionné ne contient pas de données d'objet.") (foreach tbl (reverse tbllist) (setq tbldef (ade_odtabledefn tbl) tblstr (cdr (nth 2 tbldef)) fldnamelist () fldtypelist () ) (foreach fld tblstr (setq fldnme (cdr (nth 0 fld)) fldtyp (cdr (nth 2 fld)) fldnamelist (append fldnamelist (list fldnme)) fldtypelist (append fldtypelist (list fldtyp)) ) ) (setq numrec (ade_odrecordqty (cdar dxf_model) tbl) ct 0 all_fldnamelist (cons fldnamelist all_fldnamelist) all_fldtypelist (cons fldtypelist all_fldtypelist) ) (while (< ct numrec) (setq cttemp 0 vallist ()) (foreach fld fldnamelist (setq typ (nth cttemp fldtypelist) cttemp (+ cttemp 1) val (ade_odgetfield (cdar dxf_model) tbl fld ct) ) (if (= typ "Integer")(setq val (fix val))) (setq vallist (append vallist (list val))) ) (setq ct (+ ct 1)) ) (setq all_vallist (cons vallist all_vallist)) ) ) (cond ((and tbllist all_fldnamelist all_fldtypelist all_vallist) (setq tmp_file (vl-filename-mktemp "sel_by_od.dcl") dcl_file (open tmp_file "w") ) (write-line "Sel_By_OD : dialog { label = \"Choix des champs à filtrer\"; :column { label = \"Application\"; :popup_list {key=\"tbl\";edit_width=40;} } :column { label = \"Données d'objets\"; :popup_list {key=\"nam\";edit_width=40;} :edit_box { label = \"Valeur du champ:\"; mnemonic = \"V\"; key = \"val\"; edit_width = 30; edit_limit = 41; } } :boxed_row { label = \"Choix de l'opérateur logique\"; :radio_button { label = \"=\"; key = \"b_equ\"; } :radio_button { label = \"/=\"; key = \"b_dif\"; } :radio_button { label = \">\"; key = \"b_sup\"; } :radio_button { label = \"<\"; key = \"b_inf\"; } :radio_button { label = \">=\"; key = \"b_sup-eq\"; } :radio_button { label = \"<=\"; key = \"b_inf-eq\"; } } ok_cancel_err; }" dcl_file ) (close dcl_file) (setq dcl_id (load_dialog tmp_file) indx (1- (length tbllist)) Id_tbl (nth indx tbllist) Id_nam (car (nth indx all_fldnamelist)) Id_val (car (nth indx all_vallist)) op_log "=") (setq what_next 2) (while (< 1 what_next) (if (not (new_dialog "Sel_By_OD" dcl_id)) (exit)) (start_list "tbl") (mapcar 'add_list tbllist) (end_list) (set_tile "tbl" (itoa indx)) (start_list "nam") (mapcar 'add_list (nth indx all_fldnamelist)) (end_list) (set_tile "nam" (itoa (- (length (nth indx all_fldnamelist)) (length (member (car (nth indx all_fldnamelist)) (nth indx all_fldnamelist)))))) (set_tile "val" (setq Id_val (car (mapcar '(lambda (x) (cond ((eq (type x) 'REAL) (rtos x)) ((eq (type x) 'INT) (itoa x)) ((eq (type x) 'LIST) (apply 'strcat (mapcar 'strcat (mapcar 'rtos x)'("," "," "")))) (T x) ) ) (nth indx all_vallist) ) ) ) ) (cond ((= op_log "=") (set_tile "b_equ" "1") (mode_tile "b_equ" 2)) ((= op_log "/=") (set_tile "b_dif" "1") (mode_tile "b_dif" 2)) ((= op_log ">") (set_tile "b_sup" "1") (mode_tile "b_sup" 2)) ((= op_log "<") (set_tile "b_inf" "1") (mode_tile "b_inf" 2)) ((= op_log ">=") (set_tile "b_sup-eq" "1") (mode_tile "b_sup-eq" 2)) ((= op_log "<=") (set_tile "b_inf-eq" "1") (mode_tile "b_inf-eq" 2)) ) (set_tile "error" "") (action_tile "tbl" "(setq Id_tbl (nth (setq indx (fix (atof (get_tile \"tbl\")))) tbllist)) (start_list \"nam\") (mapcar 'add_list (nth indx all_fldnamelist)) (end_list) (set_tile \"nam\" (setq Id_nam (nth (- (length (nth indx all_fldnamelist)) (length (member (car (nth indx all_fldnamelist)) (nth indx all_fldnamelist)))) (nth indx all_fldnamelist)))) (set_tile \"val\" (setq Id_val (car (mapcar '(lambda (x) (cond ((eq (type x) 'REAL) (rtos x)) ((eq (type x) 'INT) (itoa x)) ((eq (type x) 'LIST) (apply 'strcat (mapcar 'strcat (mapcar 'rtos x)'(\",\" \",\" \"\")))) (T x) ) ) (nth indx all_vallist) ) ) ) ) ") (action_tile "nam" "(setq Id_nam (nth (fix (atof (get_tile \"nam\"))) (nth indx all_fldnamelist))) (set_tile \"val\" (setq Id_val (nth (vl-position Id_nam (nth indx all_fldnamelist)) (mapcar '(lambda (x) (cond ((eq (type x) 'REAL) (rtos x)) ((eq (type x) 'INT) (itoa x)) ((eq (type x) 'LIST) (apply 'strcat (mapcar 'strcat (mapcar 'rtos x)'(\",\" \",\" \"\")))) (T x) ) ) (nth indx all_vallist) ) ) ) ) ") (action_tile "val" "(setq Id_val $value)") (action_tile "b_equ" "(setq op_log \"=\")") (action_tile "b_dif" "(setq op_log \"/=\")") (action_tile "b_sup" "(setq op_log \">\")") (action_tile "b_inf" "(setq op_log \"<\")") (action_tile "b_sup-eq" "(setq op_log \">=\")") (action_tile "b_inf-eq" "(setq op_log \"<=\")") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) ) (unload_dialog dcl_id) (vl-file-delete tmp_file) (setq typ (nth (- (length (nth indx all_fldnamelist)) (length (member id_nam (nth indx all_fldnamelist)))) (nth indx all_fldtypelist)) nl nil) (cond ((eq typ "Real") (setq Id_val (atof Id_val))) ((eq typ "Integer") (setq Id_val (atoi Id_val))) ((eq typ "Point") (setq Id_val (read (vl-list->string (append (cons 40 (foreach n (reverse (vl-string->list id_val)) (setq nl (cons (if (eq n 44) 32 n) nl)))) '(41)))))) ) (setq js (ssget "_X" (list (assoc 0 dxf_model) (assoc 8 dxf_model) (if (assoc 6 dxf_model) (assoc 6 dxf_model) '(6 . "BYLAYER")) (if (assoc 62 dxf_model) (assoc 62 dxf_model) '(62 . 256)) (if (assoc 48 dxf_model) (assoc 48 dxf_model) '(48 . 1)) (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) js_sel (ssadd) ) (cond (js (repeat (setq n (sslength js)) (if (not (null (setq tbllist (ade_odgettables (setq ent (ssname js (setq n (1- n)))))))) (foreach tbl tbllist (setq tbldef (ade_odtabledefn tbl) tblstr (cdr (nth 2 tbldef)) fldnamelist () fldtypelist () ) (foreach fld tblstr (setq fldnme (cdr (nth 0 fld)) fldtyp (cdr (nth 2 fld)) fldnamelist (append fldnamelist (list fldnme)) fldtypelist (append fldtypelist (list fldtyp)) ) ) (setq numrec (ade_odrecordqty ent tbl) ct 0) (while (< ct numrec) (setq cttemp 0) (foreach fld fldnamelist (setq typ (nth cttemp fldtypelist) cttemp (+ cttemp 1) val (ade_odgetfield ent tbl fld ct) ) (if (= typ "Integer")(setq val (fix val))) (if (and (eq tbl Id_tbl) (eq fld Id_nam) (if (= typ "Character") (wcmatch val Id_val) (if (= typ "Point") (mapcar '(lambda (u v) (eval (read op_log)) u v) val Id_val) ((eval (read op_log)) val Id_val) ) ) ) (setq js_sel (ssadd ent js_sel)) ) ) (setq ct (+ ct 1)) ) ) ) ) ) ) ) ) (princ (strcat "\n" (itoa (sslength js_sel)) " trouvé(s)")) (sssetfirst nil js_sel) (prin1) ) Autodesk Expert Elite Team
Demixav Posté(e) le 3 juillet 2019 Auteur Posté(e) le 3 juillet 2019 Merci pour vos réponses! @ LeCrabe ;Je viens de réessayer avec le LISP ci dessus proposé par LeCrabe, mais le résultat est le même sur mon poste (ça pourrait venir de ma version de AutoCad Map 2011?)J'ai le même message au moment du chargement "erreur: chaîne d'argument trop longue" @ DenisH ;Je n'avais aps fait attention, mais j'ai également un soucis de chargement apparemment... j'ai ce message après avoir tenté de charger le dll : Impossible de charger l'assemblage. Détails de l'erreur: System.BadImageFormatException: Impossible de charger le fichier ou l'assembly 'file:///C:\Users\Xav\AppData\Roaming\Autodesk\ApplicationPlugins\ODselect.dll' ou une de ses dépendances. Cet assembly a été construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.Nom du fichier : 'file:///C:\Users\Xav\AppData\Roaming\Autodesk\ApplicationPlugins\ODselect.dll' à 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.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]. AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
DenisHen Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Je pense qu'il faudrait mettre à jour ton FrameWork, mais je n'en suis pas absolument certain... Tu es sur quelle version d'AutoCAD ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Olivier Eckmann Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Bonjour, Il me semble que la DLL de gege a été compilée pour le .Net Framework 4.5 donc AutoCAD 2013 minimum. Sinon dans cette discussion, j'ai écrit un outil de sélection par OD : ICIDans le message #38 du 16 juin, tu as un ZIP qui contient une DLL normalement compatible de MAP 2007 à MAP 2014.Une fois le programme chargé avec netload, la commande de sélection s'appelle MQSELECT Olivier
lecrabe Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Hello YES MQSELECT est un MUST ! ... MERCI Grand Maitre Olivier !! Neanmoins j'utilise toujours de temps en temps le bon vieux (comme Bruno et moi) Sel_By_OD ...Des que possible je vais tester sur un MAP 2011 64 bits !? Bye, lecrabe "triste" Autodesk Expert Elite Team
Demixav Posté(e) le 3 juillet 2019 Auteur Posté(e) le 3 juillet 2019 Merci à nouveau à tous, et particulièrement à Olivier pour ton lien et le partage de ton travail.9a fonctionne très bien même si j'ai eu une petite montée d'adrénaline en voyant que j'ai eu le message (ci dessous) que pour le premier dll... mais là, bizarrement, ça fonctionne et c'est le principal! :) Merci encore à tous!Xav Commande: netloadObjectData Sample Application Initialized.Commande: NETLOAD Impossible de charger l'assemblage. Détails de l'erreur: System.BadImageFormatException: Impossible de charger le fichier ou l'assembly 'file:///C:\Users\Xav\AppData\Roaming\Autodesk\ApplicationPlugins\ObjectDataCS19.dll' ou une de ses dépendances. Cet assembly a été construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.Nom du fichier : 'file:///C:\Users\Xav\AppData\Roaming\Autodesk\ApplicationPlugins\ObjectDataCS19.dll' à 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.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]. AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
Olivier Eckmann Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Bonjour, Normalement pour AutoCAD 2011, tu n'as qu'une DLL à charger : ObjectDataCs.DLL.la version xxx19.dll est destiné à AutoCAD 2013 et au-délà. Olivier
Demixav Posté(e) le 3 juillet 2019 Auteur Posté(e) le 3 juillet 2019 Vers l'infini et au delà... merci Buzz... heu... Olivier! <_< ;) AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
GEGEMATIC Posté(e) le 28 mars Posté(e) le 28 mars Le 03/07/2019 à 09:51, Demixav a dit : Bonjour, Je cherche un LISP me permettant de sélectionner des objets suivant leurs données d'objets. Je suis tombé sur ces deux LISP "ODselect" (de Gégématic), et "Sel_by_OD_v2"(de LeCrabe), mais je n'arrive pas à les installer! Pour ODSelect, c'est un fichier dll, et il me manque deux lisp si j'ai bien compris "SelParTablelsp" et "SelParODValLsp", et impossible de les trouver. la page de téléchargement a été supprimé. Xav Salut, je n'avais pas vu ce post à l'époque. Les fonctions proposées par Olivier Eckman sont infiniment plus avancées que ce que propose ODselect. le seul "avantage" d'Odselect est de pouvoir l'utiliser en lisp . Donc il ne te manque pas de lisp, ce sont 2 fonctions lisp créée par Odselect lorsqu'on le charge Chez nous ça marche très bien de la 2015 à la 2024 La page d'explication et de téléchargement est ici: http://g-eaux.over-blog.com/2015/10/odselect-utilitaires-pour-la-selection-par-filtre-d-object-data.html Il reste le problème du AutoCAD.exe.config que je n'ai jamais réussi à résoudre autrement qu'avec cette astuce: https://through-the-interface.typepad.com/through_the_interface/2011/07/loading-blocked-and-network-hosted-assemblies-with-net-4.html Astuce que je ne trouvais plus et c'est comme ça que je suis tombé sur ce post ! exemple d'utilisation des fonction lisp: ; **************************************************************************** ;;§/files/recherche les fichier selon un masque défint par l'utilisateur /none ;;défini DANS AutoCAD VB plug-in labo g-eaux.sln ;;(charger odselect.dll) ;;usage (FindFilesLike "Directory" "filepattern" "mode = TopDirectoryOnly or AllDirectories") ;;(FindFilesLike "E:\\NADIAA\\DOS\\la_bathie\\Ass\\Fiches_Regard\\" "A_1160.pdf" "TopDirectoryOnly") ;;(setq lpdf (c:FindFilesLike)) (defun c:FindFilesLike () (if (not FindFilesLike) (command "Netload" (strcat aclsp-chem "DotNet/G-Eaux_Map_Extensions.dll") ) ) (pw_bydefault "mode" "AllDirectories") (pw_getkwordmem "\nMode de recherche dans les répertoires ?/TopDirectoryOnly AllDirectories" "mode" ) (pw_getstringmem "\nFichier à rechercher (jokers acceptés)" "fichier" ) (setq dir (pw_pick_directory "Choisir un répertoire" dir)) (FindFilesLike dir fichier mode) ) du coup je vais demander à Olivierd'ajouter des commandes équivalentes utilisable en lisp dans son excellent plug-in "Exploitation des données d'objets" a bon entendeur ! a+ gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
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