Aller au contenu

Commande Extrim


marionsname

Messages recommandés

Bonjour à tous,

J'utilise la commande Superhachure (qui n'a pas évolué depuis la version 2000, j'ai verifié sur la 2009) et qui m'est très utile, mais comme j'exporte le plus souvent mes dessins vers des logiciels comme Corel Draw et Illustrator, je suis obligé de décomposer la zone de remplissage de superhachure et d'utiliser la commande Extrim pour ajuster les objets (le plus souvent des lignes) et de supprimer toutes les lignes à l'extérieur du contour de remplissage avant d'exporter vers Corel Draw ou illustrator, ce qui me triple le temps de travail. Dés fois meme ca devient une galère.

Est-ce que quelqu'un a une solution à cette question, via une routine lisp ou une adaptation du lisp des superhachures.

Merci beaucoup pour votre aide :)

Lien vers le commentaire
Partager sur d’autres sites

A une époque un membre avait eu la même demande que toi, je crois me souvenir que son pseudo était miamar.

 

J'avais réussi à lui pondre quelque chose qui lui avait convenu.

Malheureusement cela faisait appel un ARX de Kamal Boutora (QBrick)

 

Cet Arx ne sera pas compatible avec la 2009...

 

Tu de devrais faire une recherche sur le net (sur CADxp ou aillieurs) d'une application qui ferait la même chose (sectionner toute les entité se situant sur un contour)

 

Après je pense qu'une routine de sélection de (gile) ferait très bien l'affaire.

 

Vois ce que tu pourrais trouver...

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

Bonjour Bonuscad,

Merci pour les indications précédentes. J'ai lu tous les msg, et je n'ai pas trouvé de solution, mais des idées oui.

Miamar, si tu as résolu ton problème, je voudrais bien que tu m'aides. J'en ai vraiment besoin.

Bonuscad,

Mon niveau dans lisp est bien trop inférieur sinon basic, je suis incappable de faire ça tout seul, mais toi je pense que tu peux facilement le faire :) .

L'idée serait de :

- prendre le dernier objet crée (hachure de remplissage), de le décomposer et de supprimer tous les objets de cette sélection qui sont entièrement à l'extérieur du contour (polyligne) via ssoc et inv_sel de gile par exemple (je ne sais pas si ce lisp de gile peut agir sur un jeu de sélection seulement!)

- d'appliquer la commande Extrim sur les objets qui restent (du jeu de sélection) en choisissant comme frontière le contour de sélection. Comment prendre ce contour? Aucune idée, peut être en agissant sur le lisp des superhachures, en rajoutant une commande contour qui permet de créer une polyligne en piquant un point.

Bonuscad, si tu peux m'aider la dessus, ce serait inoubliable.

Je continue de charcher ailleurs, si je trouve quelque chose, je vous ferais signe.

Merci beaucoup :P

 

 

[Edité le 9/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

je pense que tu peux facilement le faire

 

Ce n'est pas si facile que ça...

Si ton dessin est mal structuré, si tu as des contours arrondis et d'autres contraintes qui ne me viennent pas à l'esprit, cela devient galère d'automatiser.

 

Miamar n'a plus l'air de fréquenter le site depuis longtemps,

dernière visite le 27/5/2005

 

Je crois qu'il faisait une utilisation d'autocad, à l'époque, pour un carreleur. Superhatch répondait à son besoin de d'avoir un dallage réaliste de ses carrelages utilisés et de quantifier ses besoins.

 

Pour l'export les WIPEOUT créé par superhacht le gênait, tout comme toi!

 

Extrim te fais déjà pas mal de boulot, si ton dessin est bien structuré, par des sélections bien menées ils peut être facile d'enlever le reste.

 

exemple:

 

 

Commande: _.select

 

Choix des objets: _cp

 

Premier point du polygone: -> polygone extérieur

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]: 52 trouvé(s)

 

Choix des objets: _remove -> mode soustraction

Supprimer les objets: _cp

Premier point du polygone: ->polygone intérieur

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]: 12 trouvé(s), 12 supprimé(s),

40 au total

 

Supprimer les objets:

Commande: _.ERASE

Choix des objets: _previous 40 trouvé(s)

 

Choix des objets:

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

Merci Bonuscad,

 

Effectivement Extrim fait pas mal de boulot, mais ça reste une galère, d'où le besoin d'automatiser. Car je suis le plus souvent obligé de fermer tous les calques qui contiennent des objets (autres que mes dessins de hachurage) qui coupent le contour... etc. Je comprends que c'est une demande particulière, mais je suis étonné que les gens qui utilisent les superhachures ne sont pas confrontés à ce problème.

 

Si ton dessin est mal structuré, si tu as des contours arrondis et d'autres contraintes qui ne me viennent pas à l'esprit, cela devient galère d'automatiser.

 

Je ne sais pas ce que tu appelles structuré, en tous cas tous mes dessins de hachurage se trouvent tjs dans le même calque.

 

Miamar n'a plus l'air de fréquenter le site depuis longtemps,

 

Bien dommage.

 

Je crois qu'il faisait une utilisation d'autocad, à l'époque, pour un carreleur.

 

Mois je travaille dans la menuiserie.

 

citation extraite du message original:

 

Commande: _.select

 

Choix des objets: _cp

 

Premier point du polygone: -> polygone extérieur

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]: 52 trouvé(s)

 

Choix des objets: _remove -> mode soustraction

Supprimer les objets: _cp

Premier point du polygone: ->polygone intérieur

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]:

Spécifiez l'extrémité de la ligne ou [annUler]: 12 trouvé(s), 12 supprimé(s),

40 au total

 

Supprimer les objets:

Commande: _.ERASE

Choix des objets: _previous 40 trouvé(s)

 

Choix des objets:

 

Les routines de gile sont aussi très utiles, j'ai testé, mais pour automatiser!

 

J'ai 2 questions :

1- quel est le moyen pour sélectionner la zone de hachurage juste après l'exécution de la commande superhachures?

2- Comment sauvegarder le contour juste après le messagé "Spécifiez une option [options Avancées] :"?

 

une question pour gile : comment faire pour que ssoc ne s'applique qu'à une calque donné?

 

Si vous voulez que je vous envoie un fichier exemple, si necessaire vous me le dites.

Je continue de chercher.

Merci beaucoup

 

 

Lien vers le commentaire
Partager sur d’autres sites

Si vous voulez que je vous envoie un fichier exemple, si necessaire vous me le dites.

 

Tu peux toujours mettre un extrait conséquent sur un site de mise en ligne, ça donnera une idée de la faisabilité d'un code ponctuel.

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

une question pour gile : comment faire pour que ssoc ne s'applique qu'à une calque donné?

 

Voilà une version qui demande de sélectionner un objet sur le calque à filtrer avant de sélectionner l'objet pour la capture.

SelByObj doit être chargé

 

(defun c:ssocl (/ ent fr elst typ ss)
 (and
   (setq ent (car (entsel "\nSélectionnez un objet sur le calque: ")))
   (sssetfirst nil nil)
   (setq fr (car (entsel "\nSélectionnez un objet pour la capture: ")))
   (setq elst (entget fr))
   (setq typ (cdr (assoc 0 elst)))
   (or
     (= typ "CIRCLE")
     (and
(= typ "ELLIPSE")
(= (cdr (assoc 41 elst)) 0.0)
(= (cdr (assoc 42 elst)) (* 2 pi))
     )
     (and
(= typ "LWPOLYLINE")
(= 1 (logand 1 (cdr (assoc 70 elst))))
     )
   )
   (setq ss (SelByObj fr "Cp" (list (assoc 8 (entget ent)))))
   (or (ssdel fr ss) T)
   (sssetfirst nil ss)
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous et merci par avance.

 

Merci Bonuscad,

Voilà un exemple (complexité moyenne) fichier exemple.dwg, j'y ai également joint les deux dessins qui sont servi comme hachurage pour d'eventuels essais.

http://dl.free.fr/rlTc2acsH

 

Merci infiniment gile, super :) .

Il serait judicieux de le faire aussi pour inv_sel ssof sse ou de réflechir à inclure les différents modes de sélection dans une seule commande avec diverses combinaisons comme options de la ligne de commande. Et aussi de n'appliquer ceci eventuellement que pour un jeu de sélection. Pour plutard peut être ;)

 

A bientot

 

[Edité le 11/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

j'y ai également joint les deux dessins qui ont servi comme hachurage

 

Très bonne idée !

 

Ceci m'a permis de voir que ton problème peut être facilement résolu sans faire de lisp.

 

J'ai donc réécris un fichier de motif classique de hachures, ainsi tu auras les fonctionnalités liées aux hachures ;)

 

Le motif étant un peu complexe, j'ai du limiter ma définition à 4 décimales car les lignes de définitions sont limités à 80 caractères. Ceci impliquera que si le motif est loin de l'origine, un décalage risque de s'accentuer.

 

Voici le motif à enregistrer dans un fichier nommé [surligneur]MENTASS47_2.PAT [/surligneur] (pour l'instant je n'ai fait qu'un seul fichier)

RebCAO va pouvoir enrichir sa bibliothèque de hachures ;)

 

*MENTASS47_2, Motif Mentass 47-2
45,0.1502,0.2914,0.7071,0.7071,0.0880,-0.0533,0.0880,-0.3315,0.2292,-0.6244
45,0.2034,0.2693,0.7071,0.7071,0.0659,-0.0533,0.0659,-0.3756,0.1850,-0.6685
0,0.3122,0.4534,0,1,0.2344,-0.0533,0.0880,-0.1244
0,0.3343,0.4002,0,1,0.2123,-0.0533,0.0659,-0.1685
315,0.2914,0.8498,0.7071,0.7071,0.0880,-0.0533,0.0880,-0.3315,0.2292,-0.6244
315,0.2693,0.7966,0.7071,0.7071,0.0659,-0.0533,0.0659,-0.3756,0.1850,-0.6685
90,0.1502,0.0622,0,1,0.2292,-0.4173,0.0880,-0.0533,0.0880,-0.1244
90,0.2034,0.0843,0,1,0.1850,-0.4614,0.0659,-0.0533,0.0659,-0.1685
315,0.1878,0.4534,0.7071,0.7071,0.2344,-0.0533,0.0880,-1.0386
315,0.1657,0.4002,0.7071,0.7071,0.2123,-0.0533,0.0659,-1.0827
45,0.5466,0.1878,0.7071,0.7071,0.2344,-0.0533,0.0880,-1.0386
45,0.5998,0.1657,0.7071,0.7071,0.2123,-0.0533,0.0659,-1.0827
0,0.0622,0.1502,0,1,0.0880,-0.0533,0.0880,-0.4173,0.2292,-0.1244
0,0.0843,0.2034,0,1,0.0659,-0.0533,0.0659,-0.4614,0.1850,-0.1685
45,0.2914,0.1502,0.7071,0.7071,0.2292,-0.3315,0.0880,-0.0533,0.0880,-0.6244
45,0.2693,0.2034,0.7071,0.7071,0.1850,-0.3756,0.0659,-0.0533,0.0659,-0.6685
90,0.4534,0.3122,0,1,0.0880,-0.0533,0.2344,-0.1244
90,0.4002,0.3343,0,1,0.0659,-0.0533,0.2123,-0.1685
135,0.7086,0.1502,0.7071,0.7071,0.0880,-0.0533,0.0880,-0.3315,0.2292,-0.6244
135,0.7307,0.2034,0.7071,0.7071,0.0659,-0.0533,0.0659,-0.3756,0.1850,-0.6685
90,0.5466,0.3122,0,1,0.2344,-0.0533,0.0880,-0.1244
90,0.5998,0.3343,0,1,0.2123,-0.0533,0.0659,-0.1685
0,0.3122,0.5466,0,1,0.0880,-0.0533,0.2344,-0.1244
0,0.3343,0.5998,0,1,0.0659,-0.0533,0.2123,-0.1685
45,0.1878,0.5466,0.7071,0.7071,0.0880,-0.0533,0.2344,-1.0386
45,0.1657,0.5998,0.7071,0.7071,0.0659,-0.0533,0.2123,-1.0827
135,0.8122,0.5466,0.7071,0.7071,0.2344,-0.0533,0.0880,-1.0386
135,0.8343,0.5998,0.7071,0.7071,0.2123,-0.0533,0.0659,-1.0827
90,0.8498,0.0622,0,1,0.0880,-0.0533,0.0880,-0.4173,0.2292,-0.1244
90,0.7966,0.0843,0,1,0.0659,-0.0533,0.0659,-0.4614,0.1850,-0.1685
135,1.0998,0.6878,0.7071,0.7071,0.2292,-0.1244,0.0880,-0.0533,0.0880,-0.8315
135,1.0466,0.6657,0.7071,0.7071,0.1850,-0.1685,0.0659,-0.0533,0.0659,-0.8756
45,0.1502,-0.0622,0.7071,0.7071,0.2292,-0.8315,0.0880,-0.0533,0.0880,-0.1244
45,0.2034,-0.0843,0.7071,0.7071,0.1850,-0.8756,0.0659,-0.0533,0.0659,-0.1685
0,0.3122,0.0998,0,1,0.0880,-0.0533,0.2344,-0.6244
0,0.3343,0.0466,0,1,0.0659,-0.0533,0.2123,-0.6685
45,-0.0622,0.1502,0.7071,0.7071,0.0880,-0.0533,0.0880,-0.8315,0.2292,-0.1244
45,-0.0843,0.2034,0.7071,0.7071,0.0659,-0.0533,0.0659,-0.8756,0.1850,-0.1685
90,0.0998,0.3122,0,1,0.2344,-0.0533,0.0880,-0.6244
90,0.0466,0.3343,0,1,0.2123,-0.0533,0.0659,-0.6685
0,0.0622,0.8498,0,1,0.2292,-0.4173,0.0880,-0.0533,0.0880,-0.1244
0,0.0843,0.7966,0,1,0.1850,-0.4614,0.0659,-0.0533,0.0659,-0.1685
135,1.0622,0.1502,0.7071,0.7071,0.2292,-0.8315,0.0880,-0.0533,0.0880,-0.1244
135,1.0843,0.2034,0.7071,0.7071,0.1850,-0.8756,0.0659,-0.0533,0.0659,-0.1685
0,0.3122,0.9002,0,1,0.2344,-0.0533,0.0880,-0.6244
0,0.3343,0.9534,0,1,0.2123,-0.0533,0.0659,-0.6685
90,0.9002,0.3122,0,1,0.0880,-0.0533,0.2344,-0.6244
90,0.9534,0.3343,0,1,0.0659,-0.0533,0.2123,-0.6685

au cas où le copier-coller se passe mal, prendre le fichier ici

http://bruno.valsecchi.neuf.fr/bonuscad/MENTASS47_2.PAT

et faire enregistrer sous dans le navigateur.

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

Merci Bonuscad pour cet effort.

 

Je me rappelle, il y a quelque mois, j'ai testé un petit lisp, je crois il s'appelle bodyhach ou quelque chose comme ça, je ne me rappelle pas où je l'ai eu, il permet de génerer les fichier pat de n'importe quel dessin. Dans le temps, je l'ai testé sur plusieurs dessins, je me rappelle qu'il n'a pas reussi à generer le fichier pat de tous les dessins que j'ai testé. Mais... les hachures restent limtées au niveau du positionnement exact du dessin de base... La commande superhachures est bien plus facile. D'où l'interet que je lui portes.

 

Je comprends aussi qu'un tel lisp n'est peut être pas facile à faire, et qui necessite certainement quelques modifs sur le lisp des superhachures :P .

 

RebCAO va pouvoir enrichir sa bibliothèque de hachures

 

j'espère que le dessin luiu plaira.

 

A bientot Bonuscad et merci

Lien vers le commentaire
Partager sur d’autres sites

Mais... les hachures restent limtées au niveau du positionnement exact du dessin de base.

 

Dans la boite de dialogue "Hachures et gradient", il est facile de spécifier l'origine des hachures...

 

Je ne voit pas trop où est le problème. :exclam:

 

Je laisse tomber l'autre motif alors, surtout qu'il est encore beaucoup plus complexe que le 1er que j'ai traité :casstet:

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

Salut Bonuscad,

Les hachues tu les faits comment? Manuellement :( ? ça devrait être chiant avec ce genre de dessins :mad: . Mes excuses ;) , t'a raison l'autre dessin dessin est encore plus complexe, tu laisses tomber. Si je trouve le fichier dont je t'ai parlé je te le communiquerais à moins que tu l'aies, mais je ne suis pas sur de l'avoir tjs, je vais chercher.

 

J'ai testé la définition de l'hachure, bien faite d'alleurs, mais il y a des décallages au niveau des jointures des lignes, des fois ça deborde, des fois ça se coupe pas. Si RebCAO devrait l'integrer dans sa bibliothèque :) , ça doit être corrigé.

 

Dans la boite de dialogue "Hachures et gradient", il est facile de spécifier l'origine des hachures...

Je ne voit pas trop où est le problème.

C'est que je suis tjs sur la 2000, je ne sais quelle version tu as, en tous cas sur la 2000 c'est pas possible.

 

Au fait, dans le lisp que je cherche, qu'est ce qui est difficile à faire? Tel que je l'imagine ça ne devrait pas être difficile pour des rodés en lisp (comme toi), mais je ne suis pas bien placé pour en juger.

 

-Récuperer le contour, à voir le lisp des superhachures ça se passe ici

 

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;
(defun get_boundary_plines ( / underscore na a ss ss2 ss3 ss4)

;local function that adds an underscore to string provided as argument
(defun underscore ( a /)
 (if (and a
          (equal 'STR (type a))
          (not (equal "_" (substr a 1 1)))
     );and
     (setq a (strcat "_" a))
 );if
 a
);defun underscore

(princ "\nSélection des objets visibles pour la détection des contours...")
(setq ss (screen_sel T))
(if ss
   (setq ss3 (pre_boundary ss ss3 ss4)
         ss4 (cadr ss3)
         ss3 (car ss3)
   );setq
);if
(princ "Terminé.\n")
(command "_.-boundary" "_a" "_o" "_p" "_x" "")
(if (not (setq na (entlast)))
   (setq na (entnext))
);if
(if (cadr (assoc "HIGHLIGHT" (car acet:sysvar-list)))
   (setvar "highlight" (cadr (assoc "HIGHLIGHT" (car acet:sysvar-list))))
   (setvar "highlight" 1)
);if
(setq a T)
(command "_.-boundary")
(while (and a
           (wcmatch (getvar "cmdnames") "*BOUNDARY*")
      );and
(initget "Avancées _Advanced")
(setq a (getpoint "\nSpécifiez une option [options Avancées] : "));setq

(if (equal a "Advanced")
   (progn
    (command "_A")
    (while (not (equal a "_x"))
     (initget "Contours Ilots Quitter _Boundary Island eXit")
     (setq a (getkword "\nEntrez une option [jeu de Contours/détection Ilots/Sortir] : "))
     (if (or (equal a "eXit")
             (not a)
         );or
         (setq a "_x")
         (setq a (underscore a))
     );if
     (command a)
     (cond
      ((equal a "_Boundary")
       (progn
        ;;(princ "\nSpecify candidate set for boundary")
        (initget "Nouveau Tout _New Everything")
        (setq a (getkword "\nSpécifiez un jeu de contours [Nouveau/Tout] : "))
        (if (not a)
            (setq a "_Everything")
            (setq a (underscore a))
        );if
        (command "_n" "" "_x" "");get out of the boundary command
        (if (equal a "_New")
            (progn
             (setq ss2 (ssget));setq
             (princ "\nTraitement des objets pour une détection des contours...")
             (if ss2
                 (progn
                  ;(command "_n" "" "_x" "")
                  (setq ss3 (pre_boundary ss2 ss3 ss4)
                        ss4 (cadr ss3)
                        ss3 (car ss3)
                  );setq
                  (command "_.-boundary" "_A" "_B" a ss2 "")
                 );progn
                 (progn
                  (princ "\nAucun objet trouvé.")
                  (command "_.-boundary" "_A")
                 );progn else
             );if
            );progn
            (progn
             (if (equal a "_Everything")
                 (progn
                  (princ "\nSélection de tous les objets visibles...")
                  (setq ss2 (screen_sel T))
                  (if ss2
                      (progn
                       ;(command "_n" "" "_x" "")
                       (setq ss3 (pre_boundary ss2 ss3 ss4));setq
                       (setq ss4 (cadr ss3)
                             ss3 (car ss3)
                       );setq
                      );progn then
                      ;(princ "\nNothing found")
                  );if
                  (princ "\nAnalyse des données sélectionnées...")
                  (command "_.-boundary" "_A" "_B" a)
                 );progn then
             );if
            );progn
        );if
        (princ "Terminé.")
       );progn
      );cond #1 Boundary
      ((equal a "_Island")
       (progn
        (initget "Oui Non _Yes No")
        (setq a (getkword "\nVoulez-vous procéder à une détection des îlots? [Oui/Non] : "))
        (if (not a)
            (setq a "_y")
            (setq a (underscore a))
        );if
        (command a)
        (if (equal a "_No")
            (progn
             (initget "Proche +X -X +Y -Y Angle _Nearest +X -X +Y -Y Angle")
             (setq a (getkword "\nEntrez une option [Proche/+X/-X/+Y/-Y/Angle] : "))
             (if (not a)
                 (setq a "_Nearest")
                 (setq a (underscore a))
             );if
             (command a)
            );progn
        );if
       );progn
      );cond #2
     );cond close
    );while
   );progn then
   (progn
    (cond
     ((and a
           (equal 'LIST (type a))
      );and
      (command a)
      (princ "\n")
      (if (acet-str-m-find " SELECTED" (strcase (getvar "lastprompt")))
          (progn
           (initget "Oui Non _Yes No")
           (setq a (getkword "\nVoulez-vous vraiment effectuer cette opération ? [Oui/Non]  "))
           (if (equal "Yes" a)
               (command "_y")
               (command "_n")
           );if
          );progn then
      );if
     );cond #1
     ((not a)
      (command "")
     );cond #2
    );cond close
   );progn
);if
);while


(while (wcmatch (getvar "cmdnames") "*BOUNDARY*")
(princ (strcat "\n*Impossible de créer le contour des polylignes*"
              "\nLa détection des contours de cette commande ne prend pas en charge certains"
              "\ntypes d'objet. Pour plus de détails, reportez-vous à la rubrique \"Super hachures\" de l'aide en ligne."
      );strcat
);princ

(command nil)
);while

(if (and ss3
        (> (sslength ss3) 0)
   )
   (acet-ss-visible ss3 0) ;turn ellipses back on
);if
(if (and ss4
        (> (sslength ss4) 0)
   )
   (command "_.erase" ss4 "")
);if

(if (not na)
   (setq na (entnext))
);if
(if (and (setq ss (acet-ss-new na))
        (> (sslength ss) 0)
   );and
   (progn
    (command "_.select" ss "")
    (setq ss (ssget "_p" '((0 . "*POLYLINE"))))
    (if (not ss)
        (progn
         (setq ss nil)
         (princ "\nImpossible de créer le contour des polylignes.")
        );progn
    );if
   );progn then
   (setq ss nil)
);if
(setvar "highlight" 0)

ss
);defun get_boundary_plines

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

-Récuperer le dessin de hachurage, je ne vois pas comment, entlast peut être.

-Sélectionner les objets à l'extérieur (lisps de gile) et suppression

-Extrim

 

A suivre...

A bientot et Merci :)

 

[Edité le 13/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

C'est que je suis tjs sur la 2000, je ne sais quelle version tu as, en tous cas sur la 2000 c'est pas possible.

 

Si c'est possible, mais il faut passer par la variable SNAPBASE si mes souvenirs sont bon.

 

Si RebCAO devrait l'integrer dans sa bibliothèque , ça doit être corrigé.

 

Difficile de faire mieux avec un motif si complexe.

En effet comme dit précédemment, une ligne de définition est limitée à 80 caractères, c'est peu si on utilise une définition élevée (nombre de décimal important).

D'ailleurs d'autre motif standard d'Autocad un peu complexe présentent le même problème.

 

Au fait, dans le lisp que je cherche, qu'est ce qui est difficile à faire?

 

Je ne sais pas trop, car en fait je me suis pas penché sur le problème.

Ta demande est spécifique, et développer du code pour un besoin propre et peu fréquent...

En plus je n'aime pas me plonger dans les lisp des express car ils sont difficiles à interpréter (interdépendance) et peuvent faire appel à des ARX où aucune intervention n'est possible.

Et puis les versions des express ont des fonctions qui varient d'une version à l'autre d'Autocad.

 

Bref du casse tête en perspective, enfin pour moi :casstet:

 

Si d'autres veulent s'y plonger....

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

Ok,

J'espérais en tous cas trouver un lisp déjà fait, si quelqu'un s'y est intéréssé auparavant, et je suis un peu étoné que cela ne fasse pas trop de demandes car à ma connaissance, beaucoup de gens utilisent les superhachures. Je continue de chercher, rien trouver sur le net, si quelqu'un a une piste, merci de communiquer.

 

Difficile de faire mieux avec un motif si complexe.

En effet comme dit précédemment, une ligne de définition est limitée à 80 caractères, c'est peu si on utilise une définition élevée (nombre de décimal important).

D'ailleurs d'autre motif standard d'Autocad un peu complexe présentent le même problème.

J'ai fait une première recherche dans mes archives, j'ai pas trouvé le lisp dont j'ai parlé précedemment, c'est un lisp nickel (si mes souvenirs sont bons, il n'est pas gratuiciel mais il fonctionne je crois limité dans le temps), mieux que tout ce que j'ai testé (autopat, genhach...) mais malheureusement ça m'interessait pas beaucoup, donc je crois que j'ai pas bien rangé. Dès que je trouve je le mets ici.

 

Et puis les versions des express ont des fonctions qui varient d'une version à l'autre d'Autocad

malheureusement les superhachures n'ont pas du tout évolué

 

Si d'autres veulent s'y plonger....

Je l'espère, si je maitrisais le lisp, je l'aurais fait volontier

 

A bientot

 

 

 

 

[Edité le 13/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai trouvé ceci, ça peut répondre en partie à ma demande. C'est une variante d'extrim.

 

http:// http://discussion.autodesk.com/forums/servlet/JiveServlet/download/130-691560-6026686-190006/CookieCutter2%20v1.0.zip

 

J'ai voulu tester mai ca renvoie une erreur "Error: chaîne du mode ssget incorrecte"

Merci de m'éclairer

 

 

[Edité le 14/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

Salut Bonuscad,

Merci pour les modifs. Quand j'exécute :

A l'invite

[surligneur] Erase all objects " side "? [Yes/No] :[/surligneur]

si je choisis "N" j'ai le message suivant :

[surligneur] *Sélection non valable*

Attend un objet unique.

[/surligneur]

jusqu'à ce que j'appuie sur entrée, et là elle continue et applique Extrim sur les objets visibles seulement.

Si je choisis "Y" j'ai le message suivant :

[surligneur] *Sélection non valable*

Attend un objet unique.

Error: Fonction annulée[/surligneur]

et rien ne se passe et commande terminée.

Si j'ai bien compris la difference entre cette routine et Extrim c'est qu'elle permet de choisir de n'appliquer Extrim soit sur tous les objets visibles ou invisibles (Y) ou sur uniquement les objets visible (N)

Merci

 

[Edité le 14/11/2008 par marionsname]

Lien vers le commentaire
Partager sur d’autres sites

C'est que je suis tjs sur la 2000,

 

Cherches pas, tout vient de là !

 

Par expériences les fonctions (vla-...) et (vlax-....) ont un comportement différent suivant les versions

Sous 2009 je n'ai pas ce problème.

 

malheureusement les superhachures n'ont pas du tout évolué

Pour l'utilisateur, au niveau du résultat final, il peut te sembler, mais en allant plus profondément dans le code, je pense que si.

 

Erase all objects outside? [Yes/No] :

 

Effacer tout les objets en dehors du contour [Oui/Non]

 

Non -> ce comporte comme la commande Extrim (ajustement seul des objets coupant le contour)

Oui -> comme pour Non mais efface en + les objet au delà du contour.

 

Mais comme tu peux le voir les routines que l'on pourrait te faire posent des problèmes de compatibilité de version :casstet:

2000 est franchement la plus problématique, 2002 un peu moins.

A partir de 2005 cela pose pratiquement plus de problèmes (à quelques exceptions prés)

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

Mais comme tu peux le voir les routines que l'on pourrait te faire posent des problèmes de compatibilité de version

2000 est franchement la plus problématique, 2002 un peu moins.

A partir de 2005 cela pose pratiquement plus de problèmes (à quelques exceptions prés)

 

Moi qui croyait que la 2000 est plus stable que la 2000i et la 2002

Donc rien à faire là :mad:

Est-ce que pour faire que cette routine ne s'applique que sur les objets d'un calque donné (MENTASS en l'occurence) cela te demanderait beaucoup?Ca resoluerait la moitié de mon problème, je verrais la question de compatibilité. Si oui laisses tomber.

 

A bientot

 

Lien vers le commentaire
Partager sur d’autres sites

Je viens de tester sur un poste ou il y a la 2009, ça marche

 

Je réctifie, ça marche pas à tous les coups, je veux dire qu'elle laisse des fois des lignes à l'extérieur, je refais la même manip une deuxième fois elle supprime les lignes qui restent. Erreur de code? Aucune idée.

Cette routine est une bonne base pour developper un lisp dans ce sens. En parcourant le forum anglais d'autodesk, parait-il il y a plein de demandes dans ce sens.

 

Bonne journée à tous

Lien vers le commentaire
Partager sur d’autres sites

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é