bonuscad Posté(e) le 6 juillet 2005 Posté(e) le 6 juillet 2005 Hé oui encore moi avec ce fameux (grread) ;) Ceci pour vous montrer que l'on peut faire une commande pour cloner une entité sans toucher au clavier, rien qu'avec un click Cette commande clone les paramétres: calque, type de ligne, couleur, épaisseur de ligne, échelle du type de ligneet lance la commande pour créer l'entité qui est sous le curseur.Le click-gauche verrouille/déverrouille la reconnaissance faite au dernier emplacement du curseur. (pas forcément utile)Le click-droit lance la commande approprié à l'objet lu sous le curseur ou dernier objet verrouillé par le click-droit NB:L'info du type d'objet (code DXF 0) apparait dans la barre d'état (quand le curseur est positionné dessus) à la place des coordonnées. Bien sur on pourrait encore sophistiquer le lisp, mais le rapport complexité efficacité ne me semble pas mauvais.Et puis c'est juste un amusement, à moins que certain apprécie à utiliser ce genre de routine? (defun c:dyn_clone ( / sv_shmnu loop key ent dxf_ent nam_bl typ_ent lay_ent lin_ent col_ent wid_ent sct_ent flag tabl_dxf cmd_clone) (setq sv_shmnu (getvar "SHORTCUTMENU") loop 0 ) (setvar "SHORTCUTMENU" 11) (while (and (setq key (grread T 4 0)) (not (member key '((2 13) (2 32)))) (/= (car key) 25)) (cond ((and (eq (car key) 3) ent) (setq loop (rem (1+ loop) 2)) ) (T (setq ent (nentselp "" (cadr key))) ) ) (cond ((and ent (zerop loop)) (if (eq (type (car (last ent))) 'ENAME) (setq dxf_ent (entget (car (last ent))) nam_bl (cdr (assoc 2 dxf_ent)) ) (setq dxf_ent (entget (car ent)) nam_bl nil) ) (if (eq (cdr (assoc 0 dxf_ent)) "VERTEX") (setq dxf_ent (entget (cdr (assoc 330 dxf_ent)))) ) (setq typ_ent (cdr (assoc 0 dxf_ent)) lay_ent (cdr (assoc 8 dxf_ent)) lin_ent (cdr (assoc 6 dxf_ent)) col_ent (cdr (assoc 62 dxf_ent)) wid_ent (cdr (assoc 370 dxf_ent)) sct_ent (cdr (assoc 48 dxf_ent)) ) (grtext -2 typ_ent) ) ) ) (cond ((eq typ_ent "LWPOLYLINE") (setq typ_ent "PLINE") ) ((eq typ_ent "POLYLINE") (setq flag (rem (cdr (assoc 70 dxf_ent)) 128)) (cond ((< flag 6) (setq typ_ent "PLINE") ) ((and (> flag 7) (< flag 14)) (setq typ_ent "3DPOLY") ) ((> flag 15) (setq typ_ent "3DMESH") ) ) ) ((or (eq typ_ent "HATCH") (eq typ_ent "SHAPE")) (setq nam_bl (cdr (assoc 2 dxf_ent))) ) ((eq typ_ent "DIMENSION") (setq nam_bl nil) (cond ((eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 0) (setq typ_ent "DIMLINEAR") ) ((eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 1) (setq typ_ent "DIMALIGNED") ) ((or (eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 2) (eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 5)) (setq typ_ent "DIMANGULAR") ) ((eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 3) (setq typ_ent "DIMDIAMETER") ) ((eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 4) (setq typ_ent "DIMRADIUS") ) ((or (eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 6) (eq (boole 6 (rem (cdr (assoc 70 dxf_ent)) 128) 32) 70)) (setq typ_ent "DIMORDINATE") ) (T (setq typ_ent "DIM")) ) ) ((eq typ_ent "VIEWPORT") (setq typ_ent "VPORTS") ) ((eq typ_ent "3DSOLID") (initget 1 "BOîte Sphère CYlindre CÔne BIseau Tore _Box Sphere CYlinder COne Wedge Torus") (setq typ_ent (getkword "\n[bOîte/Sphère/CYlindre/CÔne/BIseau/Tore]: ")) ) ) (grtext -2 "") (setvar "SHORTCUTMENU" sv_shmnu) (cond (typ_ent (setvar "clayer" lay_ent) (if lin_ent (setvar "celtype" lin_ent) (setvar "celtype" "ByLayer")) (if col_ent (setvar "cecolor" (itoa col_ent)) (setvar "cecolor" "256")) (if wid_ent (setvar "celweight" wid_ent) (setvar "celweight" -1)) (if sct_ent (setvar "celtscale" sct_ent) (setvar "celtscale" 1.0)) (setq cmd_clone (strcat "_." typ_ent)) (if nam_bl (progn (if (and (setq tabl_dxf (tblsearch "BLOCK" nam_bl)) (eq (boole 1 (cdr (assoc 70 tabl_dxf)) 4) 4)) (command "_.-XREF" "_attach" nam_bl) (command cmd_clone nam_bl) ) ) (command cmd_clone) ) ) (T (prin1)) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 6 juillet 2005 Posté(e) le 6 juillet 2005 GROOVY Tiens, :exclam: , ca me rappelle un truc ...! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LFA Posté(e) le 6 juillet 2005 Posté(e) le 6 juillet 2005 hello, Bonuscad, dis moi il est bien ton lisp, mais j'ai un petit soucis,pourquoi je réussi a cloner une entité qui se trouve sur un calque vérrouillé :casstet: est ce normal?? Tiens, , ca me rappelle un truc ...!Tramber, moi aussi ça me rappelle un fameux Autospeed, je prère la version de Bonuscad avec la source qui est plus instructive Laurent Falla Venez visiter mon site, c' est gratuit :) http://www.lfaconsulting.com'>
bonuscad Posté(e) le 6 juillet 2005 Auteur Posté(e) le 6 juillet 2005 avec la source qui est plus instructive Moi j'ai pu apprendre grâce aux sources d'autres concepteurs.Celles qui m'ont permis de décoller rapidement en lisp étaient les SOURCES d'une application payante.UniTab III pour AutoCad V10 (les dinosaures se rapelleront peut être!) Il me semble essentiel pour moi de livrer ses sources pour de petites applications, de cette manière les plus passionnés pourront progresser (même pour les plus désargentés, ce qui n'est pas rare dans notre profession de DAO voir la discussion sur les salaires) :mad: Et je trouve que ce sont les utilisateurs qui sont le plus à même de personnaliser cet formidable outil qu'est AutoCad. On connait nos besoins, ce qui n'est pas forcément le cas de développeurs payé pour fabriquer un produit, par contre nous n'avons pas ou peu la culture et le temps pour faire ce genre de chose. Y a pas comme un HIC ??? Concernant la routine, elle ne modifie pas une entité existante sur un calque verrouilé (ce qui serait refusé), mais pompe les infos pour en créer une nouvelle, ce qui n'est pas incompatible avec un calque verrouillé. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
LFA Posté(e) le 6 juillet 2005 Posté(e) le 6 juillet 2005 re, oui bonuscad , ta source va me permettre de l'adapter à INTELLIDESK et INTELLICADMerci, pour le calque vérrouillé laisse tomber, cc'est normal Laurent Falla Venez visiter mon site, c' est gratuit :) http://www.lfaconsulting.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