Aller au contenu

Incrementer Fenetre de sélection pour effacer des données


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

 

Posté(e)

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/

Posté(e)

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/

Posté(e)

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

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é