Topheur Posté(e) le 10 septembre 2016 Posté(e) le 10 septembre 2016 Bonjour à tous, Je viens vers vous car je me trouve face à un problème de rapidité :wacko: . En effet, j'ai des spline et des polyligne tracé sur un dessin.J'aimerais connaître la longueur la plus courte de cette dernière (spline OU polyligne). Je m'explique, la longueur en ligne droite entre le premier et le dernier point de la spline ou de la polyligne et non la longueur réelle de cette dernière. A l'heure d'aujourd'hui :- Je transforme mes splines en polyligne (via le clic droit)- Puis (toujours via le clic droit), je joint.- Ensuite j'utilise la commande _explode- Et je supprime les lignes qui composées la polyligne pour ne garder que la ligne droite (un boulo de Titan quoi). Du coup, je me disais qu'un petit lisp élaboré par les experts du forum me permettrais de gagner ENORMEMENT de temps ;) . Merci à tous ceux qui pourrons m'aider. Citer
didier Posté(e) le 10 septembre 2016 Posté(e) le 10 septembre 2016 Coucou Deux façons de faire :Te taper à la main le code dont voici l'image pour te familiariser avec le codage en lispTélécharger le fichier en pièce jointe C'est selon si tu veux apprendre ou seulement te servir d'un lisp sans souhaiter apprendre la programmation Dans les deux cas la commande est topheur01 Amicalementcadxp_dist_pdep_pfin.LSP Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
Topheur Posté(e) le 11 septembre 2016 Auteur Posté(e) le 11 septembre 2016 Bonsoir Didier, Je vais dans un premier temps charger le fichier pour le tester et si il me conviens, je le regarderais plus en détail car j'avais d'autre chose à intégrer comme la gestion des calques et l'ajout d'attribut mais ça je bricole un peu et je veux essayer seul. En réalité, je préfèrerais faire mes lisp tous seul mais j'avoue ne pas avoir beaucoup de temps en ce moment pour apprendre ce langage. Je te tiens au courant pour mon retour d'expérience et en cas de problème pour modifier le lisp. Bonne soirée Citer
Topheur Posté(e) le 14 septembre 2016 Auteur Posté(e) le 14 septembre 2016 Re-bonsoir Didier :P J'ai pris le temps de regarder et d'essayé de comprendre ton code.Je l'ai modifié pour incorporer des données supplémentaires (et apprendre la programmation en lisp).J'ai réussi à tracer une ligne physique et inscrire la valeur de la ligne au centre. Maintenant j'aimerais pouvoir sélectionner plusieurs polyligne et que mon lisp s'exécute automatiquement (pour éviter de cliquer sur mes polylignes une par une). Merci d'avance. PS : mon code actuel(defun c:Topher (/ pt1 pt2 dep ang obj pdep pfin) ;Création du calque si il n'existe pas pour séparer les infos (command "calque" "E" "@_Lg_Poly" "") ;Code pour la Mediatrice (vl-load-com) (setq obj (vlax-ename->vla-object (car (entsel "objet"))) pdep (vlax-curve-getstartpoint Obj) pfin (vlax-curve-getendpoint Obj) ) ;Code pour le calcul de la longueur ligne polyligne (vl-load-com) (setq obj (vlax-ename->vla-object (car (entsel "objet"))) pdep (vlax-curve-getstartpoint Obj) pfin (vlax-curve-getendpoint Obj) ) ;Trace une ligne virtuelle en rouge ;(grdraw pdep pfin 1) ;Trace la ligne physique (command "ligne" pdep pfin "") ;Calcul longueur ligne (setq LL (rtos (distance pdep pfin))) ;Cherche la médiatrice de la ligne pour placer la distance au milieu de la ligne (if (equal (caddr pdep) (caddr pfin) 1e-009) (progn (setq dep (mapcar (function (lambda (x1 x2) (/ (+ x1 x2) 2))) pdep pfin) ang (+ (angle dep pdep) (/ pi 2)) ) (vl-cmdf "texte" "_non" dep (strcat "<" (angtos ang (getvar "AUNITS") 15)) 20 "" LL) ) (prompt "Les points ne sont pas dans un plan parallèle au plan du SCU courant." ) ) (princ) ) 0 Recherche Citer
Messages recommandés