• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Suppression des doubles points

  • Auteur du sujet Auteur du sujet tizianost
  • Date de début Date de début

tizianost

Guest
bonjour tout le monde, j'essaie dans mon troisième script en lisp et comme d'habitude je suis coincé, j'espère que vous pouvez m'aider.

avec le code ci-dessous, je voudrais supprimer d'un design donné tous les objets "point" recoupés, je sais qu'il y a une fonction similaire dans le menu express mais je voudrais un script qui fonctionne sur n'importe quel autocad même sans ce menu.


(setq group (ssget "x")); sélectionner tous les éléments de la conception
(setq nent (1- (groupe de longueur));
(setq i 1); empêche les cycles sans fin
(et (> nent -1) (< i 1000000) ; cycle pour tous les éléments
; extrait le nom de l'élément
(élément seq (entget ent)); extrait l'élément "ent" de la base de données
;(imprimer i)
(setq tipoent (cdr (assoc 0 élément)))
(imprimer le tipoent)

(si)
(progrès)
(setq nent2 nent)
(setq j 0)
(et (> nent2 -1) (< j 1000000)
(setq ent2 (nom du groupe nent2) ; extrait le nom de l'élément
(élément setq2 (entget ent2) ; extrait l'élément "ent" de la base de données


(si (/= (cdr (associé -1 élément)) (cdr(associé -1 élément2)) ; vérifier que ce n'est pas le même objet)
(progrès)
(impression (cdr (assoc -1 élément))
(impression (cdr (assoc -1 élément2))
(coordonnée de setq1 (cdr (élément d'assoc 10)))
(coordonnée de setq2 (élément cdr 102))

(si (= coordonnées1) ; si le second objet a les mêmes coordonnées que le premier...(progrès)
(entrée)
(imprimer "éliminer")
(setq group (ssget "x")) ; reconstituer tous les éléments de la conception
(setq nent (1- (groupe de longueur));
) ;
(progrès)
(imprimer "objet avec des coorinates différents")
(empreinte (coordonnées de voiture1))
(empreinte (coordonnée de voiture2))
) ;
) ;
) ;
) ;

(setq j (1+ j)
(setq nent2 (1- nent2)
) ; fin du temps
) ;
) ;

(setq i (1+ i))
(setq nent (1- nent))

) ; fin du temps


après des tentatives sans fin sont venues à croire que les erreurs sont dans les fonctions si elles ne parviennent pas à comparer les listes de coordonnées et d'entités (je me trompe)

merci d'avance.
bonjour.
titien
 
coordonnées de confrontation cosine:
(et (= (car pt1) (car pt2)) (= (cr pt1) (cd pt2)) (= (cd pt1) (cd pt2))

au revoir.
 
(si (= coordonnées 1 coordonnées 2)) ; a un support supplémentaire

pour que les valeurs puissent être vérifiées, vous devez utiliser la méthode de rpor66 ou écrire le code:
(si)égal coordonnées1 coordonnées2

ainsi le lisp tourne, mais supprime tous les points comme il le fait toujours vérifier sur le même point (chaque point est clairement égal à lui-même), vous devez alors changer:
(setq nent2 nent)
en
(setq nent2 (1 à) réponses))il devrait donc fonctionner:
HTML:
(setq group (ssget "x")); sélectionner tous les éléments de la conception
(setq nent (1- (groupe de longueur));
(setq i 1); empêche les cycles sans fin
(et (> nent -1) (< i 1000000)
; cycle pour tous les éléments
; extrait le nom de l'élément
(élément seq (entget ent)); extrait l'élément "ent" de la base de données
;(imprimer i)
(setq tipoent (cdr (assoc 0 élément)))
(imprimer le tipoent)

(si)
(progrès)
(setq nent2 (1- nent)
(setq j 0)
(et (> nent2 -1) (< j 1000000)
(setq ent2 (nom du groupe nent2) ; extrait le nom de l'élément
(élément setq2 (entget ent2) ; extrait l'élément "ent" de la base de données

(si (/= (cdr (assoc -1 élément))
(cdr (assoc -1 élément2)
) ; vérifier que ce n'est pas le même objet
(progrès)
(impression (cdr (assoc -1 élément))
(impression (cdr (assoc -1 élément2))
(coordonnée de setq1 (cdr (élément d'assoc 10)))
(coordonnée de setq2 (élément cdr 102))

(si (coordonnées égales1 coordonnées2)
; si le second objet a les mêmes coordonnées que le premier...
(progrès)
(entrée)
(imprimer "éliminer")
(setq group (ssget "x")); réapprovisionner tous les éléments de la conception
(setq nent (1- (groupe de longueur));
) ;
(progrès)
(imprimer "objet avec des coorinates différents")
(empreinte (coordonnées de voiture1))
(empreinte (coordonnée de voiture2))
) ;
) ;
) ;
) ;

(setq j (1+ j)
(setq nent2 (1- nent2)
) ; fin du temps
) ;
) ;

(setq i (1+ i))
(setq nent (1- nent))

) ; fin du temps
si vous développez d'autres lisp, pour la sélection des objets (dans ce cas les points) vous devez utiliser le code "direct":

(groupe setq)

de cette façon tous les points sont sélectionnés, sans avoir à faire défiler le groupe de sélection à la recherche d'eux.
 
Bonsoir.
J'aurais ce problème :
avec le genero civildesign des points en coordonnées, mais il arrive plusieurs fois que je nomme deux ou plusieurs points avec le même nom et dans l'exportation je voudrais souligner la même chose.
Quelqu'un peut m'aider ?
Je vous remercie.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut