Aller au contenu

G2.toff

Membres
  • Compteur de contenus

    60
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par G2.toff

  1. Salut, Pas la peine de s'excuser, mais t'es tout excusé quand même, je me permet de demander de l'aide c'est la moindre des choses que d'être patient ! Merci beaucoup pour ta correction, cette fois c'est la perfection. En plus elle arrive au bon moment cette correction car j'ai un projet à modéliser avec environ 2000 points tu comprends que cela va m'éviter de rentrer 2000 altitudes (avec 6 frappes par altitudes soit 12000 frappes, sans compter les erreurs). En fait ce lisp permet d'éviter ce que l'on appelait avant la digitalisation de points projet pour réaliser des cubatures de projets assez complexes. Encore merci.....
  2. Bonjour, Après plusieurs utilisation de ton lisp, qui est vraiment génial, c'est tout à fait ce que j'attendait de ce lisp, j'ai tout de même rencontré un petit hic. En fait lorsque tu crée une poly avec ce lisp, tu cliques un endroit pour définir la position d'un sommet, puis tu sélectionnes un texte ou un attribut ou tu entres une valeur pour le Z, ainsi de suite pour les autres points de ta poly. Le problème est là, si pour sélectionner un texte tu cliques dans le vide (à mon âge parfois tu loupes ta cible), la création de la poly s'arrête et ta poly dessinée jusque là, disparait. Pour éviter de me faire trop avoir, j'évite de faire des poly trop grandes au moins si je dois refaire, j'ai moins à refaire. @+ Toff
  3. Ha voilà ! Merci à tous les deux ! En effet étant donné l'intérêt que je porte depuis que j'ai découvert ce que permet de faire un lisp, il est en effet fort probable que je devienne un client de ton site (didier). pour qui est de ton image, plus que des paroles, j'ai enfin compris pourquoi vous vous "embêtiez" à mettre des parenthèses à différents niveaux, comme quoi plus que des paroles une image suffit ! Merci à toi Gile pour ton lien vers le tuto, pourtant il me semble bien avoir fouillé par là, mais bon ce doit être mes yeux comme dirait Jean-Claude !!! Dans la semaine je vais commencer à m'y mettre,j'ai un peu plus de temps, sur le tuto et le lisp façon didier, car j'ai plein de trucs à faire évoluer dans ma boite, et ça me gave de ne faire que demander solutions, certes c'est pratique, mais j'aimerais au moins pour de petits lisp y arriver tout seul ou presque (sinon je suis pas prêt d'avoir des lisps qui fonctionnent. Bonne soirée et à très bientôt... Toff
  4. Salut, Déjà merci pour ta réponse, saches que j'essaye chez moi de les modifier avec la liste des fonctions lisp, le seul soucis (le premier plutôt) c'est que je n'arrive pas à utiliser l'éditeur de visual lisp, j'ai trouvé une notice mais pas en french . Avant de poster j'ai fais des modifs sur le lisp joint mais n'aboutissant pas et donc notant ma nullité en lisp, j'en suis venu à écrire un sujet sur CADXP. J'ai cru bon de mettre un lisp qui m'avait servi (ou pas) de démarrage, mais en tapant mon message j'ai compris par la suite qu'il risquait de servir à rien, pour vous les rois du lisp. Voici ce que j'ai failli poser: ; initialise l'environnement Visual Lisp (nécéssaire aux fonctions qui commencent par vl- ) (vl-load-com) ; fonction principale defun c:Toto ; pour selectionner les blocs commençants par XX ssget "_x" '((0 . "INSERT" "XX*")))) ;pour les décomposer command "_explode" (ssget "x" '((0 . "INSERT" "XX*"))))) ) defun Forcément il marche pas et j'arrive pas à tester les différentes étapes dans l'éditeur... Voilà pourquoi tu as trouvé ce post avec ce lisp Merci de me lire et surtout j'espère que tu étais assis avant de lire mon """lisp"""....(rires forts) @+ Toff
  5. Bonjour, Sous forme de lisp j'ai trouvé sur CADXP un moyen de décomposer (explode) tous les blocs affichés d'un fichier. C'est un lisp de BONUSCAD je crois. En fait comment le modifier afin qu'il ne décompose que les blocs XX et YY d'un fichier même s'ils ne sont pas affichés ? Voici le code dont je vous parlais avant, même si dans mon cas je doute qu'il puisse servir: defun c:TEST (/ jeu-sel) (while (setq jeu-sel (ssget "_x" '((0 . "INSERT")))) (mapcar '(lambda (e) (command "_explode" (cadr e))) (ssnamex (ssget "_x" '((0 . "INSERT"))))) ) (princ) ) Merci...
  6. Bonjour, Merci bien pour ta réponse très rapide, il marche celui-ci et c'est ce que je recherche au niveau résultat. Maintenant il faut que je trouve comment le faire évoluer pour que la démarche soit plus simple, j'ai 2 points à faire évoluer. Premièrement, sur ce lisp, il faut entrer le nom d'un bloc (pas forcément connu pas tout le monde) et surtout si le bloc n'est pas présent dans le dessin, il ne trouve pas le bloc à insérer. Il faut que j'arrive à intégrer dans le lisp le nom du ou des blocs à insérer ainsi que leur chemin, pour qu'il les trouve. Deuxièmement, on ne peut sélectionner qu'une polyligne, il faudrait qu'il le fasse sur toutes les polyligne d'un calque ou de plusieurs calques précis qui seraient listés dans le lisp. Encore merci et à bientôt...
  7. Bonjour, Je cherchais un lisp susceptible d'insérer un bloc aux extrémités de polylignes (pas aux sommets)et j'ai trouvé un lisp de lili2006 (qui date un peu)qui ne fonctionne pas sur MAP3D 2013 donc je ne sais pas comment il fonctionne. Si quelqu'un pouvait le regarder ! J'ai pas mal fouillé le net mais je ne trouve pas d'autre lisp se rapprochant de ma recherche. J'ai trouvé des lisp qui m'insèrent des blocs (déjà présent dans mon dessin), aux sommets de poly que je dois sélectionner manuellement. En fait je cherchais un lisp capable de m'insérer des blocs (pas forcements présents dans mon dessin mais présent dans ma bibliothèque (raccourcis créé dans outils/options/fichiers/chemin de recherche)) aux extrémités de polylignes se trouvant sur un calque précis. Par exemple insérer un bloc QQ1 aux extrémités des poly du calque CC1 et un bloc QQ2 sur les poly du calques CC2, puis de finir par décomposer tous ces blocs commençants par QQ* afin de récupérer leur contenu (en fait ces blocs pourraient contenir d'autre blocs, textes, attribut,poly, etc...). Voilà, si quelqu'un pouvait venir à mon secours !!!! (defun c:ins-vtx (/ acdoc space bname ss lay layf n ins) (vl-load-com) (setq acdoc (vla-get-activeDocument (vlax-get-acad-object)) space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace acdoc) (vla-get-ModelSpace acdoc) ) ) (if (setq bname (getblock "Nom du bloc")) (progn (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname)))) (setq lay (cdr (assoc 8 (entget (ssname ss 0))))) ) (if (setq layf (getlayer "Choisir le calque filtre de polylignes")) (if (ssget "_X" (list '(0 . "*POLYLINE") (cons 8 layf))) (progn (vla-startUndoMark acdoc) (vlax-for pl (vla-get-ActiveSelectionSet acdoc) (setq n (fix (vlax-curve-getEndParam pl))) (or (= (vla-get-Closed pl) :vlax-false) (setq n (1- n)) ) (repeat (1+ n) (setq ins (vla-InsertBlock space (vlax-3d-point (vlax-curve-getPointAtParam pl n)) bname 1.0 1.0 1.0 0.0 ) ) (if lay (vla-put-layer ins lay) ) (setq n (1- n)) ) ) (vla-EndUndoMark acdoc) ) )
  8. Bonjour, Je cherche un lisp qui ressemblerait à celui qui tu avais posté il y a quelque temps. En effet je cherche un lisp qui permet d'insérer des blocs aux extrémités de poly se trouvant dans des calques. Sur ton lisp j'ai une erreur de chargement donc je ne peux voir comment il fonctionne. En fait je t'explique mon idée. J'ai un fichier avec des calques QQ1 et QQ2 par exemple, j'aurais aimait trouver un lisp qui m'insère aux extrémités des poly sur ces calques des blocs BB1 et BB2(qui ne sont pas déjà présents sur mon fichier mais issus de ma bibliothèque donc connus, raccourci sur Autocad enregistré dans outils/options/fichier/chemins de recherche/...). Par contre mon fichier ne possèdera pas toujours ces 2 calques donc si un calque manque il ne m'insère pas le bloc mais continu sa fonction pour les calques existants. J'ai trouvé des lisp insérant des blocs aux sommets mais pas extrémités, mais ces lisp ne fonctionnent que si le bloc à insérer est déjà dans le dessin (pas forcément mon cas), de plus il me faut faire la manip bloc par bloc et sélectionner les poly. Or je préfèrerais que le lisp possède déjà les liaisons BB1 sur poly QQ1 et BB2 sur QQ2 etc... Pour finir à la fin des remplacements si on peut rajouter une décomposition automatique des blocs qui commencent par MMMM* par ce serait pas mal, mais bon, c'est la cerise ! Merci d'avance si tu peux y jeter un œil, je continu mes recherches au cas ou !
  9. Bonjour, Mille excuses, en effet j'avais copié le fichier dans le dossier des lisp qui fonctionnent, mais dans autocad dans charger un application j'avais toujours le lien sur les lisp en test, et comme ils avaient le même nom....ben j'avais pas vu que c'était le lien qui était faux !!! Comme tu as pu le voir sur le forum je revois pas mal la méthode de travail dans ma société, car je me suis rendu compte que les "nouveaux" avaient du mal à évoluer car ils perdaient trop de temps dans des manip lourdes. Sauf que de vouloir tout modifier en même temps je me mélange un peu les pédales parfois. Encore désolé de t'avoir fait perdre du temps à cause de mon inattention, mais surtout merci beaucoup, car en effet celui-ci fonctionne très bien (comme il fonctionnait il y a quelques jours donc).
  10. Bonjour, En fait je viens de m'apercevoir qu'il ne prend pas les valeurs entrées à la main. Je l'avais pourtant testé, lorsque je rentrais une valeur à la main il me demandait le point suivant mais en fait je n'avais pas vu qu'il ne prenait pas en compte ma valeur mais celle d'avant ? Je trouve ça bizarre !
  11. Super, ça marche ..... merci bien !
  12. Bonjour, Excuses moi, mais comment ça marche ce convertisseur ? En fait, mon gabarit comprendrait quoi, je saisis pas ? Il faut savoir que je ne connais jamais ou plutôt ce ne sont jamais les mêmes noms de calques que les archi m'envois, sinon je passerais par la réaffectation des calques de Covadis !!!
  13. Bonjour, Voilà je cherche un lisp pour créer des blocs "automatiquement", je m'explique. En fait dans ma société on fait des plans de réseaux VRD, et souvent on doit faire un Wbloc d'un réseau (ou plusieurs)pour l'envoyer à une entreprise. On fonctionne de la manière suivante, c'est à dire avec des barre d'outils personnalisées sur lesquelles on a paramétré des sortes de filtres d'affichage (espace objet). Exemple, on a une base de calque inchangée qui commence par MASSE_ et des calques réseaux qui commencent par AEP_ pour l'eau potable, ELEC_ pour l'électricité etc... Lorsque l'on clique sur un bouton d'un réseau cela fait tout disparaitre puis ré-apparaitre les calques commençant par COMP_ et les calques du réseau voulu (ex: AEP_). Lorsque l'on doit envoyer un fichier DWG par réseau on doit faire apparaitre chaque réseau et créer le Wbloc de chacun, par la sélection fenêtre, cela peut vite être long. J'ai vous joins un lisp qui n'est pas vraiment abouti, mais qui est proche de ce que je voudrait faire, mais je plante grave, normal je débute vous me direz. Est-ce possible que lorsque je clique sur le bouton AEP(exemple AEP, il y aurait un bouton par réseau), qu'il me sélectionne d'office les objets (poly, bloc, tout) sur trouvant sur les calque COMP_* et AEP_* (même si les calques ne sont pas affichés à l'écran), qu'il me demande dans quel SCU je veux faire mon Wbloc (ce que fait le lisp joint)un choix par cochage pourrait être sympa mais c'est c'est la cerise, et puis qu'il me demande ou je veux enregistrer mon fichier Wbloc avec par défaut le dossier du fichier courant (là le lisp joint ne le fait pas il le fait tout le temps dans D:Données...). Si cela est déjà possible, après j'ai bien des idées d'évolutions, du style que je définisse le format (nombre de A4)en hauteur et en longueur du plan selon l'échelle afin qui ne me sélectionne que les éléments situés des cette fourchette (cadre), mais bon là faut se calmer, donc je me calme... Voici le lisp que je voudrait faire évoluer si c'est possible !!! Merci d'avance pour votre aide,
  14. ...
  15. Merci beaucoup pour ton lisp qui marche à merveille maintenant !!!! Trop fort BONUSCAD...merci encore !!! Voici le code définitif pour ceux que ça interresse .... (vl-load-com) (defun ajouz ( / ent dxf_ent typ_ent z) (while (null ent) (setq ent (nentsel (strcat "\nChoisir le Texte/Texte Multiligne/Attribut pour obtenir le Z <" (rtos (caddr (getvar "LASTPOINT")) 2 2) ">: "))) (if (null ent) (setq dxf_ent (list '(0 . "TEXT") (cons 1 (rtos (caddr (getvar "LASTPOINT")) 2 4))) ent T) (setq dxf_ent (entget (car ent))) ) (setq typ_ent (cdr (assoc 0 dxf_ent))) (cond ((member typ_ent '("TEXT" "MTEXT" "ATTRIB")) (setq z (read (cdr (assoc 1 dxf_ent)))) (if (and (/= (type z) 'REAL) (/= (type z) 'INT)) (progn (setq ent nil) (princ "\nLa valeur du texte ne convient pas!")) ) ) (T (setq ent nil) (princ "\nN'est pas un Texte MTexte ou Attribut!") ) ) ) (princ (strcat "\nZ = " (rtos z 2 2))) z ) (defun c:3dpoly_xy ( / AcDoc Space msg_f msg_n n pt_f lst_pt lst_tmp pt_n nw_pl) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) msg_f "\nSpécifiez l'extrémité de la ligne .XY de, ou [annUler]: " msg_n "\nSpécifiez l'extrémité de la ligne .XY de, ou [Clore/annUler]: " n 0 ) (while (null (setq pt_f (getpoint "\nSpécifiez le point de départ de la polyligne: .XY de "))) (princ "\nPoint incorrect.") ) (setq pt_f (trans pt_f 1 0) lst_pt (list (list (car pt_f) (cadr pt_f) (ajouz))) lst_tmp lst_pt) (setvar "LASTPOINT" (car lst_pt)) (initget "U ANNUler _Undo UNDO") (while (and (setq pt_n (getpoint (trans pt_f 0 1) (if (< n 2) msg_f msg_n))) (/= pt_n "Close")) (if (listp pt_n) (progn (setq pt_n (trans pt_n 1 0) lst_pt (cons (list (car pt_n) (cadr pt_n) (ajouz)) lst_pt) lst_tmp lst_pt) (setvar "LASTPOINT" (car lst_pt)) (setq n (1+ n) pt_f pt_n) ) (if (zerop n) (princ "\nTous les segments sont déjà annulés.") (progn (setq lst_pt (cdr lst_pt) lst_tmp lst_pt) (setvar "LASTPOINT" (car lst_pt)) (setq n (1- n) pt_f (getvar "lastpoint")) ) ) ) (if (< n 1) (initget "U ANNUler _Undo UNDO") (initget "U ANNUler Clore _Undo UNDO Close") ) (redraw) (while (cdr lst_tmp) (grdraw (trans (car lst_tmp) 0 1) (trans (cadr lst_tmp) 0 1) 7) (setq lst_tmp (cdr lst_tmp))) ) (redraw) (setq nw_pl (vlax-invoke Space 'Add3DPoly (apply 'append (reverse lst_pt)))) (if (eq pt_n "Close") (vlax-put nw_pl 'Closed 1) ) (princ) )
  16. En effet, je suis vraiment pas logique, en fait tu as raison, mais hier je traçais ma poly comme sur ta version d'avant en double cliquant et donc la fonction s'arrêtait.... Par contre, ce matin je redémarre mon autocad à cause d'un plantage et là lorsque je lance ta fonction il me crée des polylignes correctement (niquel ton lisp) sauf lorsque j'ai fini ma poly je n'arrivais pas à la sélectionner, je fais donc un petit regen et la la poly disparait (calque actif et tout j'ai vérifié) ????? Bref je redémarre à nouveau autocad, je lance ton lisp et là il me dit "erreur: no function definition: VLAX-GET-ACAD-OBJECT"??????? Je comprends pas ce qui se passe ! Désolé de t'embêter encore...
  17. Bonjour, Merci pour ta réponse ! Maintenant il me prend bien tous les textes et attributs sauf que ta modif d'avant qui permettait de rentrer soi même une valeur, ou de double cliquer pour conserver la dernière valeur entrée ne marche plus... Ca sent bon la fin !!!
  18. je ne saispas ce que tu appelles normes cao! en fait je veux juste donner des couleurs a des calques rapidement.....
  19. Bonjour, Connaissez vous un moyen (lisp ou autre méthode) pour changer les couleurs des calques d'un fichier. Je reçois souvent des fichiers autocad d'archi qui possèdent plein de calques mais tous sont blancs. Pour identifier visuellement les objets je change manuellement les couleurs des calques, purée c'est long parfois. Est ce qu'il existe un moyen d'attribuer automatiquement et de manières aléatoire des couleurs (différentes si possible) à des calques. Je n'ai pas trouvé sur le net, c'est pourquoi je m'en remets à vous! Merci d'avance pour vos pistes si vous en avez, en attendant je continu à fouiller .....
  20. Merci bien pour ta réponse. En attendant une solution je peux faire en changeant le style de texte. En fait je crée un bloc des entités textes qui vont me servir pour donner un Z à mes points, je les décompose et change le style et le nom du calque (calque bidon que j'efface à la fin). Après j'insère ce bloc et crée mes poly. La manip et certes du bricolage mais je viens de faire un projet, la manip m'a pris 2 minutes et la création des poly 1,5 heures au lieu de 4 heures avant ton lisp. C'est impressionnant le gain de temps !!! Encore merci pour ton lisp et dès que tu trouveras l'astuce tiens moi au jus !! @+
  21. Bonjour, En fait, j'ai regardé l'histoire du texte (ou de l'attribut) j'ai pas mal cherché de possibilités et je ne trouve pas la solution à mon problème. Ca marche parfaitement si je décompose tout mes attributs et que je modifie le style de texte, mais c'est pas une solution très pratique, ça fait un peu bricolage. Comment puis-je éviter ce problème vu que j'ai beaucoup de bloc avec attribut qui contiennent des textes pouvant être identifiées comme valeur de Z ? J'ai joint un bloc avec attribut qui existe dans ma société, qui me pose ce problème ! (sauf au premier choix... Merci... 2COTV.zip
  22. Heuuuuu....je te joins juste si tu as le temps un bloc de ma bibliothèque, lorsque tu utilise ton lisp si pour ton premier point tu cliques sur un des attributs ça marche, après non !!! Je ne sais pas te répondre concernant le texte forcé ou nom ! Pour ce qui est de ta modif, c'est nickel, faut prendre le coup, mais après 2 ou 3 poly3d je maitrisais ! Un grand merci à toi !
  23. Bonjour, En fait j'ai trouvé le problème, ou plutôt ce qui ressembla à mon problème ! En fait c'est un soucis de style de texte, ce lisp dans mon dessin ne me prend pas tout les styles de texte, lors du premier point il me prend n'importe quel style puis après il ne veut plus que du helvetica ???? Par contre je disais qu'il ne me prenait pas les attributs dans les blocs, mais cela venait du style aussi. De plus , je réédite ma remarque précédente, ce serait bien de pouvoir soit entrer manuellement un Z (ex: 101.25), soit entrer conserver le dernier Z entré (en tapant la lettre z' par exemple au lieu d'un nombre et le point prendrait le Z de la dernière valeur entrée manuellement ou du dernier texte sélectionné). Sinon, j'ai tout de même utilisé ce lisp en transformant tous mes textes et attribut avec le style qu'il reconnaissait sans problème, et j'ai réalisé une manipulation qui me prenait 1 heure en même pas 30 minutes et sans les modifis ci-dessus, mortel ! C'est génial, surtout quand tu sais que certaines manipulations me prennent la journée voir plus parfois !!!!
  24. Excellent, merci bien. Je vais essayer de capter le principe de ce lisp car lorsque je clique sur un texte ça marche bien, par contre si je clic sur un texte (attribut) inclus dans un bloc il me prend le premier puis après il veut plus me prendre autre chose que du texte. En plus j'aimerais arriver à faire en sorte que lorsque j'ai plusieurs points consécutifs au même Z je sélectionne ou je rentre le Z du premier point de la série et que si après je ne rentre plus de Z il garde la dernier Z entré. Encore merci...
×
×
  • 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é