-
Compteur de contenus
254 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par willy95
-
Même comme cela, ça ne marche pas :( (setq Txt_Alti (cdr (assoc 1 (entget (car (nentsel "\nSélectionner l'altitude du bloc :")))))) (setq xypt (list (car (cdr (assoc 10 (entget Txt_Alti)))) (cadr(cdr (assoc 10 (entget Txt_Alti)))))) Je suis vraiment pas doué...
-
C'est presque bon tous ça, mais comment je peux insérer un nouveau point au coordonnée du bloc sélectionné ? J'ai essayer ça, mais ça semble récupérer la valeur et non les xy. (setq Txt_Alti (cdr (assoc 1 (entget (entnext (entnext (car (entsel "\bloc\n")))))))) (setq xypt (cdr (assoc 70 (entget (car Txt_Alti))))) (command "_point" xypt)
-
Merci à vous, Je regarde ça avec attention. Ps: pour les images par un hébergeur (serving.com)et j'ai collé l'adresse de la miniature.
-
voila par Wetransfer (je suis idiot parfois) Bloc
-
C'est l'étiquette ALT du bloc TCPOINT Pour le bloc, je ne sais pas insérer un dwg sur le forum.
-
Pardonnez moi pour ma mauvaise façon de m'exprimer. Je cherche à appliquer la valeur se trouvant dans une étiquette d'un attribut (l'altitude d'un point) dans un simple texte que j'oriente suivant 2 points. Dans mon code précèdent cela fonctionne mais je suis obligé de sélectionner plusieurs fois l'attribut puis le texte insérer, je cherche à sélectionner 1 seul fois l'attribut et que le texte prenne la valeur de l'étiquette Altitude. Ci dessous le point avec l'attribut altitude : et ci dessous le simple Texte rajouté qui récupère l'altitude: En espérant que ce message permet de me faire comprendre et que quelqu'un m'aide sur mon sujet. En vous remerciant de votre compréhension.
-
Bonjour a vous tous, Personne ne peut vraiment m'aider sur ce coup la ? Merci
-
Bonjour à tous, J'ai comme à mon habitude un problème de simplification, mais étant plutôt compliqué dans ma tête je n'y arrive pas, je m'explique (ou en tout cas j'essaye) : J'ai pour base un bloc avec attribut (un point topo avec un matricule, une altitude et éventuellement un code), une ligne qui traine pas loin voir qui passe par ce point (une bordure de trottoir) et grâce à ce code (un Frankenstein-code) je sélectionne 2 points pour l'orientation futur de mon texte (un simple texte avec un point) je sélectionne le fameux point et l'altitude du point doit s'écrire à la place de mon texte insérer. Et mon problème dans ce bout de code est le suivant j'ai trop de sélection à faire et refaire, comment dois-je faire pour simplifier la chose ? L'idéal pour moi serait : 1-orientation par deux points 2-selection du bloc point fin Voici mon brico-code même si les critiques vont être dur, j'espère vous lire avec une réponse positive à mon questionnement. Merci d'avance. (Defun C:altip ( / OldAccr p ang di) (SetVar "CMDECHO" 0) (Setq OldAccr (Getvar "OSMODE")) (Setvar "OSMODE" 8) (defun OuEstTu() (IF (= (FindFile "Altip.DWG") Nil) (Prompt "\nLe Fichier Altip.DWG est introuvable.") (Progn (Command "_Insert" "*Altip" "0.0,0.0" "" "") (DESSINE)))) (Setvar "OSMODE" 512) (setq p11 (getpoint "\n1er point pour l'Orientation : ")) (setq p12 (getpoint "\t2ème point pour l'Orientation : ")) (setq di11 (/ (Distance p11 p12) 2)) (setq p13 (polar p11 (angle p11 p12) di11)) (setq p14 (polar p13 (+ (angle p13 p12) (/ pi 2.0)) (/ 1.0))) (setq p15 (polar p14 (- (angle p13 p12) (/ pi 2.0)) (/ 2.0))) (setq Ang1 (angle p11 p12)) (setq Ang2 (angtos Ang1 2 2)) (setq Ang3 (atof Ang2)) (setq Ang4 (+ Ang3 300)) (setq zz (caddr p)) (if (and (setq ent1 (car (entsel) )) ; Sélection d'une entité (wcmatch (cdr (assoc 0 (entget ent1) )) "*")) (setq ins_pt (cdr (assoc 10 (entget ent1) )))) (Command "_INSERT" "Altip" ins_pt "" "" Ang4) (Command "_Explode" "d") (setq T1 (entlast)) (command "_.layer" "CH" "0" "" "") (Setvar "OSMODE" OldAccr) (setvar 'pdmode 32) (setvar "PDSIZE" 0.1) (defun extract_txt ( flag msg / ent dxf_ent typ_ent) (while (null ent) (setq ent (nentsel (strcat "\nChoisir le " msg ": "))) (cond ((not (null ent)) (setq typ_ent (cdr (assoc 0 (setq dxf_ent (entget (car ent)))))) (cond ((member typ_ent '("TEXT" "MTEXT" "ATTRIB")) (if flag (progn (entmod (subst (cons 1 (extract_txt nil "L'ALTITUDE A APPLIQUER")) (assoc 1 dxf_ent) dxf_ent)) (if (assoc 330 dxf_ent) (entupd (cdr (assoc 330 dxf_ent))))) (cdr (assoc 1 dxf_ent)))) (T (setq ent nil) (princ "\nN'est pas un Texte MTexte ou Attribut!") )))))) (defun subtitutexte ( / ) (extract_txt T "TEXTE à MODIFIER") (prin1)) (princ) (subtitutexte) )
-
Encore une fois : Merci Gile, C'est vrai que j'avais la réponse devant les yeux et je ne la voyais pas, je ne pensais pas pouvoir utilisé "Strcat", ça marche niquel, merci beaucoup. Maintenant je complète encore plus loin mon code qui je l'espère marchera à merveille une fois terminé. Encore merci et à la prochaine :blink:
-
Merci Gile, ça marche presque comme je souhaite :D mais j'aimerai incorporer des valeurs de variable à l'intérieur du texte et la je bloque à nouveau. (setq Variable1 "Kiki") (if (setq file (getfiled "Créer un fichier" "" "xml" 1)) (writeUTF-8 "<?xml version=\"1.0\" encoding=\"utf-8\" ?> Kiki <Liens> <Lien Site=\"CADxp\" Url=\"http://cadxp.com\" /> <Lien Site=\"gileCAD\" Url=\"http://gilecad.azurewebsites.net\" /> </Liens>" file ) ) Merci par avance pour votre aide.
-
Effectivement ce doit être la bonne piste mais je suis pas assez bon pour l'intégrer correctement dans mon code, j'ai bien essayé plusieurs manière qui sont restés sans résultat , peux tu m'aider ? (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (setq file (open file "w") (write-line (strcat "</immeuble>") file) (close file)
-
Oui effectivement c'est bien comme cela que je fais, mais j'aimerai bien pourvoir l'exporter directement au format UTF-8, pour ne pas avoir à faire cette manipulation même si simpliste quelle soit. :) J'imagine que cela doit être complexe vu vos réponses. Merci pour votre compréhension. Merci Gile je vais essayer d'intégrer ces lignes de code.
-
Bonjour, J'exporte des données récupérés dans autocad pour un export XML pour les Notaires, ils importent ce fichier XML au format UTF-8 dans leurs base. Actuellement, quand j'écris en ANSI le fichier n'est pas reconnu en tant que XML, il faut obligatoirement que je l'enregistre après mon export à chaque fois au format UTF-8 dans le bloc-note préalablement sinon il ne le reconnait pas en tant que xml. C'est pourquoi je cherche à modifié mon code pour qu'il enregistre directement le fichier exporté en UTF-8. Merci pour votre aide si précieuse.
-
Bonjour, j'aimerai savoir comment écrire un fichier directement en UTF-8 ? J'ai beau chercher comme à mon habitude mais je bute sévère, c'est si complexe que cela ? je pars sur une base classique d'écriture de mes données dans un txt ANSI comme ceci : (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (setq file (open file "w") (write-line (strcat "</immeuble>") file) (close file) Merci par avance pour vos réponses qui je l'espère grandement m'aiderons beaucoup.
-
Bonjour à vous tous, Il y à bien longtemps que j'utilise un code et une macro excel pour exporter mes blocs avec attributs dans excel et la : mauvaise surprise :blink:, mise à jour Windows, maintenant version 10 et le code ne fonctionne plus :angry: , j'ai essayer comme à mon habitude de tout bricoler mais sans resultat <_< , alors si quelqu'un comprends le pourquoi du comment qui ne marche plus, j'en serai bien reconnaissant. ;) "J'ai pensé (car oui je pense) que cela viendrait d'une histoire d'orientation de répertoire, mais la je bloque aussi." :( (defun RM (/ abks aexc asht find x xbks xlpath xshts) ( setq xlpath (FindFile "Import-Surfaces.XLS")) (setq aexc (vlax-get-or-create-object "Excel.Application") xbks (vlax-get-property aexc 'Workbooks)) (if (not (vl-file-systime xlpath)) (progn (setq find nil) (setq abks (vlax-invoke-method xbks "Add"))) (progn (setq find T) (setq abks (vlax-invoke-method xbks "Open" xlpath)))) (setq xshts (vlax-get-property abks "Sheets") asht (vlax-get-property xshts "Item" 1)) ;<-- nombre option (vla-put-visible aexc :vlax-true) (vlax-put-property aexc "ScreenUpdating" :vlax-true) ; pour voir les changements (vlax-put-property aexc "DisplayAlerts" :vlax-true) ; initialise l'interaction (vlax-invoke-method asht "Activate") ;une option (vlax-invoke-method aexc "RUN" "Import_AUTOCAD") ;<-- nom de la macro dans le fichier Excel (vlax-invoke-method abks 'SaveAs xlpath -4143 nil nil :vlax-false :vlax-false 1 2 ) (mapcar (function (lambda (x) (vl-catch-all-apply (function (lambda () (progn (if x (vlax-release-object x)))))))) (list asht xshts abks xbks aexc)) (setq aexc nil) (gc) (gc) (princ)) (princ) (rm)
-
Bonjour à tous et plus particulièrement à toi bonuscad, J'adore ce code :) et je cherche à coller au mieux avec mon besoin, bref, comment peut-on ne pas sélectionner le texte cible qui est dans mon cas inséré juste avant, j'ai bien testé plusieurs idées :blink: avec (entlast) et une variable T1 insérée un peu partout, mais sans résultat. :angry: (Command "_INSERT" "*MonTexte" P1 "" "" P2) (setq T1 (entlast)) Un peu d'aide sur ce coup de pouce me ferai grand bien. :D Merci par avance.
-
Un grand MERCI à toi Zebulon_ pour cette explication très clair, :D j'étais un peu dans cette optique et la c'est vrai qu'il va falloir que je comprenne pourquoi et comment ma valeur Z est à milli chouïa différente de mes valeur X et Y. (surement une histoire d'arrondi quelque part) bref Merci encore pour cette réponse qui va me rendre moins bête et plus prudent à l'avenir. :P
-
Bonjour, Après plusieurs comparaisons, je ne comprends pas la différence entre deux blocs :blink: , car j'arrive à ajuster ou prolonger une ligne sur le bloc 1 et PAS sur le bloc 2 ??! (voir fichier dwg avec les blocs) Si quelqu'un peut m'expliquer le pourquoi du comment, j'en serai bien moins bête et je pourrai éventuellement modifier mes blocs pour qu'ils puissent permettre d'ajuster ou de prolonger. :D Merci par avance pour vos réponses. :) Symboles.zip
-
Bonjour à tous, Merci Gile pour cette réponse qui m'ouvre encore les yeux sur de nouvelles aventures. :D Grâce à tes lignes de codes que j'ai décortiquée :wacko: , j'ai réussi à intégrer ma page suivante en fermant la précédente. J'ai bien sûr adapté ce principe à mon code avec et comme toujours un style non conventionnel, mais cela marche à merveille. :wub: Encore merci et à une prochaine (surement un blocage quelque part dans mes idées futures).
-
Bonjour, à présent "j'arrive" à faire appel à des boite de dialogue via le lisp, mais car il y a mais, <_< je bloque sur "Suivant", je m'explique : je lance un lisp qui appel une boite de dialogue avec des choix de symboles à insérer via des petites images "sld" et jusque la cela fonctionne à merveilles :D (merci au passage des précieux conseils aux Membres de ce site sans qui je n'arriverai à rien) et j'aimerai pouvoir grâce à un bouton suivant que j'ai insérer comme prévu mais en revanche je n'arrive pas à lui faire fermer la boite en cour pour en ouvrir une nouvelle, malgré de nombreuses tentatives aussi foireuses les unes que les autres. :angry: Alors si une Ame charitable traine sur ce post et qui souhaite aider son prochain ou plutôt Suivant ce serait vraiment sympa. Jetez un petit œil sur l'idée du code suivant, en vous remerciant par avance pour votre aide future. :unsure: (setq Slides@ (list nil "Choix1" "Choix2" "Suivant") Choix1$ (nth Slides@) Choix2$ (nth Slides@) Suivant$ (nth Slides@) Folder$ "" Return$ "") (setq Dcl_Id% (load_dialog "MaBoitePage1.dcl")) (new_dialog "MaBoitePage1" Dcl_Id%) (set_tile "Choix1" Choix1$) (set_tile "Choix2" Choix2$) (set_tile "Suivant" Suivant$) (action_tile "Choix1" (setq Return$ Choix1$") (action_tile "Choix2" (setq Return$ Choix2$") (action_tile "Suivant" (setq Return$ Suivant$") (start_dialog) (unload_dialog Dcl_Id%) (IF (= Return$ Choix1$) (progn (command "_insert" "Choix1" 0,0 1 1 0) (prin1)) (IF (= Return$ Choix2$) (progn (command "_insert" "Choix2" 0,0 1 1 0) (prin1)) (IF (= Return$ Suivant$) (progn (..................) (prin1))
-
Importation pour mise à jour
willy95 a répondu à un(e) sujet de willy95 dans Pour aller plus loin en LISP
Merci Patrick_35 pour cette réponse si réactive, en revanche même si je vais paraitre insolent, et après avoir tester tes codes, j'ai trouver que LXL correspondrait pratiquement à mon besoin, sauf que si j'ai tout compris, il faut préciser les noms de cellules en rapport avec les étiquettes pour faire le lien (fichier lié), mais j'ai 200 bloc par fichiers, donc impossible de ciblé les numéros de cellule un à un. Une alternative un peu plus simple pour mon cas serait surement magnifique, en sélectionnant uniquement une étiquette d'un bloc type dans autocad, mais pour cela il faudrait faire lien avec le bon bloc via une autre étiquette qui dans mon cas serait le "Numéro de Bureau". Bref quand je trouve le bloc avec l'étiquette "Numéro de Bureau" et sa valeur "102", je modifie l'étiquette "Nom de l'occupant" du même bloc suivant la colonne D de la même ligne. J'espère être clair car j'ai du mal à retranscrire mon soucis :unsure: Merci par avance pour votre aide -
Bonjour à tous, Après avoir feuilleté de nombreux sujets sur le Forum, je suis resté sans aiguillage à mon soucis. J'ai donc un problème et j'aimerai bien avoir une piste "ou même une autoroute" qui pourrait répondre à mon besoin. Aujourd'hui j'arrive à exporter le contenu des blocs avec attributs réalisés dans Autocad vers Excel, en revanche pour un besoin qui va se révéler plusieurs fois, je souhaiterai remplacer la valeur d'une étiquette qui aurait été modifiée dans le tableau excel et qui après le lancement d'une routine en lisp, mettra à jour la valeur dans l'étiquette dans le bloc autocad en recherchant par exemple la valeur d'une des étiquettes présente. Exemple : Le Bloc dans Autocad contient (Nom du Bloc : OCCUPA): Numéro de bureau : 102 Nom de l'occupant : Pierre Martin Dans le tableau excel : Colonne A : OCCUPA Colonne B : Numéro de Bureau -> 102 Colonne C : Nom de l'occupant -> Pierre Martin Si on change dans le tableau excel le nom de l'occupant par "Fleur Vincent" (petite sauvegarde du fichier xls) et l'on lance la routine dans autocad qui modifie le nom de l'occupant dans le bloc en recherchant l'étiquette du Numéro de bureau, soit 102 et donc son Nom de l'occupant. Si une Ame charitable pourrait plus que me guider sur ce cout la si j'ai été assez clair, j'en serai vraiment ravie.
-
Bonjour à tous, Je cherche à savoir si il existe un lisp qui pourrait retranscrire dans un code les éléments formant un bloc avec attribut ou se trouve uniquement des étiquettes avec des couleurs, des calques, des styles de textes et des hauteurs, par une simple sélection du bloc. :blink: Autrement dit, je souhaite intégrer dans un code la réalisation des blocs sans avoir de dwg qui trainent en intégrant par la suite ce résultat directement dans le code qui "fabriquera" ce bloc de lui même sans erreurs. J'ai plusieurs blocs à faire de nature différentes et cette simplification me serait bien utile. B) J'imagine bien les étapes suivantes : Phase d'enregistrement: :D 1- sélection du bloc 2- écriture dans un fichier txt/lsp des éléments formant le bloc Phase de création: :P 3- lecture du fichier précédent reformant le bloc dans un dessin vierge. Merci d'avance pour vos idées ou suggestions.
-
Super c'est nickel grâce à l'intégration du code de Gile et à la précision de Bruno mon bout de code va me simplifier la vie ;) Merci pour cette réponse réactive :D
-
Bonjour, Bien que pour certains c'est encore un retour dans le passé , j'adore cette histoire de centre de gravité :wub: , à tel point que j'essai de l'intégrer dans certains de mes codes, j'ai en partie réussi mais une question reste sans réponse malgré mon acharnement à vouloir l'adapter. En fait je pose déjà la question de la sélection de la polyligne pour d'autre besoins et j'aimerai que "pt-cen" ne me redemande pas l'objet et qu'il utilise "Sel1" comme selection. Mais comment modifier cette variable "pl" en "Sel1" ?? :wacko: Précédemment dans mon code : (SetQ sel1 (EntSel "\nSelectionnez le périmètre: ")) Merci pour vos réponses qui j'espère m'inspirerons encore...
