lovecraft Posté(e) le 8 mars 2013 Posté(e) le 8 mars 2013 Bonjour à tous, je rencontre un problème dans un fichier lisp que j'essai de créer Je voudrais effacer des données qui se trouvent dans une fenêtre de sélection et l’incrémenter en colonne. Vous trouverez ci-dessous le bout de code que j'essai de réaliser. Merci de votre aide (defun c:ef-cote(/ pt1 pt2 x1 x2 y1 y2 deltax distp sset) (setq pt1 (getpoint "\n Cliquer le premier point:" )) (setq x1 (car pt1)) (setq y1 (cadr pt1)) (setq pt2 (getpoint "\n Cliquer le second:" )) (setq x2 (car pt2)) (setq y2 (cadr pt2)) (setq deltax (- x2 x1)) (setq distp (getdist pt1 "\n Cliquer le second point du profil:")) (command "zoom" "et") (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") (repeat 5 ;(setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) ;(command "effacer" sset "") (setq pt1 (list x1 (- y1 distp))) (setq pt2 (list x2 (- y2 distp))) (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") ); fin du repeat ); fin du defun Cordialement, Laurent http://www.youtube.com/user/CADMINATOR?feature=mhee
lovecraft Posté(e) le 8 mars 2013 Auteur Posté(e) le 8 mars 2013 Bonjour à tous, je rencontre un problème dans un fichier lisp que j'essai de créer Je voudrais effacer des données qui se trouvent dans une fenêtre de sélection et l’incrémenter en colonne. Vous trouverez ci-dessous le bout de code que j'essai de réaliser. Merci de votre aide (defun c:ef-cote(/ pt1 pt2 x1 x2 y1 y2 deltax distp sset) (setq pt1 (getpoint "\n Cliquer le premier point:" )) (setq x1 (car pt1)) (setq y1 (cadr pt1)) (setq pt2 (getpoint "\n Cliquer le second:" )) (setq x2 (car pt2)) (setq y2 (cadr pt2)) (setq deltax (- x2 x1)) (setq distp (getdist pt1 "\n Cliquer le second point du profil:")) (command "zoom" "et") (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") (repeat 5 ;(setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) ;(command "effacer" sset "") (setq pt1 (list x1 (- y1 distp))) (setq pt2 (list x2 (- y2 distp))) (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") ); fin du repeat ); fin du defun Cordialement, Ci-joint le fichier pour tester https://docs.google....dit?usp=sharing Laurent http://www.youtube.com/user/CADMINATOR?feature=mhee
lovecraft Posté(e) le 8 mars 2013 Auteur Posté(e) le 8 mars 2013 re, Bon j'ai enfin réussi... je ne devais pas être dans un état normal ;) ci-dessous le code pour ceux que ça interresse. (defun c:ef-cote(/ pt1 pt2 x1 x2 y1 y2 deltax distp sset) (setq pt1 (getpoint "\n Cliquer le premier point:" )) (setq x1 (car pt1)) (setq y1 (cadr pt1)) (setq pt2 (getpoint "\n Cliquer le second de la fenetre:" )) (setq x2 (car pt2)) (setq y2 (cadr pt2)) (setq deltax (- x2 x1)) (setq distp (getdist pt1 "\n Cliquer le second point du profil:")) (setq nbr (getint "\n Entrer le nombres de profil à effacer:")) (command "zoom" "et") (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") (repeat nbr (setq pt1 (list (car pt1) (- (cadr pt1) distp))) (setq pt2 (list (car pt2) (- (cadr pt2) distp))) (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") ); fin du repeat ); fin du defun http://www.youtube.com/user/CADMINATOR?feature=mhee
lili2006 Posté(e) le 8 mars 2013 Posté(e) le 8 mars 2013 Bonjour à toutes et tous, salut Laurent, C'est cool de se faire les questions/réponses,...:D Pourquoi un lisp pour faire ça alors qu'on peut le faire par la commande "effacer" ? De plus, la ligne supérieure disparait aussi si on sélectionne les points représentés sur ton plan => Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lovecraft Posté(e) le 8 mars 2013 Auteur Posté(e) le 8 mars 2013 Bonsoir lili2006, Oui effectivement la commande effacer fonctionne. mais mon programme traite l'ensemble des profils (imagine de réaliser l'opération sur 150 profils ....). En ce qui concerne la ligne supérieur: Ce n'est pas un problème car c'est ce que je recherche. Cordialement, Laurent PS: HI mon 1000 message http://www.youtube.com/user/CADMINATOR?feature=mhee
lili2006 Posté(e) le 9 mars 2013 Posté(e) le 9 mars 2013 Re, Salut Laurent, mais mon programme traite l'ensemble des profils (imagine de réaliser l'opération sur 150 profils ....). Oui, j'avais vu la dernière commande "Nombre de profils à effacer", j'ai alors rentré trois pour ton exemple, et rien ne se passe pour les autres profils,... Mais je pense que je n'ai pas compris le fonctionnement de ton lisp,..:huh: Quel est la différence entre le choix du second point (Fenêtre et/ou Profils ?!!) ? Commande: EF-COTE Cliquer le premier point: Cliquer le second de la fenetre: Cliquer le second point du profil: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Olivier Eckmann Posté(e) le 9 mars 2013 Posté(e) le 9 mars 2013 Bonjour,Si j'ai tout bien compris, le but c'est d'effacer une partie du profil (quelques lignes du bandeau) => la zone rectangulaire définie par les 2 premiers points et de répéter cette fenêtre sur X profils en définissant l'équidistance verticale entre 2 profils => distance calculée entre le 1er point et le 3ème cliqué. Juste pour affiner j'aurais encapsulé la commande effacer par un IF au cas où le jeu de sélection serait vide (pas d'élément dans la zone ou un nombre trop important de profil tapé et tu effaces dans le vide) (if (setq sset (ssget "_W" pt1 pt2 '((0 . "*")))) (command "effacer" sset "") ) Olivier
lili2006 Posté(e) le 9 mars 2013 Posté(e) le 9 mars 2013 Re, Oui, merci Olivier, je n'ai compris que par la suite le fonctionnement du prog. (qui ne pouvait être que celui ci d'ailleurs,...c'était très clair de la part de Laurent,...;)) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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