-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Bon, çà devrait être au point. Après vérification, AutoCAD 2004 c'est bien R16.0, pour cette version et les versions antérieures l'option "Unités" n'est plus accessible. Resterait à vérifier si çà marche bien avec 2005. J'attends encore quelques temps pour peaufiner les tests (merci aux éventuels testeurs) avant de la proposer en téléchargement.
-
Salut, tu peux toujours taper _qleader (avec un underscore) çà marche avec toutes les versions, sinon c'est repère rapide du menu Cotations.
-
Je viens de le faire ;)
-
Merci Tramber, Je modifie le LISP en conséquence (2004 c'est bien R16.0 ?)
-
Salut, Le mieux ne serait-il pas de redéfinir tes blocs, essaye donc ce LISP.
-
Est-ce seulement la fonction (vla-get-Units ... ou y a t'il d'autres fonctions qui ne marchent pas avec les versions antérieures à 2004 (je n'ai que 2007 pour tester). Je peux désactiver certaines fonctions ou faire une boite d'alerte en fonction des versions utilisées.
-
Oui, les blocs imbriqués sont traités.
-
J'ai aussi téléchargé la version gratuite et j'ai été impressionné par la convivialité et les capacités de ce logiciel. Mais je dois avouer ne pas l'avoir testé plus que çà, trop occupé avec les nouveautés d'AutoCAD 2007. Mon fils (11 ans) s'en sert beaucoup plus et beaucoup mieux que moi ! [Edité le 10/5/2006 par (gile)]
-
Voilà la Version 1.2 avec la possibilité de spécifier une unité (Aucune, millimètres, centimètres, mètres). La valeur par défaut est celle de la variable INSUNITS (c'est celle qui est affichée à l'ouverture de la boite). http://img141.imageshack.us/img141/483/bloc38fr.png Je crois qu'il ne me reste plus qu'à honorer les requètes en boissons chaudes et viennoiseries, ce que je ferais très volontiers lors de rencontres moins virtuelles ;) Merci encore à vous tous pour ces suggestions d'améliorations (çà permet d'apprendre énormément) et merci par avance pour vos remarques si vous notiez des dysfonctionnements. PS : Lecrabe a écrit : Est-ce parceque j'avais oublie (vl-load-com) dans la première version ? PPS : Lecrabe a écrit (encore !) : Est-ce que cela veut dire qu'il faut limiter l'accès à l'option "Unités" aux versions postérieures à 2005 ? Dans ce cas il suffirait d'ajouter : (if ( (mode_tile "unt" 0) (mode_tile "unt" 1) ) après le (end_list) par exemple. [Edité le 11/5/2006 par (gile)]
-
Salut, Regarde peut-être du côté des variables INSUNITS, INSUNITSDEFSOURCE, et INSUNITSDEFTARGET
-
J'ai un peu avancé ce soir : - Une case pour l'épaisseur des lignes - L'échelle en accès direct - Le traitement des blocs imbriqués dans les blocs sélectionnés - Une amélioration de la mise à jour des attributs des blocs insérés Mais ni café, ni thé, ni croissant ;) Je modifie les codes ci-dessus http://img288.imageshack.us/img288/1492/bloc22hn.png [Edité le 10/5/2006 par (gile)]
-
Merci à vous tous pour les tests et les suggestions, je vois tout çà plus en détail ce soir.
-
Merci Patrick_35, J'avais commencé commme çà, mais comme pour la mise à l'échelle c'était en VisualLISP, j'ai préféré tout traiter de la même façon (et comme çà, j'apprends ...). J'ai un peu modifié le LISP ci dessus. Il y avait un petit dysfonctionnement avec la mise à l'échelle des attributs constants, le problème semble réparé. La mise à l'échelle des blocs dynamiques, n'est pas encore tout à fait au point. Elle se fait, mais la section "personnalisé" de la fenêtre de propriétés ne suit pas, l'emplacement des paramètres non plus.
-
Une petite boite de dialogue pour modifier/redéfinir des blocs. http://img245.imageshack.us/img245/1112/bloc8vm.png On peut choisir entre modifier toue la collection de blocs du dessin courant, tous les blocs insérés dans le dessins (sur des calques dévérouillés) ou de sélectionner les blocs à l'écran. On peut modifier l'échelle globale des blocs (quand on récupère des blocs créés dans une unité différente de celle avec laquelle on travaille) et mettre toutes les entités composants les blocs sur le calque 0, à la couleur DuBloc, dans le style de ligne Dubloc. Toutes les critiques et suggestions d'amélioration sont les bienvenues. * VERSION 1.9 * (25/05/06) http://img408.imageshack.us/img408/3360/bloc39tg.png Le fichier dcl à enregistrer sous Edit_bloc.dcl dans un dossier du chemin de recherche des fichiers de support : edit_bloc:dialog{ label="Redéfinition de blocs"; :boxed_row{ label="Choix des blocs"; :radio_column{ :radio_button{ label="Toute la collection"; key="tbl"; fixed_width=true; allow_accept=true; } :radio_button{ label="Tous les blocs insérés"; key="all"; fixed_width=true; allow_accept=true; } :radio_button{ label="Sélection"; key="sel"; value="1"; fixed_width=true; } } :button{ label=" key="ss"; fixed_width=true; alignment=bottom; allow_accept=true; } } :boxed_column{ label="Propriétés à modifier"; :edit_box{ label= "Échelle globale"; key="fact"; edit_width=8; value="1"; allow_accept=true; } :popup_list{ label="Unités "; key="unt"; edit_width=16; } spacer; :toggle{ label="Calque 0"; key="lay"; fixed_width=true; allow_accept=true; } :toggle{ label="Couleur DuBloc"; key="col"; fixed_width=true; allow_accept=true; } :toggle{ label="Type de ligne DuBloc"; key="tl"; fixed_width=true; allow_accept=true; } :toggle{ label="Épaisseur de ligne DuBloc"; key="el"; fixed_width=true; allow_accept=true; } } ok_cancel; } Le LISP : ;;; Edit_bloc - Gilles Chanteau - version 1.9 - 25/05/06 ;;; ;;; Redéfinit les blocs après modification des propriétés des entités constituant ;;; ces blocs, de l'échelle globale et de l'unité d'insertion (version > 2005). (vl-load-com) (defun c:edit_bloc (/ ;; Fonctions e_b_err edit_prop att_upd sub_upd edit_bl ;; Variables AcDoc dcl_id loop u_lst lay col tl el fact unt ss ) ;;;************************************************************************ ;;; ;; Redéfinition de *error* (defun e_b_err (msg) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) (vla-endundomark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq *error* m:err m:err nil ) (princ) ) ;;;************************************************************************ ;;; ;; Modification des propriétés des entités (defun edit_prop (e) (if (= lay "Oui") (vla-put-Layer e "0") ) (if (= col "Oui") (vla-put-Color e acByBlock) ) (if (= tl "Oui") (vla-put-LineType e "ByBlock") ) (if (= el "Oui") (vla-put-LineWeight e acLnWtByBlock) ) ) ;;;************************************************************************ ;;; ;; Mise à jour des attributs (defun att_upd (obj) (if (= :vlax-true (vla-get-HasAttributes obj)) (progn (if (listp (setq att_lst (vl-catch-all-apply 'vlax-safearray->list (list (vlax-variant-value (vla-getAttributes obj) ) ) ) ) ) (mapcar '(lambda (x) (if (/= fact 1.0) (vla-ScaleEntity x (vla-get-InsertionPoint obj) fact ) ) (edit_prop x) ) att_lst ) ) ) ) ) ;;;************************************************************************ ;;; ;; Mise à jour des blocs imbriqués (defun sub_upd (ob bl / org ins) (if (/= fact 1.0) (progn (setq org (vlax-get bl 'origin) ins (vlax-get (vla-item bl n) 'InsertionPoint) ) (vla-put-InsertionPoint ob (vlax-3d-point (mapcar '+ org (mapcar '(lambda (x) (* x fact) ) (mapcar '- ins org) ) ) ) ) ) ) (edit_prop ob) (att_upd ob) ) ;;;************************************************************************ ;;; ;; Modification des blocs (defun edit_bl (/ n obj lst n_lst name bloc i_unt nb) ;; Liste des blocs à modifier (if ss ;; Sélection ou tous les blocs insérés (progn (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) ) (if (and (not (member (vla-get-name obj) lst)) (= :vlax-false (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) (vla-get-Name obj)) ) ) ) (setq lst (cons (vla-get-name obj) lst ) ) ) ) ;; Ajout des blocs imbriqués à la liste (setq n_lst 0) (while (setq name (nth n_lst lst)) (setq bloc (vla-item (vla-get-blocks acDoc) name)) (repeat (setq n (vla-get-count bloc)) (setq ent (vla-item bloc (setq n (1- n)))) (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") (not (member (vla-get-name ent) lst)) ) (setq lst (reverse (cons (vla-get-Name ent) (reverse lst))) ) ) ) (setq n_lst (1+ n_lst)) ) ) ;; Toute la collection (vlax-for bl (vla-get-blocks AcDoc) (if (and (= :vlax-false (vla-get-isLayout bl)) (= :vlax-false (vla-get-isXref bl)) ) (setq lst (cons (vla-get-name bl) lst)) ) ) ) ;; Modification des blocs (mapcar '(lambda (name) (setq bloc (vla-item (vla-get-blocks AcDoc) name)) (repeat (setq n (vla-get-count bloc)) (setq ent (vla-item bloc (setq n (1- n)))) (if (/= (vla-get-ObjectName ent) "AcDbBlockReference") (progn (if (/= fact 1.0) ;_ Echelle (vla-ScaleEntity ent (vla-get-origin bloc) fact) ) (edit_prop ent) ) (sub_upd ent bloc) ) ) ;; Unités (if ( (if (/= (setq i_unt (vla-get-units bloc)) unt) (vla-put-Units bloc unt) ) ) ;; Mise à jour des blocs insérés (attributs et unités) (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 name)))) (if ss (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n))) ) ) (att_upd obj) (if (and unt (/= i_unt unt) (/= i_unt 0) ) (vla-ScaleEntity obj (vla-get-InsertionPoint obj) (cvunit 1 (nth unt u_lst) (nth i_unt u_lst) ) ) ) ) ) ) lst ) ;; Mise à jour des blocs imbriqués dans les blocs insérés (setq ss (ssget "_X" '((0 . "INSERT")))) (repeat (setq nb (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq nb (1- nb)))) name (vla-get-Name obj) bloc (vla-item (vla-get-blocks AcDoc) name) ) (if (not (member name lst)) (repeat (setq n (vla-get-count bloc)) (setq ent (vla-item bloc (setq n (1- n)))) (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference") (member (vla-get-Name ent) lst) ) (progn (edit_prop ent) (sub_upd ent bloc) ) ) ) ) ) (vla-Regen AcDoc acAllViewports) ) ;;;************************************************************************ ;;; (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) m:err *error* *error* e_b_err ) (vla-StartUndoMark AcDoc) (setq dcl_id (load_dialog "Edit_bloc.dcl") loop 2 u_lst (list "Sans unités" "Pouces" "Pieds" "Miles" "Millimètres" "Centimètres" "Mètres" "Kilomètres" "Micropouces" "Milles" "Yards" "Angströms" "Nanomètres" "Microns" "Décimètres" "Décamètres" "Hectomètres" "Gigamètres" "Unités astronomiques" "Parsecs" ) ) (while ( (if (not (new_dialog "edit_bloc" dcl_id)) (exit) ) (start_list "unt") (mapcar 'add_list u_lst) (end_list) (cond (( (mode_tile "unt" 0) (if (not unt) (setq unt (getvar "INSUNITS")) ) ) (T (mode_tile "unt" 1) (setq unt nil) ) ) (if unt (set_tile "unt" (itoa unt)) (set_tile "unt" (itoa (getvar "INSUNITS"))) ) (if (not ss) (mode_tile "accept" 1) ) (if fact (set_tile "fact" (rtos fact)) (setq fact 1.0) ) (if (= lay "Oui") (set_tile "lay" "1") ) (if (= col "Oui") (set_tile "col" "1") ) (if (= tl "Oui") (set_tile "tl" "1") ) (if (= el "Oui") (set_tile "el" "1") ) (action_tile "tbl" (strcat "(if (= \"1\" $value)" "(progn (setq ss nil)" "(mode_tile \"ss\" 1)" "(mode_tile \"accept\" 0)))" ) ) (action_tile "all" (strcat "(if (= \"1\" $value)" "(progn" "(setq ss (ssget \"_X\" '((0 . \"INSERT\"))))" "(mode_tile \"ss\" 1)" "(mode_tile \"accept\" 0)))" ) ) (action_tile "sel" (strcat "(if (= \"1\" $value)" "(progn (mode_tile \"ss\" 0)" "(mode_tile \"ss\" 2)" "(mode_tile \"accept\" 1))" "(mode_tile \"accept\" 0))" ) ) (action_tile "ss" "(progn (done_dialog 3) (mode_tile \"accept\" 0))" ) (action_tile "fact" (strcat "(if ( "(setq fact (atof $value))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"fact\" 2)))" ) ) (action_tile "unt" "(setq unt (atoi $value))") (action_tile "lay" (strcat "(if (= \"1\" $value)" "(setq lay \"Oui\")" "(setq lay \"Non\"))" ) ) (action_tile "col" (strcat "(if (= \"1\" $value)" "(setq col \"Oui\")" "(setq col \"Non\"))" ) ) (action_tile "tl" (strcat "(if (= \"1\" $value)" "(setq tl \"Oui\")" "(setq tl \"Non\"))" ) ) (action_tile "el" (strcat "(if (= \"1\" $value)" "(setq el \"Oui\")" "(setq el \"Non\"))" ) ) (action_tile "accept" "(done_dialog 1)") (setq loop (start_dialog)) (cond ((= loop 3) (setq ss (ssget '((0 . "INSERT")))) ) ((= loop 1) (edit_bl) ) ) ) (unload_dialog dcl_id) (vla-endundomark AcDoc) (setq *error* m:err m:err nil ) (princ) ) [Edité le 8/5/2006 par (gile)][Edité le 10/5/2006 par (gile)][Edité le 11/5/2006 par (gile)][Edité le 11/5/2006 par (gile)][Edité le 11/5/2006 par (gile)][Edité le 15/5/2006 par (gile)][Edité le 16/5/2006 par (gile)][Edité le 18/5/2006 par (gile)][Edité le 23/5/2006 par (gile)][Edité le 24/5/2006 par (gile)][Edité le 25/5/2006 par (gile)][Edité le 25/5/2006 par (gile)] [Edité le 26/5/2006 par (gile)]
-
Salut, Oui tu peux, et c'est bien là une des grandes nouveauté de la version 2007 Explication en images. Tu fais ton trou par soustraction de solides : http://img52.imageshack.us/img52/5234/porte11nt.png http://img52.imageshack.us/img52/8193/porte29hr.png http://img122.imageshack.us/img122/7901/porte36mh.png Et, tout en gardant la touche CTRL enfoncé tu vas pouvoir mettre en surbrillance et sélectionner le solide soustrait. http://img393.imageshack.us/img393/5650/porte46ud.png http://img312.imageshack.us/img312/3971/porte55yk.png Il suffit ensuite de l'étirer en mode poignée. :D http://img393.imageshack.us/img393/5377/porte62fk.png [Edité le 5/5/2006 par (gile)]
-
Encore une fois EXCELLENT :D
-
modification couleurs de layers (calque)
(gile) a répondu à un(e) sujet de sergeluc dans Pour aller plus loin en LISP
Pour sergeluc, Çà fonctionne effectivement de la même façon, mais pour des collections (tables) à la place des listes, voir ici. NOTA : Pour les types de lignes, dans le dessin courant, il y a un type "Solid line" (continuous) qui n'existe pas dans les fichier *.lin, il peut être prudent de faire un (vl-remove "Solid line" lt_lst) où lt_lst est la liste acquise avec (tblnext ... avant de comparer les listes. Pour Patrick_35 C'est ce que je voulais dire, j'utilise (entmod) avec les blocs, par exemple. Mais la supériorité du vlisp est, dans ce cas (changement de propriétés), largement évidente ! Je n'y avais tout simplement pas pensé, manque d'habitude. Merci à vous deux, j'en ai encore appris un peu plus ... [Edité le 5/5/2006 par (gile)] -
modification couleurs de layers (calque)
(gile) a répondu à un(e) sujet de sergeluc dans Pour aller plus loin en LISP
Pour Patrick_35 J'ai essayé, bien sûr, mais il m'a semblé que çà ne fonctionnait pas avec les tables. Pour sergeluc, Je n'ai aps bien compris la deuxiéme question mais voici quelques lignes de code qui pouront peut-être t'aider : Pour récupérer la liste des types de lignes du fichier AutoCAD.lin : (setq lin_file (open "C:\\Documents and Settings\\\\Application Data\\Autodesk\\AutoCAD 2007\\R17.0\\fra\\support\\acad.lin" "r" ) line (read-line lin_file) ) (while line (if (= (substr line 1 1) "*") (setq lin_lst (cons (substr line (+ 2 (vl-string-position (ascii ",") line)) (- (strlen line) (vl-string-position (ascii ",") line) 1 ) ) lin_lst ) ) ) (setq line (read-line lin_file)) ) (close lin_file) Pour récupérer la liste des types de lignes du dwg courant : (setq lt (tblnext "ltype" T)) (while lt (setq lt_lst (cons (cdr (assoc 3 lt)) lt_lst) lt (tblnext "ltype") ) ) -
modification couleurs de layers (calque)
(gile) a répondu à un(e) sujet de sergeluc dans Pour aller plus loin en LISP
Pour bien faire, si tu veux aussi traiter les calque INACTIFS : (setq lay (tblnext "LAYER" T)) (while lay (if (member (cdr (assoc 62 lay)) '(2 50 51)) (command "_.-layer" "_color" 7 (cdr (assoc 2 lay)) "" "") ) (if (member (cdr (assoc 62 lay)) '(-2 -50 -51)) (command "_.-layer" "_color" -7 (cdr (assoc 2 lay)) "" "") ) (setq lay (tblnext "LAYER")) ) -
modification couleurs de layers (calque)
(gile) a répondu à un(e) sujet de sergeluc dans Pour aller plus loin en LISP
Salut, Pour la première question, si j'ai bien compris : (setq lay (tblnext "LAYER" T)) (while lay (if (member (cdr (assoc 62 lay)) '(2 50 51)) (command "_.-layer" "_color" 7 (cdr (assoc 2 lay)) "" "") ) (setq lay (tblnext "LAYER")) ) -
Salut, Si j'ai bien compris : dans la boite de dialogue "Modifier le style de cote" onglet "Ajuster" coche "Placer le texte manuellement"
-
Pourquoi pas ?... Mais sûrement pas avec toi, tu me semble trop ... ... IMPÉRATIF ;)
-
Les avis sont partagés, voir ce sujet ou l'aide : Manuel d'utilisation -> Hachures, notes, tableaux et cotes -> Cotes et tolérances -> Utilisation des styles de cote -> Définition de l'échelle des cotes
-
C'est le cas pour la version que donne Bill dans le lien que tu donnais plus haut. Je lui ai signalé.
-
J'ai reçu une réponse (en français !) de Bill Gilliss à mon message le prévenant du problème rencontré avec "Le nombre maximal de noeuds d'historique dans un solide".
