Aller au contenu

zara

Membres
  • Compteur de contenus

    21
  • Inscription

  • Dernière visite

Tout ce qui a été posté par zara

  1. zara

    REDEFINITION DE BLOC DYNAMIQUE

    Bonjour Christian, Merci pour cette réponse en effet ça pourrait être la solution. Où et comment rajouter une ligne qui permettrai l'ouverture de chaque bloc dans l'éditeur de blocs / un zoom étendue / la fermeture / l'enregistrement. ;; Redefine All Blocks - Lee Mac (defun c:redefall ( / bln dir doc dwg lst obj org spc ) (setq dir "D:\\_DOSSIER ACTIF\\") ;; Directory of Block Library; nil to use Support Path (if dir (setq dir (strcat (vl-string-right-trim "\\" (vl-string-translate "/" "\\" dir)) "\\")) (setq dir "") ) (cond ( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "layer" (getvar 'clayer)))))) (princ "\nCurrent layer locked.") ) ( (setq doc (vla-get-activedocument (vlax-get-acad-object)) spc (vla-get-modelspace doc) org (vlax-3D-point 0 0) ) (terpri) (vlax-for blk (vla-get-blocks doc) (if (and (= :vlax-false (vla-get-isxref blk)) (= :vlax-false (vla-get-islayout blk)) (not (wcmatch (setq bln (vla-get-name blk)) "`**,*|*")) ) (if (setq dwg (findfile (strcat dir bln ".dwg"))) (progn (princ (strcat "Redefining block: " dwg "\n")) (setq obj (vla-insertblock spc org dwg 1.0 1.0 1.0 0.0)) (if (= :vlax-true (vla-get-hasattributes obj)) (setq lst (vl-list* "," bln lst)) ) (vla-delete obj) ) (princ (strcat "Unable to locate block: " dir bln ".dwg\n")) ) ) ) (if lst (progn (princ "Synchronising attributes for redefined blocks...\n") (vl-cmdf "_.attsync" "_N" (apply 'strcat (cdr lst))) ) ) (textscr) (vla-regen doc acallviewports) ) ) (princ) ) (vl-load-com) (princ) Merci par avance Simon
  2. Bonjour, Après l'utilisation d'un lisp pour la redéfinition des blocs du dessin à partir d'un dossier contenant tous les blocs références. J'ai un souci avec les blocs dynamiques.Ces derniers ne se synchronisent pas avec l’éditeur de bloc car un paramètre a été utilisé. Mais quand je rentre dans l’éditeur je fais un zoom étendu et que j'enregistre tout se replace bien. Ça fonctionne bien aussi avec design center en faisant redéfinir mais trop long de faire bloc par bloc. Y aurait il un moyen de synchroniser les blocs comme attsync? https://uptobox.com/n3r2qv3wtipz Merci par avance.
  3. zara

    Changement de langage

    Merci pour la piste. Mais déja testé. Ne fonctionne pas sous ZWCAD. "erreur argument nil" quelque chose comme ca. Dommage.
  4. zara

    Changement de langage

    Bonjour, Merci beaucoup ca fonctionne trés bien. En effet quand je rechange la police en appliquant un nouveau style et relance le lisp visuellement pas de changement mais en fermant et réouvrant le fichier c'est ok. Je souhaité le combiner à ce lisp venant de CADXP (Gile) pour formater la police pour quelle prenne le style du texte sans passer par l'éditeur. Mais je souhaiterai que ça n'affecte que la police et pas la justification. Pensez vous cela possible? (defun c:c_txt (/ ss n txt e_lst str start end lst) (while (not (setq ss (ssget '((0 . "MTEXT")))))) (repeat (setq n (sslength ss)) (setq txt (ssname ss (setq n (1- n))) e_lst (entget txt) str (apply 'strcat (mapcar 'cdr (append (vl-remove-if-not '(lambda (x) (= (car x) 3)) e_lst) (list (assoc 1 e_lst)) ) ) ) ) (while (setq start (vl-string-search "{\\" str)) (setq str (vl-string-subst "" "{" (vl-string-subst "" "}" str start) start ) ) ) (setq start 0) (while (setq start (vl-string-search "\\" str start)) (cond ((= "\\P" (substr str (1+ start) 2)) (setq start (1+ start) end (1+ start) ) ) ((= "\\L" (substr str (1+ start) 2)) (setq end (+ (vl-string-search "L" str start) 2)) ) ((= "\\l" (substr str (1+ start) 2)) (setq end (+ (vl-string-search "l" str start) 2)) ) (T (setq end (+ (vl-string-search ";" str start) 2))) ) (setq str (vl-string-subst "" (substr str (1+ start) (- end start 1)) str ) ) ) (setq lst nil) (if (< 250 (strlen str)) (progn (while (< 249 (strlen str)) (setq lst (cons (cons 3 (substr str 1 250)) lst) str (substr str 251) ) ) (setq lst (reverse (cons (cons 1 str) lst))) ) (setq lst (cons (cons 1 str) lst)) ) (setq e_lst (append (vl-remove-if '(lambda (x) (or (= (car x) 3) (= (car x) 1))) e_lst ) lst ) ) (entmod e_lst) ) (princ) ) Merci encore Cordialement Zara
  5. zara

    Changement de langage

    http://nsa37.casimages.com/img/2017/07/18/170718050659997994.jpg A croire qu'il crée une nouvelle référence...
  6. zara

    Changement de langage

    Merci pour vos réponses. ;) Quand je laisse ARIAL dans le lisp. ZWCAD http://nsa38.casimages.com/img/2017/07/18/17071804461075120.png AUTOCAD http://nsa38.casimages.com/img/2017/07/18/170718044610482331.png En remplacant par ARIAL.TTF ou (C:/windows/fonts/arial.ttf) http://nsa38.casimages.com/img/2017/07/18/170718044610167193.png Autocad ne reconnait pas le arial normal... Merci pour la demande à zwsoft. Cordialement Zara
  7. Bonjour, Je travail sur ZwCAD. J'ai trouvé un lisp sur cadxp (bryce) qui fonctionne très bien pour le changement de style de texte. Il me passe tout en ARIAL. Police Nom: ARIAL -->ok Style: Normal -->ok Langage: 1(introuvable) -->pas ok :angry: Du coup autocad ne me reconnais pas la police. Il y a t-il un moyen de forcer le langage en Occidental? Merci par avance. Zara (defun c:font ( / st acdoc) (vl-load-com) (setq acdoc (vla-get-activedocument (vlax-get-acad-object)) st (vla-get-TextStyles acdoc) ) (vlax-for s st (vla-put-FontFile s "Arial") (vla-put-Height s 0.0) (vla-put-Width s 1) ) (vla-regen acdoc 0) )
  8. Bonjour Olivier, C'est parfait ça fonctionne impeccable. :D Merci beaucoup bonne journée Zara
  9. Hello, Merci beaucoup le crabe pour cette réponse. Mais ton lisp ne transforme que les entités à l’intérieur des blocs et mon souhait serai de passer toutes les entités sauf "l'intérieur" des blocs (j'ai déjà un lisp qui les passe en dubloc) et les hachures. Tout en ducalque sauf "l’intérieur" des blocs et les hachures. Je ne sait pas si je suis clair... Merci encore pour ta réponse Bye Zara
  10. Bonjour, Après plusieurs essais infructueux je n'arrive pas à modifier ce code. Objectif tout mettre dans la couleur ducalque sauf les hachures. Je ne sait pas ou placer cette ligne" (if (/= (vla-get-ObjectName subent) "AcDbHatch")" Cela doit demander une bonne connaissance du langage lisp que je n'ai pas... Merci par avance pour votre aide. Cordialement Zara (defun c:test (/ doc ods) (setq doc (vla-get-activedocument (vlax-get-acad-object))) ;;fix all dimstyles (setq ods (getvar "dimstyle")) (vlax-for d (vla-get-dimstyles doc) (vla-put-activedimstyle doc d) (foreach n '("dimclrt" "dimclrd" "dimclre") (setvar n 256) ) (vla-copyfrom d doc) ) ;;need more code to fix mleader styles, and table styles. Consider stripmtext by others. ;......... ;;fix all objects (does not include mtext color encoding) (vlax-for b (vla-get-blocks doc) (if (= (vla-get-isxref B) :vlax-false) (vlax-for n b (if (wcmatch (vla-get-objectname n) "*Dim*") (vla-put-stylename n (vla-get-stylename n)) (vl-catch-all-apply 'vla-put-color (list n 256)) )))) (setvar "dimstyle" ods) (vla-regen doc acallviewports) )
  11. zara

    Subtilité lisp BLOC

    Bonjour, Je m'excuse d’insister après plusieurs essais infructueux je n'arrive pas à faire la même chose sur ce code. Objectif tout mettre dans la couleur ducalque sauf les hachures. Je ne sait pas ou placer cette ligne" (if (/= (vla-get-ObjectName subent) "AcDbHatch")" Cela doit demander une bonne connaissance du langage lisp que je n'ai pas... (defun c:test (/ doc ods) (setq doc (vla-get-activedocument (vlax-get-acad-object))) ;;fix all dimstyles (setq ods (getvar "dimstyle")) (vlax-for d (vla-get-dimstyles doc) (vla-put-activedimstyle doc d) (foreach n '("dimclrt" "dimclrd" "dimclre") (setvar n 256) ) (vla-copyfrom d doc) ) ;;need more code to fix mleader styles, and table styles. Consider stripmtext by others. ;......... ;;fix all objects (does not include mtext color encoding) (vlax-for b (vla-get-blocks doc) (if (= (vla-get-isxref B) :vlax-false) (vlax-for n b (if (wcmatch (vla-get-objectname n) "*Dim*") (vla-put-stylename n (vla-get-stylename n)) (vl-catch-all-apply 'vla-put-color (list n 256)) )))) (setvar "dimstyle" ods) (vla-regen doc acallviewports) ) Merci Zara
  12. zara

    DECOMPOSITION DES REGIONS

    Bonjour, Merci beaucoup pour cette réponse cela fonctionne parfaitement. :D J'en profite d'avoir Patrick de ZWCAD sous la main pour lui demander si il serai possible pour l'achat de deux licenses de réaliser une demande spécifique. Je souhaiterai utiliser de manière intensive le convertisseur de calque dans Norme CAO. Hélas la fenêtre ne peux s’agrandir comme sur autocad... Pensez vous que cela serai possible? Merci encore pour le lisp. Bien cordialement Zara
  13. Bonjour, Je suis sur ZWCAD les lisp fonctionnent plutôt bien mise à part une qui me serai très utile: Region2Polyline by Gile. Elle se lance bien me filtre bien les regions mais rien de plus les régions restent des regions... Pensez vous qu'il est possible de selectionner les regions et de les décomposer par la suite en modifiant le code. Je suis vraiment pas au point pour déchiffrer et modifier un tel code... :blink: Merci par avance pour la réponse Zara (defun c:Region2Polyline nil (if (setq ss (ssget '((0 . "REGION")))) (:Region2Polyline ss)) (princ) ) ;; Gilles Chanteau- 01/01/07 (defun :Region2Polyline (ss / *error* arcbugle acdoc space n reg norm expl olst blst dlst plst tlst blg pline) ;----- (defun *error* (msg) (if (/= msg "Function cancelled") (princ (strcat "\nError: " msg))) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object))) (princ)) ;----- (defun arcbulge (arc) (/ (sin (/ (vla-get-TotalAngle arc) 4)) (cos (/ (vla-get-TotalAngle arc) 4)))) ;----- ;----- (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace acdoc) (vla-get-ModelSpace acdoc))) (if ss (repeat (setq i (sslength ss)) (setq reg (vlax-ename->vla-object (ssname ss (setq i (1- i)))) norm (vlax-get reg 'Normal) expl (vlax-invoke reg 'Explode)) (if (vl-every '(lambda (x) (or (= (vla-get-ObjectName x) "AcDbLine") (= (vla-get-ObjectName x) "AcDbArc"))) expl) (progn (vla-delete reg) (setq olst (mapcar '(lambda (x) (list x (vlax-get x 'StartPoint) (vlax-get x 'EndPoint))) expl)) (while olst (setq blst nil) (if (= (vla-get-ObjectName (caar olst)) "AcDbArc") (setq blst (list (cons 0 (arcbulge (caar olst)))))) (setq plst (cdar olst) dlst (list (caar olst)) olst (cdr olst)) (while (setq tlst (vl-member-if '(lambda (x) (or (equal (last plst) (cadr x) 1e-9) (equal (last plst) (caddr x) 1e-9))) olst)) (if (equal (last plst) (caddar tlst) 1e-9) (setq blg -1) (setq blg 1)) (if (= (vla-get-ObjectName (caar tlst)) "AcDbArc") (setq blst (cons (cons (1- (length plst)) (* blg (arcbulge (caar tlst))) ) blst))) (setq plst (append plst (if (minusp blg) (list (cadar tlst)) (list (caddar tlst)))) dlst (cons (caar tlst) dlst) olst (vl-remove (car tlst) olst))) (setq pline (vlax-invoke Space 'addLightWeightPolyline (apply 'append (mapcar '(lambda (x) (setq x (trans x 0 Norm)) (list (car x) (cadr x))) (reverse (cdr (reverse plst))))))) (vla-put-Closed pline :vlax-true) (mapcar '(lambda (x) (vla-setBulge pline (car x) (cdr x))) blst) (vla-put-Elevation pline (caddr (trans (car plst) 0 Norm))) (vla-put-Normal pline (vlax-3d-point Norm)) (mapcar 'vla-delete dlst))) (mapcar 'vla-delete expl))) ) )
  14. zara

    Subtilité lisp BLOC

    C'est parfait!!!! :D Merci à vous deux. Très bon week-end!!!!
  15. zara

    Subtilité lisp BLOC

    Salut, Merci pour cette réponse. C'est un honneur pour moi de converser avec "le boss" gile. J'ai remplacer la fin comme indiqué mais le lisp ne se lance plus du tout. :mellow: Aurais je oublié quelque chose? merci encore (defun c:xcv (/ *error* adoc lst_layer func_restore-layers) (defun *error* (msg) (func_restore-layers) (vla-endundomark adoc) (princ msg) (princ) ) ;_ end of defun (defun func_restore-layers () (foreach item lst_layer (vla-put-lock (car item) (cdr (assoc "lock" (cdr item)))) (vl-catch-all-apply '(lambda () (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item)))) ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of foreach ) ;_ end of defun (vl-load-com) (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))) ) ;_ end of vla-startundomark (vlax-for item (vla-get-layers adoc) (setq lst_layer (cons (list item (cons "lock" (vla-get-lock item)) (cons "freeze" (vla-get-freeze item)) ) ;_ end of list lst_layer ) ;_ end of cons ) ;_ end of setq (vla-put-lock item :vlax-false) (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))) ) ;_ end of vlax-for (vlax-for blk (vla-get-blocks adoc) (if (and (equal (vla-get-islayout blk) :vlax-false) (equal (vla-get-isxref blk) :vlax-false) ) ;_ end of and (progn (vlax-for subent blk (if (/= (vla-get-ObjectName subent) "AcDbHatch") (progn (vla-put-layer subent "0") (vla-put-color subent 0) (vla-put-lineweight subent aclnwtbyblock) (vla-put-linetype subent "byblock") );_ end of progn );_ end of if ) ;_ end of vlax-for ) ;_ end of progn
  16. Bonjour, J'utilise le lisp suivant pour éditer les blocs d'un dessin. Cela fonctionne très bien mais je souhaiterai ne pas toucher aux hachures des blocs juste les lignes concernant le changement de couleur. Auriez-vous une idée pour modifier le lisp pour que cela fonctionne? Merci par avance (defun c:norm (/ *error* adoc lst_layer func_restore-layers) (defun *error* (msg) (func_restore-layers) (vla-endundomark adoc) (princ msg) (princ) ) ;_ end of defun (defun func_restore-layers () (foreach item lst_layer (vla-put-lock (car item) (cdr (assoc "lock" (cdr item)))) (vl-catch-all-apply '(lambda () (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item)))) ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of foreach ) ;_ end of defun (vl-load-com) (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))) ) ;_ end of vla-startundomark (vlax-for item (vla-get-layers adoc) (setq lst_layer (cons (list item (cons "lock" (vla-get-lock item)) (cons "freeze" (vla-get-freeze item)) ) ;_ end of list lst_layer ) ;_ end of cons ) ;_ end of setq (vla-put-lock item :vlax-false) (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))) ) ;_ end of vlax-for (vlax-for blk (vla-get-blocks adoc) (if (and (equal (vla-get-islayout blk) :vlax-false) (equal (vla-get-isxref blk) :vlax-false) ) ;_ end of and (progn (vlax-for subent blk (vla-put-layer subent "0") (vla-put-color subent 0) (vla-put-lineweight subent aclnwtbyblock) (vla-put-linetype subent "byblock") ) ;_ end of vlax-for ) ;_ end of progn ) ;_ end of if ) ;_ end of vlax-for (func_restore-layers) (vla-endundomark adoc) (princ) ) ;_ end of defun
  17. Merci. Mais je souhaite faire la transformation sans rentrer dans l'éditeur de bloc de la façon lisp EDIT_BLOC 3.5 Car mon problème récurrent c'est de retrouver mes blocs avec de jolies couleurs tout noir :blink: Peut être la possibilité de modifier ce lisp... Amicalement
  18. Merci quand même.
  19. Bonjour, Voilà je souhaiterai changer la couleur de tout les éléments d'un bloc sauf les hachures.(impossible avec edit_bloc) Auriez vous une idée? Merci par avance
  20. Merci pour cette réponse rapide. Merci pour la fonction layoutlist L'hyperlien fonctionne mais pas de facon dynamique. Ca n'a pas l'air d'etre evident... :unsure:
  21. Bonjour, Deja merci beaucoup pour ce forum qui est une veritable mine d'or. Voila ce que je chercher a faire: J'ai facilement trouvé la variable "ctab" qui me permet de mettre un champ dynamique pour me donner le nom de la présentation. Mais cela ne fonctionne que dans l'espace papier. Y aurait il un moyen de réaliser cette prouesse dans l'espace objet. Cela me permettrai de realiser un sommaire dans l'espace objet sous forme de tableau avec chaque nom de présentation qui pointerai vers chaque onglet de facon dynamique. Merci d'avance pour votre aide. Simon
×
×
  • 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é