yann69690
Membres-
Compteur de contenus
88 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par yann69690
-
Bonjour, Je deterre le topic désolé, le script fonctionne bien à un détail près , comment sur les script autocad, vous arriver à afficher les accents? moi ça marche jamais...
-
copie objet d'une couche dans une autre
yann69690 a répondu à un(e) sujet de yann69690 dans Débuter en LISP
Sinon M.chatGPT, me propose cette solution (mettre les entités dans une liste et dépiler la liste) non fonctionnelle carrément et je ne pense pas que cela soit d'une grande aide coté logique. (if (setq on (ShowDcl)) (progn (setq layerSource (strcase (car lst))) (setq layerDestination (getstring t "Entrez le nom du nouveau calque à créer : ")) (if (and layerSource layerDestination) (progn (setq ss (ssget "_X" (list (cons 8 layerSource)))) (if ss (progn (or (tblsearch "LAYER" layerDestination) (command "_.LAYER" "_N" layerDestination "")) (setq entityList '()) (setq sslen (sslength ss)) (repeat sslen (setq entity (ssname ss 0)) (setq entityList (cons entity entityList)) (ssdel entity ss) ) (setq entityList (reverse entityList)) (foreach ent entityList (princ (strcat "\nCopying entity: " (itoa ent))) (command "_COPY" ent "_P" layerDestination "") ) (command "_.LAYER" "_F" layerSource "") ) ) ) ) -
Bonjour, Je sèche sur la création/adaptation d'un lips mais j'espère que je ne suis pas très loin... contexte : gros projet signalisation horizontal et vertical avec beaucoup de changement au cours du temps (une phase par couche) donc je souhaite une lips qui copie l'ensemble des objets d'une couche et importe les entités (objet polyligne hachure etc) dans une nouvelle couche (dont je choisis le nom). Problème : J'utilise peut etre à tord la commande _copybase mais le problème c'est qu'elle ne gère pas l'ordre d'affichage de mes objets (quand je dessine je m'occupe de cela au fil de l'eau) donc on peut retrouver au hasard un objet en dessous d'une hachure ou par exemple deux polyligne (un passage piéton) et une flèche directionnelle inversés, etc... Donc phase 1 avec le bonne ordre, après mon lips phase 2 mais avec le désordre donc pas rentable en terme de temps de devoir tout refaire... Le code : (defun c:NewCopyLayer (/ layerSource layerDestination ss) (setq layerSource (strcase (getstring t "Entrez le nom du calque source : "))) (setq layerDestination (strcase (getstring t "Entrez le nom du nouveau calque à créer : "))) (if (and layerSource layerDestination) (progn (setq ss (ssget "_X" (list (cons 8 layerSource)))) (if ss (progn (or (tblsearch "LAYER" layerDestination) (command "_.LAYER" "_N" layerDestination "")) (command "_.COPYTOLAYER" ss "" layerDestination "_D" "0,0,0") (command "_.LAYER" "_M" layerDestination "") (command "_.-LAYER" "_F" layerSource "") ) ) ) ) ) (princ) Merci beaucoup de votre aide
-
Commande de création de bloc
yann69690 a répondu à un(e) sujet de yann69690 dans LISP et Visual LISP
Bonjour à vous deux, et tous biensur, Je vous remercie d'avoir répondu, de mon coté j'ai fais pas mal de test avant de vous répondre. Je sais pas si je l'avais dit avant, mais mon but final est grâce à un plugin autocad (non développé par moi biensur) pouvoir incorporer les blocs, avec une multitude d'option (un peu comme la bibliothéque d'autocad mais avec plus d'option et de rangement, recherche, etc). Il me permet d'importer des dessins ou des blocs, et on en revien à ma demande initial car c'est plus simple et compréhensible pour mes dessins d'avoir des blocs de panneaux. J'ai déjà réalisé un script python qui m'importe les "futur" blocs dans ce plugin via un XML. @(gile) J'ai essayé de me dépatouillé avec ton script mais j'avoue ne pas avoir réussi (bien que j'ai compris que je dois définir les variable fichier et listeFichiers mais pas réussi). Ce que je me suis dis pour me servir de ton script c'était plutot de creer un dwg vide puis importer ta lips et automatiquement déplacer chaque panneau d'une valeur en x pour pas que cela se superpose. Ce que j'ai essayé (via MacLee lips) car je ne voyais pas comment fournir une liste deFichier: (defun LM:directoryfiles (dir typ sub) (setq dir (vl-string-right-trim "\" (vl-string-translate "/" "\" dir))) (append (mapcar '(lambda (x) (strcat dir "\" x)) (vl-directory-files dir typ 1)) (if sub (apply 'append (mapcar '(lambda (x) (if (not (wcmatch x ".,.`.")) (LM:directoryfiles (strcat dir "\" x) typ sub))) (vl-directory-files dir nil -1))) nil))) (defun C:ImportFiles () (cond ((null (setq dir (LM:browseforfolder "Select a directory to list drawing files" nil 0))) (princ "\nCancel")) ((null (setq lst (LM:directoryfiles dir "*.dwg" t))) (princ "\nNo drawing files found in the selected directory or subdirectories.")) (t (setq listeFichiers (vl-directory-files dir ".dwg")) (foreach dwg lst (if (setq filename (findfile (strcat dir "\" dwg))) (progn (command "INSERT" filename (cons (strcat "BLOC" (vl-filename-base filename)) 1))))) ))) @didierDonc je confirme bien que l'inserer fonctionne bien mais ce n'est pas forcement ce que je recherche ici Meri à vous deux, je vais continuer à bosser dessus (meme si une petite aide serait top si vous etes d'accord) -
Masque nettoyer d'une zone type route
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Super pour l'astuce, il me semblait que les hachure solide était obligatoirement au dessus de tout, en tout cas j'ai de souvenir déjà eu des problèmes avec ou lors de l'impression il était mis en 1er plan et me cacher le reste comme des polylignes ou cotations. A creuser pour ma part, peut être était ce juste un bug.. Merci pour l'info (surtout que de souvenir j'ai déjà vu trainer des lips pour faire automatiquement des contours) -
Bonjour, Ma problématique : j'ai un certain grand nombre de fichiers (1 panneau par fichier) qui ne sont pas en bloc donc quand je le ré-importe dans mes dessins cela importe un ensemble (typiquement hachure, texte, rond, etc) donc pas très interessant. J'aurais souhaité par exemple via SuperAutoScript par exemple suivant un dossier, ouvrir le fichier, convertir en bloc (mais en conservant le dessin) avec le nom du fichier, et passer au suivant. Je suis à la partie script SCR : (setq fichier (getvar "dwgname")) ;;(setq nomdoc (car (split-string fichier "\\."))) A modifier pour enlever les 4 derniere caractère qui correspond à l'extension (setq nombloc (strcat "BLOC_" fichier)) (setq jeusel (ssget "_C" '(0 0) '(10 10))) (command "_-block" nombloc "0,0" jeusel "") Mon problème pour l'instant se situe avec la commande _block qui prend comme paramètre suppression des objets convertis hors j'aurais aimé juste les conservé, impossible de trouver la doc de la fonction block Merci par avance Cordialement
-
Masque nettoyer d'une zone type route
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour, Je vous remercie, je vais essayer d'être plus clair, et vont montrer un exemple entre deux fichier PDF que j'avais fait mais en gros il manque une bonne partie de la topo en dessous du à mes masques (fait grossièrement en polyligne pour suivre la route) -> en grande partie mon problème, mais je trouve bizarre qu'il y est que moi que cela embête donc il doit avoir un truc que je fais mal, d'où ma demande. (Ce n'est pas forcément la même phase donc ne pas tenir compte de la signalisation qui a pu changer). J'ai changer ma méthode de travail entre les deux en insérant l'ensemble des bloc des précédentes phases qui était dans un Xref dans le fichiers pour plus de rapidité d'exploitation). Mais je ne me retrouve pas avec le même rendu coté topo car les tronçons de route sont dans un XREF avec des masques qui sont supprimés suivant l'avancement du chantier etransmit : https://drive.google.com/open?id=1B6aKYDzAO-MeUUStTeqYn_n8TqcDbDQf N'hésitez pas à faire vos remarques, d'organisation je suis preneur, je suis autodidacte donc il peut me manquer des élèments Merci par avance -
Masque nettoyer d'une zone type route
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour C'est une question débile que je n'ai pas de réponse ou juste personne ne souhaite me donner son avis et sa méthode de travail sur ce point la? En vous remerciant par avance -
Salut, Ah je ne travaille pas par fichier mais par block sorry
-
Salut, Si il ont le meme nom d'attribut un block replace ne fait pas l'affaire? perso j'utilise RIblock.vlx très fort pour transférer les valeurs d'attribut sur un autre bloc https://www.cadforum.cz/en/download.asp?fileID=1019 pour le télécharger Cdlt
-
Sauvegarde automatique dms en même temps que manuelle
yann69690 a répondu à un(e) sujet de sylarr dans AutoCAD 2020-2024
Salut, Rien avoir avec ce que tu recherches mais google drive pour ne citer que lui fait très bien le versionning et quand tu as fait une connerie tu retrouve tes petits (en cherchant un peu si tu sauvegarde manuellement souvent comme moi mais cela à un grand avantage) Par contre, si quelqu'un connait un logiciel qui pourrait faire un "merge d'un fork " de plan, par exemple tu donnes à plusieurs de tes fournisseurs (bien sur tu as oublier de leur prémâché le boulot pour créer des Xref) et que 3 clients te retournes des fichiers de zone différents et que tu souhaites les mettre tous ensemble de manière automatique ( sans faire de simple copier-collé suivant l'origine) et qu'il te montre les zones en conflit.... Je suis preneur. Bien à vous -
Bonjour et très bonne année 2023, Je vous souhaite dans un premier temps mes meilleurs voeux pour cette année. J'ai un petit problème de mise en page, j'ai un fichier autocad avec : fond de plan avec ancienne route un gros bloc nouvelle route (bordure + hachure), donc pleins de zone => certaine déjà terrasser et d'autre non (donc masque "_wipeout" créer dessus et c'est là le problème) et moi c'est uniquement la signalisation à rajouter Mon soucis est que le rendu n'est vraiment pas jolie vu que l'ordre des couches est comme l'inverse de ma liste, et les masques rectangulaires bavent littéralement sur le fond de plan. Deux questions : Comment faites vous dans ces cas là? est que qu'il existe un masque suivant une forme aléatoire? en interne ou avec un lips? Je vous remercie par avance Cordialement
-
Salut, C'est bien ce que j'avais lu mais aucun de ces fichiers compilés ne se précharge. par exemple, ce fichier : https://www.cadforum.cz/en/download.asp?fileID=1019 A titre de culture, j'ai essayé de compiler un de tes scripts(dist.lsp) en vlx, d'ailleurs que signifie nil à la fin d'un chargement (j'ai aussi un soucis en .lsp la valeur de la fonction s'affiche bien mais pas si je transforme en vlx) : Dist.lsp et après j'ai testé en autoload ( j'ai bien renommé ton fichier et c::DEFUN en DistGile) mais toujours non fonctionnelle, as tu deja tester auparavant? Sachant que si je le charge en manuel j'ai bien la fonction DistGile. Donc j'en déduit que mon fichier compilé doit fonctionner (hors affichage de la valeur mais c'est un autre problème) Extrait du fichier acaddoc.lsp (fonctionnel pour les fichiers en lsp): J'ai fais une erreur à quelque part? Merci par avance Cordialement
-
Bonjour, J'espère que vos vacances se/se sont bien passés? J'ai une petite question, je souhaite utiliser la fonction autoload, cela marche quand c'est des ;LSP mais pas des VLX. Est ce pareil chez vous? exemple of acaddoc.lsp file : (autoload "G:/x-Autocad/LIPS/lisp autocad/Autoloader (recharger script dans acaddoc).lsp" '("AUTOLOADER" "\"")) (autoload "G:/x-Autocad/LIPS/lisp autocad/RIblock (Remplacer les blocs en gardant attribut).vlx" '("RIBLOCK")) Bonne journée Cordialement
-
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour, Pour revenir, sur mon premier post, ci-joint un Lisp pas mal utilie qui copie les attribut concaténné, et il reste plus qu'à coller dans le bon block/attribut. Lisp de BeekeeCZ que je remercie ( lien ) (defun c:CollectAtts ( / s i v l h x) (or (and *ca-a* (/= *ca-a* "")) (setq *ca-a* "IDENT")) ;Adopterl'attribut IDENT (if (and (not (initget 128)) (setq *ca-a* (cond ((getkword (strcat "\nAttribute <" *ca-a* ">: "))) (*ca-a*))) (setq s (ssget '((0 . "INSERT") (66 . 1)))) ) (repeat (setq i (sslength s)) (if (not (vl-catch-all-error-p (setq v (vl-catch-all-apply 'getpropertyvalue (list (ssname s (setq i (1- i))) *ca-a*))))) (setq l (cons v l))))) (if l (progn (setq ;l (vl-sort l '<) ; remove the initial semicolon to activate sort x (substr (apply 'strcat (mapcar '(lambda (x) (strcat "-" x)) l)) 2)) (vlax-invoke (vlax-get (vlax-get (setq h (vlax-create-object "htmlfile")) 'ParentWindow) 'ClipBoardData) 'setData "Text" x) (vlax-release-object h) (princ (strcat "\nClipboard: " x)))) (princ) ) Cordialement -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour Lecrabe, C'est une bonne idée, sachant qu'à l'origine c'est bien un DXF que je reçois et après exploite en PDF, je viens d'en ouvrir un (la plus petite commune, c'est quand meme 22mo ci-joint sur le lien we-transfert (ce n'est pas celui de 500bloc mais 168 bloc mat "7_7214", c'est deux rond)). https://we.tl/t-SL7zwIkGmd Quasiment touts les blocs (en 7_**) ont des attributs en double mais c'est bien à chaque fois le même nom de bloc. Merci et je vous souhaite une bonne journée Yann -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour, 1->Sur ce fichier pas mal donc 550 blocs. 2->Habituellement, je ne traite pas ces documents comme ça, je refais à la main (insert un nouveau bloc (sans attribut) au même emplacement), donc je me suis jamais confronté à ce problème (de vouloir garder les infos et qu'elle soit en double). Mais je viens de vérifier j'ai le cas sur l'ensemble des fichiers (et plusieurs variable en doublons en plus). Mon but était de travailler sur ce gros dossier de 450 points lumineux et m'en servir après pour le reste de mes dossiers pour automatiser un mon travail. A quoi vous pensez? cdlt -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour Luna, Heureusement tu m'as donner l'astuce, il suffit de les recréer dans le bloc et après je trouve le plus simple et de créer un autre bloc et de tout remplacer via pTmanager du grand Lee mac, comme cela on repart sur de bonne base (au milieu on modifie le fichier via excel pour garder l'attribut que l'on veut). Mai si tu es une magicienne, la preuve je décrypte toujours ton script du dessus, ( pour voir quoi enlever mais il est tres complexe pour ce que je veux faire qui est juste concaténé une sélection de bloc). Merci à vous Cordialement -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Non il me semble pas, Luna avait un script qu'elle m'a transmis pour supprimer ceux dont il n'a pas de référence d'attribut dans les blocs suite à un bug (ou pour moi je pense un mauvais export d'un SIG), mais j'avais besoin des infos dedans, donc ma solution a été de recréer les attribut dont j'avais besoin. Mais on est d'accord c'est le même fichier où je me prends la tête. https://cadxp.com/topic/57732-bloc-attribut-disparu/ -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
C'est bon j'ai trouver une solution, avec PTManager de leeMac, j'exporte les blocs en fichiers txt et apres je ré-importe le bloc 👍 un probleme de solutionné mais j'avoue ne pas comprendre -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Salut, Justement c'est le but de supprimer aussi un attribut pour faire le ménage (c'est pas de moi qui est mis deux fois IDENT, j'ai récupérer le fichiers comme ça et j'essaie de traiter avec). J'ai recréée 2 attributs IDENT en editant le bloc + attsync mais rien n'y fait, j'ai pas idée comment résoudre ça J'ai tester recréer un bloc avec un autre nom et blockreplace mais quand on remplace ça ne fonctionne pas cordialement -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a répondu à un(e) sujet de yann69690 dans AutoCAD 2020-2024
Bonjour Lecrabe, Tu regarderas mais chez moi ATT-SYNC et BATTMAN ne resouds pas le soucis, je me demande si c'est pas une variable mon problème Est ce que chez vous cela fonction avec mon fichier? Merci par avance, Cordialement -
Concaténer valeur de attribut suivant une sélection manual
yann69690 a posté un sujet dans AutoCAD 2020-2024
Bonjour, Je souhaiterai adapter un code (dont malheureusement je ne comprends pas cela dépasse mes capacités). L'idée est de récupérer des blocs (toujours le même nom) via une sélection manuel (avant de lancer le Lisp ou qu'il demande de sélectionner des objets) dont je souhaiterai concaténer la valeur de ces attributs (IDENT) dans un autre bloc (étiquette) en mettant à jour l'attribut NUM_CANDELABRE. A savoir, j'ai créer deux étiquettes dont 1 avec une ligne et l'autre deux lignes car en le faisant à la main cela m'évite un clic 🤣. Si quelqu'un à la solution dans le bloc du candélabre, j'ai créé un champ dynamique rotation mais je n'arrive pas à mettre à jour (redéfinir) mes anciens blocs (si insérer, les nouveaux sont dynamique mais pas les anciens) Script que je trouve proche de @Luna (merci d'ailleurs il va me servir le script original pour faire des synoptiques): (defun c:SumAtt (/ foo checkblock set-att-list subreal PreIntSuf param bname jsel i name vnam att lst ent) (defun foo (x f) (if f (if (listp x) (mapcar f x) ((eval f) x) ) x ) ) (defun checkblock ( ent blk lst fun / vla att ) (and (setq vla (vlax-ename->vla-object ent)) (vlax-property-available-p vla 'EffectiveName) (wcmatch (foo (vla-get-EffectiveName vla) fun) (foo blk fun)) (setq att (mapcar '(lambda (a) (cons (vla-get-tagstring a) (vla-get-textstring a))) (vlax-invoke vla 'getAttributes))) (setq att (vl-remove-if-not '(lambda (a) (member (foo (car a) fun) (foo lst fun))) att)) ) att ) (defun set-att-list (blk lst / itm tmp) (foreach att (vlax-invoke blk 'getAttributes) (if (setq itm (assoc (vla-get-tagstring att) lst)) (progn (vla-put-textstring att (cdr itm)) (setq tmp (cons itm tmp))) ) ) tmp ) (defun subreal (str num) (setq str (PreIntSuf str)) (apply 'strcat (subst num (cadr str) str)) ) (defun PreIntSuf (str / l x n p i s) (repeat (length (setq l (vl-string->list str))) (setq x (car l)) (cond ( (and p s) (setq s (cons x s))) ( (and (distof (chr x)) n (= "-" (chr n)) ) (setq i (append (list n) i) i (cons x i) ) ) ( (or (distof (chr x)) (and (= "." (chr x)) n (distof (chr n)) ) ) (setq i (cons x i)) ) ( (null i) (setq p (cons x p))) ( i (setq s (cons x s))) ) (setq l (cdr l) n x ) ) (mapcar '(lambda (l) (set (read (vl-symbol-name l)) (reverse (vl-symbol-value l)))) (list 'p 'i 's)) (if (and i (= "-" (chr (car i))) p (= "-" (chr (last p))) ) (setq p (reverse (cdr (reverse p)))) ) (list (vl-list->string p) (vl-list->string i) (vl-list->string s) ) ) (setq param (list "PUISSANCE" "DEBIT" "PUISS_CH" "PUISS_FR" "DEB_CH" "DEB_FR") ; Liste des noms d'attribut bname "*" ; Liste des noms de blocs (séparer les noms par des virgules, sans espaces !) ) (if (setq jsel (ssget (list '(0 . "INSERT") '(66 . 1) (cons 2 bname)))) (progn (repeat (setq i (sslength jsel)) (and (setq name (ssname jsel (setq i (1- i)))) (setq att (checkblock name bname param 'strcase)) (mapcar '(lambda (a / s v) (setq s (strcase (car a))) (setq v (cond ((distof (cdr a))) (0.0))) (setq lst (if (assoc s lst) (subst (cons s (+ (cdr (assoc s lst)) v)) (assoc s lst) lst ) (append lst (list (cons s v))) ) ) ) att ) ) ) (princ "\nVeuillez sélectionner un bloc étiquette...") (if (setq jsel (ssget "_+.:E:S" '((0 . "INSERT") (66 . 1)))) (progn (and (setq name (ssname jsel 0)) (setq att (checkblock name bname param 'strcase)) (set-att-list (vlax-ename->vla-object name) (vl-remove nil (mapcar '(lambda (a) (if (setq b (assoc (car a) lst)) (progn (setq str (cdr a)) (if (distof str) (cons (car a) (rtos (cdr b) 2 2)) (cons (car a) (subreal (cdr a) (rtos (cdr b) 2 2))) ) ) ) ) att ) ) ) ) ) (entmakex (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 10 (getpoint "\nVeuillez spécifier un point d'insertion (MText) : ")) (cons 1 (apply 'strcat (mapcar '(lambda (x) (strcat (car x) " = " (rtos (cdr x) 2 2) "\\P")) lst))) ) ) ) ) ) (princ) ) Fichier exemple : Etiquette.dwg Je vous remercie par avance ça me sauverais pas mal de clic et recopie inutile Cordialement -
Bonjour, Je confirme pour ceux qui sont dans le même problème, il suffit de éditer le bloc, ajouter les attributs que l'on souhaite garder (ici il en avait en double donc créer aussi les attributs en double) + AttSyn => et c'est bon... Pour ceux qui souhaite après _blocreplace ou RIBLOCK (https://www.cadstudio.cz/en/download.asp?file=RIblock ) pour remplacer et ré-attribuer les attributs... La version ++, serait d'automatiser cela avec SAS superAutoScript mais il ne faut pas pousser trop loin 🙂 (pensez vous que on peut editer un bloc avec SAS) Bonne journée Merci Luna, sans toi je n'aurai vraiment pas trouver la solution
-
Luna, Merci, en doublons, je vais essayer de créer un doublon d'attribut, sans grande conviction... Merci beaucoup
