miamar Posté(e) le 27 décembre 2004 Posté(e) le 27 décembre 2004 Bonjour à tous, et joyeux noel, et bonnes fêtes. Est-il possible de sélectionner (parmi un ensemble d'objets) les objets qui se trouvent à l'extérieur d'une polyligne (entièrement à l'exterieur) en sélectionnat cette polyligne. Merci
didier Posté(e) le 27 décembre 2004 Posté(e) le 27 décembre 2004 bonsoir,je ne connais pas ton niveau en Lisp,donc je vais te donner le mode opératoire,à toi de l'écrire,si tu n'y arrives pas, reviens me voir, ou nous voiron te guidera.donc, en l'occurence,il va falloir faire un jeu de sélectionavec choix de polyligneet inverser la sélection ensuite.(ssget "_WP" p1 p2 p3 etc...) amicalement Éternel débutant… Mon site perso : Programmer dans AutoCAD
Serge Posté(e) le 28 décembre 2004 Posté(e) le 28 décembre 2004 Miamar, Voici la réponse donnée à Badis sur le forum d'Autodesk (coïncidence : est-ce que tu es Badis?) Voici un exemple. L'idée est d'utiliser une fonction qui retourne les sommets. Après on peut utiliser le mode _WP (Window Polygon) ou _CP (Crossing Polygon) et l'option Remove (defun c:test ( / ename) (setq ename (car (entsel "\nMontrez une polyligne: "))) (command "_erase" "_all" "_remove" (ssget "_cp" (getVertices ename)) "") (princ)) (defun getVertices ( ename / plineGet return vertex vertexGet ) (setq return nil) (cond ((or (/= (type ename) 'ENAME) (not (setq plineGet (entget ename)))) (setq return nil)) ((= "POLYLINE" (cdr (assoc 0 plineGet))) (setq vertex (entnext ename)) (while (= "VERTEX" (cdr (assoc 0 (setq vertexGet (entget vertex))))) (setq return (cons (cdr (assoc 10 vertexGet)) return)) (setq vertex (entnext vertex)) ) (setq return (reverse return)) ) ((= "LWPOLYLINE" (cdr (assoc 0 plineGet))) (setq return (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) plineGet))) ) (t (setq return nil)) ) return) Serge
miamar Posté(e) le 30 décembre 2004 Auteur Posté(e) le 30 décembre 2004 Bonjour, Non je ne suis pas badis.J'ai consulté le forum d'autodesk, le problème est quelque peu différents par rapport au mien mais il y a quelques similitudes. Merci beaucoup pour vos réponses, je vais tester et te dirai si j'ai d'autres problèmes.Merci infiniment à tout le monde @+
miamar Posté(e) le 31 décembre 2004 Auteur Posté(e) le 31 décembre 2004 Bonjour Serge, Ta routine marche impécablement seulement elle me supprime tous les objets qui se trouve à l'extérieur de la polyligne, moi je voudrais pouvoir l'appliquer seulement sur une sélection d'objets (cf mon premier message). Deuxième chose je l'ai appliqué sur une polyligne qui contient un arc, elle génère une erreur, elle n'est pas faite pour les courbes c'est bien ça? est-ce que pour les polylignes courbes c'est plus complexes? Merci infiniment.
miamar Posté(e) le 1 janvier 2005 Auteur Posté(e) le 1 janvier 2005 Au fait, ce que je veux ce n'est pas spécialement supprimer (mais d'abord sélectionner, ensuite appliquer toute sorte de commande), mais là c'est pas grave il suffit juste de changer la commande _erase par la commande que je veux. Bonne année 2005 pour tous, pleine de bonheur et santé.
didier Posté(e) le 1 janvier 2005 Posté(e) le 1 janvier 2005 bonjour,il faut faire attention au fait que le mode de sélection _ALLprend en compte TOUTES les entités du fichier,même celles qui sont dans calques inactifs, voire gelésil va falloir mettre un filtre sur l'état du calque si tu veux les exclure.amicalement [Edité le 1/1/2005 par didier] Éternel débutant… Mon site perso : Programmer dans AutoCAD
miamar Posté(e) le 3 janvier 2005 Auteur Posté(e) le 3 janvier 2005 Merci Didier,et pour les polylignes non rectilignes?Merci
tiboulen Posté(e) le 23 février 2005 Posté(e) le 23 février 2005 salutun jour j'ai trouve cette routine sur le net et qui marche mais je n el'ai pas analisée (defun C:REV (/ olderr cmde blip ltsc cclr snap pwid pgenen1 nam ent p obj ltp clr lts wid flgs first final next spl cur vert a clos zoomit clyr lyr) (setq olderr *error*) (defun *error* (x) (setvar "cmdecho" cmde) (setvar "blipmode" blip) (setvar "osmode" snap) (setvar "celtscale" ltsc) (setvar "cecolor" cclr) (setvar "plinewid" pwid) (setvar "plinegen" pgen) (setq *error* olderr) (princ) ) ;; end of *error* function (setq cmde (getvar "cmdecho") blip (getvar "blipmode") ltsc (getvar "celtscale") cclr (getvar "cecolor") snap (getvar "osmode") pwid (getvar "plinewid") clyr (getvar "clayer") pgen (getvar "plinegen")) (setvar "cmdecho" 0) (setvar "blipmode" 0) (setvar "osmode" 0) (setvar "plinewid" 0) (setvar "plinegen" 1) (command "_.undo" "_be") (while (null (setq en1 (entsel "\nPick an object to reverse: ")))) (setq nam (car en1) ent (entget nam) p (cadr en1) obj (cdr (assoc 0 ent))) (cond ((= obj "CIRCLE") (setq ctr (cdr (assoc 10 ent)) dia (* 2.0 (cdr (assoc 40 ent))) a (angle p ctr)) (command "_.break" p (polar p (/ pi 4) 0.001) "_.pedit" p "_y" "_c" "_x") (carc)) ((= obj "ARC") (command "_.break" p "@" "_.pedit" p "_y" "_j" nam (entlast) "" "_x") (carc)) (T nil)) (setq ltp (cdr (assoc 6 ent)) lyr (cdr (assoc 8 ent)) clr (cdr (assoc 62 ent)) lts (cdr (assoc 48 ent)) wid (cdr (assoc 40 ent)) flgs (cdr (assoc 70 ent))) (if (not ltp)(setq ltp "bylayer")) (cond ((= obj "LINE") (setq first (assoc 10 ent) final (assoc 11 ent) ent (subst (cons 10 (cdr final)) first ent) ent (subst (cons 11 (cdr first)) final ent)) (entmod ent)) ((= obj "LWPOLYLINE") (setq final (cdr (assoc 10 (setq ent (reverse ent)))) next (cdr (assoc 10 (cdr (member (assoc 10 ent) ent))))) (prev)) ((= obj "POLYLINE") (setq spl (= (logand flgs 4) 4) cur (= (logand flgs 2) 2) vert (entnext nam)) (if cur (command "_.pedit" p "_s" "")) (while (= (cdr (assoc 0 (entget (setq vert (entnext vert))))) "VERTEX") (setq next final final (cdr (assoc 10 (entget vert))))) (prev)) (T (alert "Not a REVersible object."))) (command "_.undo" "_e") (setvar "cmdecho" cmde) (setvar "blipmode" blip) (setvar "osmode" snap) (setvar "celtscale" ltsc) (setvar "cecolor" cclr) (setvar "plinewid" pwid) (setvar "plinegen" pgen) (setvar "clayer" clyr) (setq *error* olderr) (princ))(defun carc () (setq ent (entget (entlast)) nam (cdr (assoc -1 ent)) obj (cdr (assoc 0 ent))))(defun prev () (setq a (angle next final) clos (= (logand flgs 1) 1)) (if clos (command "_.pedit" nam "_o" "")) (setq zoomit (null (ssget "c" final final))) (if zoomit (command "_.zoom" "_c" final "")) (if clr (command "_.color" clr)) (if lts (setvar "celtscale" lts)) (setvar "clayer" lyr); (setvar "celtype" ltp) (command "_.pline" (polar final a 0.0001) final "" "_.chprop" (entlast) "" "_lt" ltp "" "_.pedit" (entlast) "_j" nam "" "" "_.break" final (polar final a 0.001)) (if cur (command "_.pedit" (entlast) "_f" "")) (if spl (command "_.pedit" (entlast) "_s" "")) (if clos (command "_.pedit" (entlast) "_c" "")) (if wid (command "_.pedit" (entlast) "_w" wid "")) (if zoomit (command "_.zoom" "_p")))(alert (strcat "REV.LSP © 1999-2001 Tee Square Graphics\n\n" " Type REV to begin."))(princ)
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