-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Selectionner tous les blocs en SCRIPT
bonuscad a répondu à un(e) sujet de Turtle dans Personnalisation, macros, DIESEL
Rien, à part une compatibilité avec des versions étrangères. Mais cela me fait penser qu'il y a aussi la commande XPLODE qui présente des options pour la décomposition. Par contre je ne suis pas sur qu'elle soit valable sur une LT. Autrement quand tu fais un LISTE sur l'un de tes XRef, as tu ? Autoriser la décomposition: Oui -
Pas besoin de constituer une liste, utilise simplement la fonction (substr) Ex: (substr(getvar "dwgname") 2 1)
-
Lisp couper une polyligne 3D en chaque sommet
bonuscad a répondu à un(e) sujet de bviard dans AutoCAD 2009
Pourtant avec la commande PEDIT et l'option MULTIPLE tu peux facilement les re-transformer en polylignes distinctes. -
Bonjour, ?!?! Il n'y a qu'un élément dans la variable (en lecture seule), qui est une chaine de caractère (STRING) pour celle-ci... donc (list (getvar "DWGNAME")) doit suffire...
-
Lisp couper une polyligne 3D en chaque sommet
bonuscad a répondu à un(e) sujet de bviard dans AutoCAD 2009
Bonjour, Et si tu DECOMPOS tout simplement ta polyligne3D! Cela ne te convient pas? -
Un espace manquant, (pour ma part, il vaut mieux des points-virgule que des espaces, moins de risque d'erreur) la macro: ^C^C(setq RAY(getreal "rayon :"));\(setq PT(getpoint "point de passage:"));\decaler;!RAY;\!PT;(setq E1(entlast));;cercle;!PT;!RAY;(setq E2(entlast));cercle;int;\!RAY;effacer;!E1;!E2;;^Z
-
Selectionner tous les blocs en SCRIPT
bonuscad a répondu à un(e) sujet de Turtle dans Personnalisation, macros, DIESEL
Réessayes en modifiant la variable (non documentée) QAFLAGS temporairement. -
:calim: Essayes de convertir avec la routine qui suit. A la fin de l'exécution les objets dont les points de définitions à convertir seront gripés. Tu peux alors choisir de les effacer ou de changer leur propriétés (calque, couleur etc...), ou aussi ne rien faire (ESC pour les dégriper) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:ptdef2pt3D ( / js dxf_cod n lremov ename l_pt l_pr) (princ "\nChoix d'un objet modèle pour le filtrage: ") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "LINE,MLINE,*POLYLINE,POINT,ARC,CIRCLE,ELLIPSE,INSERT") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) ) (princ "\nCe n'est pas un objet valable pour cette fonction!") ) (vl-load-com) (setq dxf_cod (entget (ssname js 0))) (initget "Unique Multiple _Single Multiple") (if (eq (getkword "\nSélection filtrée [unique/Multiple]: ") "Single") (setq n -1) (setq dxf_cod (entget (ssname js 0)) js (ssget "_X" (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov)))) (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) ) n -1 ) ) (repeat (sslength js) (setq ename (vlax-ename->vla-object (ssname js (setq n (1+ n)))) l_pt nil) (setq l_pr (list 'StartPoint 'EndPoint 'Center 'InsertionPoint 'Coordinates 'FitPoints)) (foreach n l_pr (if (vlax-property-available-p ename n) (setq l_pt (if (eq n 'Coordinates) (progn (append (if (eq (vla-get-ObjectName ename) "AcDbPolyline") (l-coor2l-pt (vlax-get ename n) nil) (l-coor2l-pt (vlax-get ename n) T) ) l_pt ) ) (cons (vlax-get ename n) l_pt) ) ) ) ) (mapcar '(lambda (x) (entmake (list (cons 0 "POINT") (assoc 8 dxf_cod) (cons 10 x) (assoc 67 dxf_cod) (assoc 410 dxf_cod))) ) l_pt ) ) (sssetfirst nil js) (prin1) )
-
Bonsoir, J'invite à regarder ce fil ancien Sans avoir essayer à nouveau ce procédé, je pense qu'il est toujours d'actualité et bien utile pour les LT une fois maitrisé.
-
Bonsoir, T'aurais du faire un up de ton message, ou le rafraichir, car je pense qu'il était passé à la trappe... Soit plus explicite sur ton problème, ton besoin est certainement sur le site. Seulement il y a tellement de manières de faire pour résoudre ton problème suivant ce que tu possède en version d'Autocad, de ce que tu désires obtenir et à partir de quoi ?
-
Avec Firefox cela arrive assez souvent. Le mode opératoire est alors dans ce cas: Click-droit sur le document joint à télécharger Choisir dans le menu contextuel: "Enregistrer la cible du lien sous..." (supprimer les caractères qui se rajoute en préfixe du nom de fichier)
-
Export des textes vers un fichier Excel
bonuscad a répondu à un(e) sujet de salvanorigatore dans AutoCAD 2007
??? Tu es le 1er a me rapporter ceci... Je n'ai pas la réponse, je pense que c'est simplement une histoire de police avec une page de code non approprié utilisé avec le navigateur. Avec firefox je suis en encodage de caractères: occidental (iso 8859-1) -
Export des textes vers un fichier Excel
bonuscad a répondu à un(e) sujet de salvanorigatore dans AutoCAD 2007
Un bout de code que j'avais écris à je ne sais quelle occasion. Il crée un fichier au format CSV qui est facilement lu par Excel. (defun c:text_value2csv ( / js dxf_cod mod_sel n lremov file_name cle f_open ename l_pt l_pr nbs) (princ "\nChoix d'un objet modèle pour le filtrage: ") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "*TEXT") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) ) (princ "\nCe n'est pas un objet valable pour cette fonction!") ) (vl-load-com) (setq dxf_cod (entget (ssname js 0))) (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov)))) (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) (initget "Unique Tout Manuel _Single All Manual") (if (eq (setq mod_sel (getkword "\nMode de sélection filtrée, choix [unique/Tout/Manuel]: ")) "Single") (setq n -1) (if (eq mod_sel "All") (setq js (ssget "_X" dxf_cod) n -1) (setq js (ssget dxf_cod) n -1) ) ) (setq file_name (getfiled "Nom du fichier a créer ?: " (strcat (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 3)) "csv") "csv" 37)) (if (null file_name) (exit)) (if (findfile file_name) (progn (prompt "\nFichier éxiste déjà!") (initget "Ajoute Remplace annUler _Add Replace Undo") (setq cle (getkword "\nDonnées dans fichier? [Ajouter/Remplacer/annUler] : ") ) (cond ((eq cle "Add") (setq cle "a") ) ((or (eq cle "Replace") (eq cle ())) (setq cle "w") ) (T (exit)) ) (setq f_open (open file_name cle)) ) (setq f_open (open file_name "w")) ) (repeat (sslength js) (setq ename (vlax-ename->vla-object (ssname js (setq n (1+ n)))) l_pt nil) (setq l_pr (list 'TextString) nbs 0) (foreach n l_pr (if (vlax-property-available-p ename n) (setq l_pt (cons (vlax-get ename n) l_pt) ) ) ) (foreach n l_pt (write-line n f_open) ) (write-line "" f_open) ) (close f_open) (prin1) ) -
Focer l\'écriture sur un calque selon l\'objet
bonuscad a répondu à un(e) sujet de atile dans AutoCAD 2011
En remettant ce sujet ancien au goût du jour, cela peut être une alternative intéressante pour dessiner de façon structurée et de manière plus polyvalente: un copier-propriétés pour la création en sorte. Il est idéal pour compléter un dessin existant mais on pourrait envisager un DWT contenant une légende près-disponible permettant ainsi l'usage dès le début de commande de dessin clonées. Mettre le code en vla serait-il plus puissant pour cloner des paramètre plus fin?.... c'est fort possible, mais je n'ai pas essayé! -
Il y a quand même l'épaisseur générale des objets qui peut être appliqué. C'est sur que cela n'a rien à voir avec l'épaisseur (largeur) que l'on peut avoir avec une polyligne, mais au traçage cela reste applicable. Et puis les segments restent groupés. Cela facilite la manipulation... Il reste que le code n'est parfait, on peut faire mieux.
-
Bonjour, Tourne toi vers (wcmatch) Exemple, pour mettre la couleur 254 à tous les xrefs (vlax-for i (vla-get-Layers (vla-get-ActiveDocument (vlax-get-Acad-Object))) (if (wcmatch (vlax-get i 'name) "*|*") (vlax-put i 'color 254) ) )
-
Projection de points perpendiculairement sur un axe
bonuscad a répondu à un(e) sujet de jarod34 dans Pour aller plus loin en LISP
Et dans l'autre sujet: Bien que la démarche soit similaire voici, un code répondant à la seconde question. Pas tester en profondeur, mais le principe est là. (vl-load-com) (defun c:mirr_point ( / js obj_vla e_name js_pt n l_dxf pt pt_proj pt_new) (princ "\nChoix de la polyligne représentant l'axe mirroir.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nCe n'est pas un objet valable!") ) (setq obj_vla (vlax-ename->vla-object (setq e_name (ssname js 0)))) (redraw e_name 3) (princ "\nChoix des points a reporter symétriquement.") (while (null (setq js_pt (ssget '((0 . "POINT"))))) (princ "\nCe ne sont pas des points!") ) (redraw e_name 4) (repeat (setq n (sslength js_pt)) (setq pt (cdr (assoc 10 (setq l_dxf (entget (ssname js_pt (setq n (1- n))))))) pt_proj (vlax-curve-getClosestPointTo obj_vla pt) pt_new (polar pt (angle pt pt_proj) (* (distance (list (car pt) (cadr pt)) (list (car pt_proj) (cadr pt_proj))) 2.0)) pt_new (list (car pt_new) (cadr pt_new) (caddr pt)) ) (foreach n l_dxf (if (member (car n) '(-1 -2 5 330)) (setq l_dxf (vl-remove n l_dxf)) ) ) (entmake (subst (cons 10 pt_new) (assoc 10 l_dxf) l_dxf)) (grdraw (trans pt 0 1) (trans pt_new 0 1) 3 1) ) (prin1) ) Libre à toi d'agrémenter la procédure... -
Bonjour, Personnellement j'ai déjà été confronté quelquefois à ce problème sous d'autres versions et avec d'autres commandes standard. Pour ma part, c'était avec la commande _SAVE où il ne voulait plus sauvegarder car il y avait une commande en cours...??? A part trouver une parade pour sauvegarder mon dessin et ensuite quitter la session d'Autocad pour la relancer ensuite, et là le problème disparaissait. Je n'ai jamais trouvé la raison (pas vraiment cherché). Peut être des réacteurs actifs....
-
Tu peux remplacer par exemple les 2 dernières lignes précitées par cette unique ligne: (if (eq first_color 1) (setq first_color 7) (setq first_color 1))
-
Un oubli de ma part... généralement je pense à mettre l'instruction (vl-load-com) en tête de fichier. (setq n (length lst_pt) count 1 [surligneur]first_color 1[/surligneur] ) ;..... (setq first_color (rem (1+ first_color) 3)) (if (zerop first_color) (setq first_color 1)) Ici je m'étais simplifié la vie pour générer l'alternance de couleur (numéro de couleur à 1 ou 2) Pour faire d'autres combinaisons revoir la fonction (rem) qui peut te permettre de faire une alternance sur plus de couleurs, mais celles ci doivent se suivre. (3 4 5 6) ou (5 6 7 8 9) etc... Ou alors revoir complétement la génération du numéro de couleur avec une autre technique...
-
Il y a une petite confusion, les ac$ sont plutôt des fichiers temporaires dont seul autocad peut en faire sa cuisine. En effet bien que la structure interne ressemble au dwg, je n'ai jamais pus (non plus) récupérer ce genre de fichier. L'enregistrement automatique est plutôt de la forme sv$ et celui là, on peut le faire pointer dans un autre dossier (temp par défaut) dans les options d'autocad.
-
Bonjour, Une petite rectification, je pense que c'est plutôt lesourd2 . Pour moi, voir cette proposition
-
Bonjour, Pourtant les réglages sont accessibles... http://www.mabul.org/moe/up/10/10/12/wrc4c3in.png
-
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (vla-put-Description item ""))
-
Bonjour ingoenius Regarde ci ceci peut t'inspirer... ((lambda ( / e p1 p2 v1 v2 js_all) (setq e (entsel)) (cond ((and (setq p1 (osnap (cadr e) "_mid") p2 (osnap (cadr e) "_end"))) (setq v1 (getvar "SNAPANG") v2 (getvar "ORTHOMODE")) (setvar "SNAPANG" (angle p1 p2)) (setvar "ORTHOMODE" 1) (setq js_all (ssdel (car e) (ssget "_C" (polar p1 (+ pi (angle p1 p2)) (distance p1 p2)) p2))) (command "_STRETCH" "_crossing" (polar p1 (+ pi (angle p1 p2)) (distance p1 p2)) p2 "_remove" js_all "" p1 pause) (setvar "SNAPANG" v1) (setvar "ORTHOMODE" v2) ) ) ))
