Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 04/11/2014 dans toutes les zones

  1. Pendant la pause déjeuner j'ai essayer d'intégrer le "U" pour l'annulation. J'ai du revoir un peu le montage du code pour cela, le pan ou le zoom avec la roulette reste toujours un problème avec (grread): l'appui sur la molette n'est pas reconnu, donc je ne peux pas l'identifier... Donc éviter au maximum l'usage de la roulette, maintenant le U permettra quand même d'annuler les segments générés pendant l'usage de celle-ci Il faut quand même une bonne dextérité pour l'usage, mais ça à l'air de fonctionner. Pour l'annulation l'appui sur la touche "U" suffit: NE PAS FAIRE ENTREE pour valider. Le code résultant: (defun round (num prec) (if (zerop (setq prec (abs prec))) num (* prec (fix ((if (minusp num) - +) (/ num prec) 0.5))) ) ) (defun c:test ( / p1 p2 key pt_sel ss ent obj_lw param_pt new_param pt lst_pt lst_gr) (initget 1) (setq p1 (getpoint "\nPoint de départ: ") new_param nil ent nil lst_pt nil lst_gr nil ) (while (and (setq key (grread T 4 0)) (not (member key '((2 13) (2 32)))) (/= (car key) 25)) (cond ((eq (car key) 5) (setq pt_sel (osnap (list (caadr key) (cadadr key)) "_near") ) (if pt_sel (progn (setq ss (ssget "_C" pt_sel pt_sel '((0 . "LWPOLYLINE")))) (if ss (setq ent (ssname ss 0))) ) ) (cond (ent (setq obj_lw (vlax-ename->vla-object ent) pt_sel (vlax-curve-getClosestPointTo obj_lw (trans (cadr key) 1 0)) ) (cond (pt_sel (setq param_pt (vlax-curve-getParamAtPoint obj_lw pt_sel) param_pt (round param_pt 1.0) ) (cond (new_param (setq pt (vlax-curve-getPointAtParam obj_lw param_pt)) (if (and (not (eq param_pt new_param)) (not (member pt lst_pt))) (progn (setq lst_pt (cons (trans pt 0 1) lst_pt)) (setq p2 (trans pt 0 1)) (setq lst_gr (append (cons 1 (list p1 p2)) lst_gr)) (grvecs lst_gr) (setq p1 p2) ) ) ) ) (setq new_param param_pt) ) ) ) ) ) ((member key '((2 117)(2 85))) (if lst_gr (setq lst_gr (cdddr lst_gr) lst_pt (cdr lst_pt) p1 (car lst_pt) ) ) (redraw) (grvecs lst_gr) ) (T (if lst_gr (grvecs lst_gr)) ) ) ) (redraw) (cond (lst_pt (setvar "CMDECHO" 0) (command "_.pline") (foreach n lst_pt (command "_none" n)) (command "") (setvar "CMDECHO" 1) (sssetfirst nil (ssadd (entlast))) ) ) (prin1) )
    1 point
×
×
  • 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é