lili2006 Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Bonsoir à toutes et tous, Le post que j'ai suivi aujourd'hui m'a donné une nouvelle idée. Tout comme le Lisp "(PNT2BLK)" revu par (gile) en fonction de mes diverses demandes (merci encore à lui),est-il possible de faire la même chose sur le Lisp (également mentionné sur le post donné en lien) "ins-vtx " (rappel ci-dessous). Je m'explique, au lieu de selectionner des points graphiquement, pouvoir les saisir en ne désignant que le calque ou les points figurent ??? Je pense bien que c'est possible, vu la rapidité de réponse de (Gile) sur le même problème,... Merci d'avance. Rappel Lisp " ins-vtx " revu par (gile) => (defun c:ins-vtx (/ acdoc space bname ss lay layf n ins) (vl-load-com) (setq acdoc (vla-get-activeDocument (vlax-get-acad-object)) space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace acdoc) (vla-get-ModelSpace acdoc) ) ) (if (setq bname (getblock "Nom du bloc")) (progn (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname)))) (setq lay (cdr (assoc 8 (entget (ssname ss 0))))) ) (if (setq layf (getlayer "Choisir le calque filtre de polylignes")) (if (ssget "_X" (list '(0 . "*POLYLINE") (cons 8 layf))) (progn (vla-startUndoMark acdoc) (vlax-for pl (vla-get-ActiveSelectionSet acdoc) (setq n (fix (vlax-curve-getEndParam pl))) (or (= (vla-get-Closed pl) :vlax-false) (setq n (1- n)) ) (repeat (1+ n) (setq ins (vla-InsertBlock space (vlax-3d-point (vlax-curve-getPointAtParam pl n)) bname 1.0 1.0 1.0 0.0 ) ) (if lay (vla-put-layer ins lay) ) (setq n (1- n)) ) ) (vla-EndUndoMark acdoc) ) ) ) ) ) (princ) ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 NOTA : les routines getblock et getlayer (ici) doivent être chargées (defun c:ins-pts (/ acdoc space bl ss lay layf n ins) (vl-load-com) (setq acdoc (vla-get-activeDocument (vlax-get-acad-object)) space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace acdoc) (vla-get-ModelSpace acdoc) ) ) (if (setq bl (getblock "Nom du bloc")) (progn (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bl)))) (setq lay (cdr (assoc 8 (entget (ssname ss 0))))) ) (if (setq layf (getlayer "Calque filtre des points")) (if (ssget "_X" (list '(0 . "POINT") (cons 8 layf))) (progn (vla-startUndoMark acdoc) (vlax-for pt (vla-get-ActiveSelectionSet acdoc) (setq ins (vla-InsertBlock space (vla-get-coordinates pt) bl 1.0 1.0 1.0 0.0 ) ) (if lay (vla-put-layer ins lay) ) ) (vla-EndUndoMark acdoc) ) ) ) ) ) (princ) ) [Edité le 9/11/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Boum !! 18 minutes plus tard, Gile le sage répond parfaitement (je n'ai même pas testé, mais je le sais, c'est tout), comme d'hab ! Je ne me répèterai pas, mais merci à toi Gile. "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Re, Je ne peux pas tester maintenant mais vu le nombre de commentaires associés, cela ne t'as pas posé de problèmes,... Merci et je revient dés que j'ai pu tester. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Rere, Matt666, aurais-tu écrit le Lisp comme cela également ? Si tu peux le tester, merci. (Mon AutoCAD n'est pas dispo pour le moment (licence mobile)). Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Il n'y a vraiment rien d'extraordinaire, il s'agit justes de modifications mineures dans un micro LISP que j'avais écrit et sur lequel je bidouille des modifs depuis tout à l'heure.Vraiment rien de comparable avec LXL ! Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Re, Il n'y a vraiment rien d'extraordinaire, il s'agit justes de modifications mineures dans un micro LISP que j'avais écrit et sur lequel je bidouille des modifs depuis tout à l'heure.Vraiment rien de comparable avec LXL ! Pour toi, certes, mais pas pour grand monde sur ce forum et c'est ce genre de manips qui nous font avancer. Je commence à regarder de plus en plus les modifs que tu fais en essayant de comprendre pourquoi, mais seul, c'est vraiment trés dur, et il faut y passer du temps. C'est encore loin d'être de mon niveau. Par exemple LXL, je ne peux que essayer de l'utiliser convenablement,( et je n'en suis même pas encore sur, alors,...). En tous cas, moi je te remercie beaucoup (je sais, une fois de plus) pour ce que tu fais sur ce site. Aujourd'hui, je me suis dis, tiens, je n'ai pas énormément de travail ce WE, je passe mon vendredi sur CADxp, et bin,.. Même comme ça, j'ai du mal à suivre ta cadence. J'ai à peine fini de tester que toi, tu as déjà revu les écritures su un autre problème, c'est balaise ! Comment fais-tu pour avoir des journée de 48h00 ??? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Bonsoir Je sors un vieux programme Lisp qui a qq limitations (PNT2BLK), je sollicite les Pros du Dev (par exemple Gilles ou autres) et BOUM Gilles me corrige / ameliore la routine vite fait bien fait en quelques instants ! :) Et en plus cela donne des idees a lili2006 qui va generer un peu plus de boulot pour GIlles dont les journees font sans doute 72h ! :D Encore merci à tous, Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Re, J'ai testé et bien sûr, pas de surprises. Une question : Je n'arrive pas à choisir un bloc en fichier externe (bouton parcourir de la boite "Choisir un bloc). Je peux choisir le plan mais ensuite, je suis renvoyé sur la boite de dialogue de départ (à savoir, "Choisir un bloc"). Suis-je le seul ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Je n'arrive pas à choisir un bloc en fichier externe (bouton parcourir de la boite "Choisir un bloc). Je peux choisir le plan mais ensuite, je suis renvoyé sur la boite de dialogue de départ (à savoir, "Choisir un bloc") :casstet: Tu as bien la version de getblock donnée ici ? si tu entres l'expression suivante à la ligne de commande, et que tu choisis un fichier, que se passe-t-il ? (getblock nil) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Re, J'ai "Getblock (version 2)" : ;;; Getblock (version 2) ;;; Retourne le nom du bloc sélectionné à l'écran, entré ou choisi ;;; par l'utilisateur dans une liste déroulante de la boite de dialogue ou ;;; depuis la boite de dialogue standard d'AutoCAD ;;; Argument : le titre (string) ou nil (défaut : "Choisir un bloc") (defun c:ssb (/ ss name) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (= "INSERT" (cdr (assoc 0 (entget (ssname ss 0))))) (setq name (cdr (assoc 2 (entget (ssname ss 0))))) ) (and (sssetfirst nil nil) (setq name (getblock nil)) ) ) (sssetfirst nil (ssget "_X" (list '(0 . "INSERT") (cons 2 name)))) ) (princ) ) ;;; Getblock Retourne le nom du bloc entré ou choisi par l'utilisateur ;;; dans une liste déroulante de la boite de dialogue ou depuis la boite ;;; de dialogue standard d'AutoCAD ;;; Argument : le titre (string) ou nil (défaut : "Choisir un bloc") (defun getblock (titre / bloc n lst what_next dcl_id nom) (while (setq bloc (tblnext "BLOCK" (not bloc))) (setq lst (cons (cdr (assoc 2 bloc)) lst) ) ) (setq lst (acad_strlsort (vl-remove-if '(lambda (n) (= (substr n 1 1) "*")) lst) ) ) (setq dcl_id (load_dialog "Getblock.dcl")) (setq what_next 2) (while (>= what_next 2) (if (not (new_dialog "getblock" dcl_id)) (exit) ) (start_list "bl") (mapcar 'add_list lst) (end_list) (if titre (set_tile "box" titre) ) (if (setq n (vl-position (strcase (getvar "INSNAME")) (mapcar 'strcase lst) ) ) (setq nom (nth n lst)) (setq nom (car lst) n 0 ) ) (set_tile "bl" (itoa n)) (action_tile "bl" "(setq nom (nth (atoi $value) lst))") (action_tile "wbl" "(done_dialog 3)") (action_tile "tp" "(setq nom $value) (done_dialog 4)") (action_tile "accept" "(setq nom (nth (atoi (get_tile \"bl\")) lst)) (done_dialog 1)" ) (setq what_next (start_dialog)) (cond ((= what_next 3) (if (setq nom (getfiled "Sélectionner un fichier" "" "dwg" 0)) (setq what_next 1) (setq what_next 2) ) ) ((= what_next 4) (cond ((not (read nom)) (setq what_next 2) ) ((tblsearch "BLOCK" nom) (setq what_next 1) ) ((findfile (setq nom (strcat nom ".dwg"))) (setq what_next 1) ) (T (alert (strcat "Le fichier \"" nom "\" est introuvable.")) (setq nom nil what_next 2 ) ) ) ) ((= what_next 0) (setq nom nil) ) ) ) (unload_dialog dcl_id) nom ) (defun getblock (titre / bloc n lst what_next dcl_id nom) (while (setq bloc (tblnext "BLOCK" (not bloc))) (setq lst (cons (cdr (assoc 2 bloc)) lst) ) ) (setq lst (acad_strlsort (vl-remove-if '(lambda (n) (= (substr n 1 1) "*")) lst) ) ) (setq dcl_id (load_dialog "Getblock_2.dcl")) (setq what_next 2) (while (>= what_next 2) (if (not (new_dialog "getblock_2" dcl_id)) (exit) ) (start_list "bl") (mapcar 'add_list lst) (end_list) (if titre (set_tile "box" titre) ) (if (setq n (vl-position (strcase (getvar "INSNAME")) (mapcar 'strcase lst) ) ) (setq nom (nth n lst)) (setq nom (car lst) n 0 ) ) (set_tile "bl" (itoa n)) (action_tile "sel" "(done_dialog 5)") (action_tile "bl" "(setq nom (nth (atoi $value) lst))") (action_tile "wbl" "(done_dialog 3)") (action_tile "tp" "(setq nom $value) (done_dialog 4)") (action_tile "accept" "(setq nom (nth (atoi (get_tile \"bl\")) lst)) (done_dialog 1)" ) (setq what_next (start_dialog)) (cond ((= what_next 3) (if (setq nom (getfiled "Sélectionner un fichier" "" "dwg" 0)) (setq what_next 1) (setq what_next 2) ) ) ((= what_next 4) (cond ((not (read nom)) (setq what_next 2) ) ((tblsearch "BLOCK" nom) (setq what_next 1) ) ((findfile (setq nom (strcat nom ".dwg"))) (setq what_next 1) ) (T (alert (strcat "Le fichier \"" nom "\" est introuvable.")) (setq nom nil what_next 2 ) ) ) ) ((= what_next 5) (if (and (setq ent (car (entsel))) (= "INSERT" (cdr (assoc 0 (entget ent)))) ) (setq nom (cdr (assoc 2 (entget ent))) what_next 1 ) (setq what_next 2) ) ) ((= what_next 0) (setq nom nil) ) ) ) (unload_dialog dcl_id) nom ) Ce qui donne en mettant en ligne de commande : (getblock nil) => <!--url{0}--> si tu entres l'expression suivante à la ligne de commande, et que tu choisis un fichier, que se passe-t-il ? AutoCAD me renvoi : Commande: (getblock nil)"D:\\BA Conception TRAVAIL\\PROJETS\\COMMESPACE\\BA DCE\\Historique BA DCE\\BATIMENT A\\3-LA PRUNELLE BAT.A- PLHT RDC 22-10-07.dwg" C'est bien le chemin du fichier que je suis allez chercher, et puis après plus rien, la boite de dialogue s'efface et je reprend la main sur les commandes. Merci. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 novembre 2007 Partager Posté(e) le 9 novembre 2007 Donc ça marche, tu es sûr que ce n'est pas la boite de getlayer qui s'ouvre quand tu as choisi ton fichier ? Bonne nuit... PS : la dernière version (sans fichier DCL) est plus polyvalente : on peut aussi sélectionner le bloc à l'écran http://img210.imageshack.us/img210/8451/getblockoj5.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Re, Je viens de charger "Getblock" depuis le lien que tu donnes. Voilà la BD qui s'ouvre ( Nom du bloc et non Choisir un bloc).J'ai du me tromper quelque part,... <!--url{0}--> Ensuite, j'essaie l'option "parcourir",et aprés la saisie du fichier, je me retrouve avec cette BD => <!--url{1}--> . Et bien sûr, je n'ai pas accés au fichier choisi auparavent. J'tavouerai que j'suis un peu perdu, mais vu l'heure tardive et la journée passée,..... Bonne nuit. [Edité le 9/11/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 9 novembre 2007 Auteur Partager Posté(e) le 9 novembre 2007 Rere et Bonjour à toutes et tous, Aprés plusieurs test et sur plusieurs lisps qui font appel à la même BD, voici les retours AutoCAD (toujours pour selectionner un bloc d'un fichier extérieur): 1) Commande: PNT2BLKUtilisation: (acad_strlsort )Invalid, block not defined in drawing.Commande:Commande: Spécifiez le coin opposé:Commande:Commande:Commande: SSBUtilisation: (acad_strlsort )Commande: 2) Commande: ins-ptsUtilisation: (acad_strlsort )Choix de l'objet: *Annuler*; erreur: Fonction annuléeCommande:Commande:Commande:Commande: ins-ptsUtilisation: (acad_strlsort )Commande: 3) Commande: PNT2BLKUtilisation: (acad_strlsort )Invalid, block not defined in drawing.Commande: 4) Commande: ins-vtxUtilisation: (acad_strlsort )Commande: 5) Commande: INS3DSpécifiez le point d'insertion ou :Spécifiez un point dans la zone positive de l'axe X du Bloc ou :Spécifiez un point dans la zone des Y positifs ou :Commande: Et sur ce Lisp, ça marche ! Du coup, une fois les blocs chargés du dessin de référence, je peux à nouveau utiliser les autres Lisp, puisque c'est la même boite de dialogue (je veux dire que les blocs restent chargés !). Une idée ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 10 novembre 2007 Partager Posté(e) le 10 novembre 2007 Je ne comprends pas ce que tu fais, tu testes plusieurs routines à la fois : pnt2blk, ssb, ins-pts, ins-vtx, ins3d, mais il me semble qu'avec la dernière postée par exemple ins-pts tu ne vas pas au bout de la procédure. Tu lance ins-pts, la boite de getBlock s'ouvre,tu fais parcourrir, la boite getFiled s'ouvre, tu sélectionnes ton dwg, la boite getLayer s'ouvre,tu sélectionnes le calque pour filtrer les pointsla boite getLayer se ferme,les blocs sont insérés. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 10 novembre 2007 Auteur Partager Posté(e) le 10 novembre 2007 Bonjour à toutes et tous, (gile), la nuit porte conseil, c'est sûr ! Cela fonctionne parfaitement, c'était donc moi le Beug. En fait, sur le dessin que je voulais importer, il n'y avit rien !!! (Oublie d'enregistrement ou je ne sais quoi,...). Il m'a encore fallu 1 heure ce matin avant de m'en apercevoir, Pfuuuuuuu. Merci encore et désolé pour le dérangement,.... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Matt666 Posté(e) le 11 novembre 2007 Partager Posté(e) le 11 novembre 2007 Matt666, aurais-tu écrit le Lisp comme cela également ?Mon problème est que je ne connais pas du tout le Vlisp, parce qu'il n'est pas disponible sur BricsCAD... Enfin bon il paraitrait qu'ils les ont implémentés dans la nouvelle verison 8... Pleine de bugs pour l'instant Je ne désespère pas (trop)... A bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un." Lien vers le commentaire Partager sur d’autres sites More sharing options...
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