Aller au contenu

Plagiat de la gomme dynamique de Patrick


bonuscad

Messages recommandés

La routine gomme.lsp de 1998 de Patrick Emmin qui est sous forme cryptée, a sussicté mon intêret. ;)

A l'époque cette routine était fortement interressante car les option Trajet Capture et Fenêtre polygonale n'existaient pas.

Maintenant son utilité est moindre, quoique ....?!

 

J'ai donc plagié son idée (pas son code: il est crypté !...)

Mon but n'était pas de réecrire la fonction, mais de voir si je pouvais m'en servir pour autre chose.

En voici le résultat:

 

(defun C:GOMME ( / tmp cod_rub e_sel)

(defun draw_pt (pt / pt1 pt2 pt3 pt4)

(setq

rap (/ (getvar "viewsize") 50)

pt1 (list (+ (car pt) rap) (+ (cadr pt) rap))

pt2 (list (+ (car pt) rap) (- (cadr pt) rap))

pt3 (list (- (car pt) rap) (- (cadr pt) rap))

pt4 (list (- (car pt) rap) (+ (cadr pt) rap))

)

(grdraw pt pt1 -1)

(grdraw pt pt2 -1)

(grdraw pt pt3 -1)

(grdraw pt pt4 -1)

)

(princ "\n[Click-Gauche]: Effacement Actif/Inactif [Click-Droit]: Quitte la gomme dynamique ")

(princ "\nGomme <>")

(while (or (= 5 (car (setq tmp (grread t 5 2)))) (= 3 (car tmp)))

(if cod_rub (draw_pt (cadr tmp)))

(cond

((= 3 (car tmp))

(if (null cod_rub)

(progn

(setq cod_rub T)

(princ "\nGomme <>")

)

(progn

(setq cod_rub nil)

(princ "\nGomme <>")

)

)

)

((= 5 (car tmp))

(cond

((and cod_rub (setq e_sel (nentselp (cadr tmp))))

(cond

((eq 'ENAME (type (car (last e_sel))))

(entdel (car (last e_sel)))

)

((eq "VERTEX" (cdr (assoc 0 (entget (car e_sel)))))

(entdel (cdr (assoc 330 (entget (car e_sel)))))

)

(T (entdel (car e_sel)))

)

)

(T nil)

)

)

(T (princ "\nArrêt anormal de la commande "))

)

)

(princ "\nCommande terminée. ")

(prin1)

)

 

De cela j'ai pensé en faire ceci:

 

(defun C:ID3DYN ( / tmp cod_rub e_sel p)

(defun draw_pt (pt / pt1 pt2 pt3 pt4)

(setq

rap (/ (getvar "viewsize") 50)

pt1 (list (+ (car pt) rap) (+ (cadr pt) rap))

pt2 (list (+ (car pt) rap) (- (cadr pt) rap))

pt3 (list (- (car pt) rap) (- (cadr pt) rap))

pt4 (list (- (car pt) rap) (+ (cadr pt) rap))

)

(grdraw pt pt1 -3)

(grdraw pt pt2 -3)

(grdraw pt pt3 -3)

(grdraw pt pt4 -3)

)

(princ "\n[Click-Gauche]: Identification 3D Actif/Inactif [Click-Droit]: Quitte la commande ")

(princ "\nID3Dyn <>")

(while (or (= 5 (car (setq tmp (grread t 5 2)))) (= 3 (car tmp)))

(if cod_rub (draw_pt (cadr tmp)))

(cond

((= 3 (car tmp))

(if (null cod_rub)

(progn

(setq cod_rub T)

(princ "\nID3Dyn <>")

)

(progn

(setq cod_rub nil)

(princ "\nID3Dyn <>")

)

)

)

((= 5 (car tmp))

(cond

((and cod_rub (setq e_sel (nentselp (cadr tmp))))

(setq p (osnap (cadr e_sel) "_near"))

(cond

(p

(setq p (trans p 1 0))

(grtext -2

(strcat

(rtos (car p))

","

(rtos (cadr p))

","

(rtos (caddr p))

)

)

)

(grtext -2 "")

)

)

(T nil)

)

)

(T (princ "\nArrêt anormal de la commande "))

)

)

(grtext -2 "")

(princ "\nMode interrogation point 3D en dynamique terminé. ")

(prin1)

)

 

Merci à Patrick pour l'idée, et bravo pour son code d'origine qui fonctionne encore sur 2002 sans aucune retouche malgré les version successives d'Autocad (preuve qu'il est bien écrit). Mais je pense que j'ai eu plus de facilité car j'ai pu utiliser la fonction (nentselp) qui je pense n'existait pas lors de la conception du code d'origine.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Tiens je m'en rappelais même plus de la gomme... J'avais dû l'effacer de ma mémoire, c'est la preuve qu'elle marchait bien!

 

Elle avait été plagiée point par point (même fonctionnalités, même options à la ligne de commande), il y a un an environ par une société australienne avec laquelle j'avais eu quelques discussions vives... et puis j'ai laissé tomber...

 

Content de voir que le concept sert encore.

 

Elle avait été développée pour nettoyer des plans vectorisés, et ceux qui ont eu à le faire trouveront encore une utilité à cette gomme! ;)

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité