Aller au contenu

Relier des points topo en polyligne 3D


yusukens82

Messages recommandés

Bonjour,

 

après recherche dans le forum j'ai trouvé un LISP crée par Gile qui est super, il sert a relier plusieurs points topo selon numéro de matricule.

le souci et qu'on doit rentrer chaque numéro un par un si on veut tous les reliers ensemble.

 

le lien :

http://www.cadxp.com/XForum+print-fid-101-tid-19440.html?POSTNUKESID=7746084bd529ee387f8cea55f40d8d52

 

Quelqu'un pourait m'aider à l'adapter autrement ?

plutôt que de relier 2 matricules, j'aimerai par exemple : rentrer le num de matricule le plus bas puis le plus haut, ensuite le lisp va me relier chaque point topo entre (à la suite) avec une polyligne 3D.

 

Merci

 

 

 

[Edité le 5/8/2008 par yusukens82]

Lien vers le commentaire
Partager sur d’autres sites

Une adaptation de la routine de (gile) (très rapide, j'ai simplifié la routine et pas fais vraiment de controle d'erreurs)

 

(defun c:matricule (/ mat mlst ss n bloc att lst opt cnt ind inds indf pt)

(if (and

(setq mat (car (nentsel "\nSélectionnez un matricule: ")))

(setq mlst (entget mat))

(= "ATTRIB" (cdr (assoc 0 mlst)))

(= (type (read (cdr (assoc 1 mlst)))) 'INT)

(setq ss (ssget "_X"

(list '(0 . "INSERT")

(assoc 2 (entget (cdr (assoc 330 mlst))))

)

)

)

)

(progn

(repeat (setq n (sslength ss))

(setq bloc (ssname ss (setq n (1- n)))

att (entnext bloc)

)

(while (not (equal (assoc 2 (entget att)) (assoc 2 mlst)))

(setq att (entnext att))

)

(setq lst (cons (cons (atoi (cdr (assoc 1 (entget att))))

(trans (cdr (assoc 10 (entget bloc))) bloc 1)

)

lst

)

)

)

(initget "2d 3d")

(setq opt (getkword

"\nSpécifiez le type de polyligne [2d/3d] < Quitter >: "

))

(setvar "CMDECHO" 0)

(cond

((= opt "2d") (command "_pline"))

((= opt "3d") (command "_3dpoly"))

(T (command))

)

(setq inds (getint "\nEntrez le matricule du point de départ: "))

(setq indf (getint "\nEntrez le matricule du point de fin: ") ind inds)

(repeat (1+ (- indf inds))

(cond

((setq pt (cdr (assoc ind lst)))

(command "_non" pt)

)

(T

(princ "\nMatricule non valide.")

)

)

(setq ind (1+ ind))

)

(command "")

(setvar "CMDECHO" 1)

)

)

(princ)

)

 

 

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

  • 3 semaines aprè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 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é