Aller au contenu

bryce

Membres
  • Compteur de contenus

    2 160
  • Inscription

  • Dernière visite

  • Jours gagnés

    16

Tout ce qui a été posté par bryce

  1. Nouvelle version qui ne devrait rien péter dans tes fenêtres... :P ;;; XSYNCPROPS ;;; Bryce, février 2012 ;;; Synchronise les propriétés des calques (couleur, type de ligne, épaisseur) des XRefs sélectionnées ;;; avec les propriétés définies dans le fichier externe, tout en conservant leur état dans le dessin hôte ;;; (actif ou non, gelé ou non, verrouillé ou non, tracé ou non, gelé ou non dans les nouvelles fenêtres). (defun XSyncProps (/ *error* acdoc blocks layers lay b lst ss ent xrefname xfile xdoc xlayname xlinetype) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) blocks (vla-get-blocks acdoc) layers (vla-get-layers acdoc) ) (vla-StartUndoMark acdoc) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (vla-delete ss)) (if (cadr xdoc) (vlax-release-object (car xdoc))) (setq xdoc nil) (vla-EndUndoMark acdoc) (princ) ) (princ "\nSélectionnez les Xrefs à synchroniser <liste>: ") (if (setq ss (ssget '((0 . "INSERT")))) (progn (setq ss (vla-get-activeselectionset acdoc)) (vlax-for ent ss (if (= (vla-get-isxref (vla-item blocks (setq xrefname (vla-get-name ent)))) :vlax-true) (or (member xrefname lst) (setq lst (cons xrefname lst)) ) ) ) );progn if ss (progn (vlax-for b blocks (if (= (vla-get-IsXref B) :vlax-true) (setq lst (cons (vla-get-Name B) lst)) ) ) (setq lst (ListBox "Xref sync" "Choix des Xrefs à synchroniser" (mapcar 'cons lst lst) 2)) );progn if listbox ) (if lst (progn (foreach xrefname lst (setq b (vla-item blocks xrefname) xfile (vla-get-path B)) (or (findfile xfile) (setq xfile (strcat (vl-filename-base xfile) ".dwg")) ) (if (car (setq xdoc (GetDocument xfile))) (progn (vla-reload B) (vlax-for xlay (vla-get-layers (car xdoc)) (if (/= "0" (setq xlayname (vla-get-name xlay))) (progn (setq lay (vla-item layers (strcat xrefname "|" xlayname))) (if (/= "CONTINUOUS" (strcase (setq xlinetype (vla-get-linetype xlay)))) (setq xlinetype (strcat xrefname "|" xlinetype)) ) (vla-put-color lay (vla-get-color xlay)) (vla-put-linetype lay xlinetype) (vla-put-lineweight lay (vla-get-lineweight xlay)) ) ) ) (if (cadr xdoc) (vlax-release-object (car xdoc))) (setq xdoc nil) (princ (strcat "\nXRef synchronisée : " xfile "\n" )) );progn (princ (strcat "\nFichier non trouvé : " xfile "\n" )) );if xdoc );foreach xrefname (vla-regen acdoc acActiveViewport) );progn );if lst (*error* nil) );xsyncprops (defun c:XSP (/) (xsyncprops) ) (defun c:XSYNCPROPS (/) (xsyncprops) ) ;~~~~~~~ SOUS-FONCTIONS ~~~~~~~~~~~ ;; str2lst (gile) ;; Transforme un chaine avec séparateur en liste de chaines (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) ;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste (defun ListBox (title msg keylab flag / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "ListBox:dialog{label=\"" title "\";") file ) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";") ((= 1 flag) "spacer;:list_box{key=\"lst\";") (T "spacer;:list_box{key=\"lst\";multiple_select=true;") ) file ) (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list (mapcar 'cdr keylab)) (end_list) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))) (setq choice (reverse choice))) (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab))))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) ;; getDocument (gile) ;; Accéder à un dessin ouvert ou fermé ;; Retourne un liste dont le premier terme est le document (vla-object) ;; le deuxième T si le document est du type IAxDb nil s'il est du type IAcad (defun getDocument (fileName / document release AxDb) (if (setq filename (findfile filename)) (progn (vlax-for doc (vla-get-Documents (vlax-get-acad-object)) (if (= (strcase (vla-get-FullName doc)) (strcase fileName)) (setq document doc) ) ) (if (not document) (progn (setq document (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) AxDb T ) (vla-open document filename) ) ) ) ) (list document AxDb) ) ;~~~~~~~ FIN SOUS-FONCTIONS ~~~~~~~~~~~ (princ "\nCommande à utiliser: XSYNCPROPS ou XSP") (princ) Toutefois le lisp de Lee Mac signalé par krunch est sans aucun doute plus abouti vu son auteur...
  2. bryce

    Annotation sur un dessin

    Sauf que ça n'existait pas encore sur la 2007... ;) Dans la commande _QLEADER, il y a une option Paramètres pour ne pas avoir à tout changer à chaque nouvelle annotation, de plus certains paramètres dépendent du style de cote courant.
  3. bryce

    Fenêtre de présentation ronde ?

    Bonjour, Pour faire une fenêtre ronde, il suffit de dessiner un cercle en espace Papier, puis de le convertir en fenêtre (il y a une icône dans la barre d'outils Fenêtres ou dans l'onglet Vue du Ruban, sinon c'est la commande -FENETRES option Objet). Tu peux aussi faire une fenêtre rectangulaire standard, puis dessiner un cercle en espace Papier autour de la zone qui t'intéresse, puis délimiter la fenêtre rectangulaire à l'aide du cercle avec la commande FDELIM. Faire des régions + soustraction comme l'indique Tramber n'est nécessaire que si tu veux superposer la fenêtre circulaire sur une autre fenêtre.
  4. bryce

    Annotation sur un dessin

    Bonjour, Il y a la commande "Repère rapide" dans la barre d'outils Cotation (_qleader au clavier) ;)
  5. bryce

    Fenêtre de sélection

    Donc j'ai gagné en fait... :P ;) Essaie peut-être de mettre à jour le driver de la carte graphique, vérifie si le fait d'activer ou désactiver l'accélération matérielle change quelque chose... Tu es à jour au niveau des Service Packs ?
  6. Bonjour, Voici une solution possible: enregistrer un état de calques, réinitialiser les propriétés des calques des xrefs (en mettant VISRETAIN à 0 et en déchargeant/rechargeant la xref, astuce piquée à (gile) dans son lisp XCOL), puis restaurer VISRETAIN et l'état de calques. ;;; XSYNCPROPS ;;; Bryce, février 2012 ;;; Synchronise les propriétés des calques (couleur, type de ligne, épaisseur, transparence, style de tracé) ;;; des XRefs sélectionnées avec les propriétés définies dans le fichier externe, tout en conservant leur état ;;; dans le dessin hôte (actif ou non, gelé ou non, verrouillé ou non, tracé ou non, gelé ou non dans les nouvelles fenêtres). ;;; Nécessite AutoCAD 2008 minimum. (defun XSyncProps (/ *error* acdoc blocks b lst ss ent xrefname vr) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) blocks (vla-get-Blocks acdoc) ) (vla-StartUndoMark acdoc) (setq vr (getvar "VISRETAIN")) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (vla-delete ss)) (layerstate-delete "xsyncprops") (setvar "VISRETAIN" vr) (vla-EndUndoMark acdoc) (princ) ) (princ "\nSélectionnez les Xrefs à synchroniser <liste>: ") (if (setq ss (ssget '((0 . "INSERT")))) (progn (setq ss (vla-get-activeselectionset acdoc)) (vlax-for ent ss (if (= (vla-get-isxref (vla-item blocks (setq xrefname (vla-get-name ent)))) :vlax-true) (or (member xrefname lst) (setq lst (cons xrefname lst)) ) ) ) );progn if ss (progn (vlax-for b blocks (if (= (vla-get-IsXref B) :vlax-true) (setq lst (cons (vla-get-Name B) lst)) ) ) (setq lst (ListBox "Xref sync" "Choix des Xrefs à synchroniser" (mapcar 'cons lst lst) 2)) );progn if listbox ) (if lst (progn (layerstate-save "xsyncprops" 31 nil) (setvar "VISRETAIN" 0) (foreach xrefname lst (setq b (vla-item blocks xrefname)) (vla-unload B) (vla-reload B) );foreach xrefname (setvar "VISRETAIN" vr) (layerstate-restore "xsyncprops" nil) (vla-regen acdoc acActiveViewport) );progn );if lst (*error* nil) );xsyncprops (defun c:XSP (/) (xsyncprops) ) (defun c:XSYNCPROPS (/) (xsyncprops) ) ;~~~~~~~ SOUS-FONCTIONS ~~~~~~~~~~~ ;; str2lst (gile) ;; Transforme un chaine avec séparateur en liste de chaines (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) ;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste (defun ListBox (title msg keylab flag / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "ListBox:dialog{label=\"" title "\";") file ) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";") ((= 1 flag) "spacer;:list_box{key=\"lst\";") (T "spacer;:list_box{key=\"lst\";multiple_select=true;") ) file ) (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list (mapcar 'cdr keylab)) (end_list) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))) (setq choice (reverse choice))) (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab))))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) ;~~~~~~~ FIN SOUS-FONCTIONS ~~~~~~~~~~~ (princ "\nCommande à utiliser: XSYNCPROPS ou XSP") (princ)
  7. bryce

    Fenêtre de sélection

    Bonjour, Ça ressemble plus à un problème graphique qu'à un problème de variable... Tu as relancé AutoCAD ? le PC ? Tu peux essayer de mettre SELECTIONAREA à 0 pour désactiver la couleur des fenêtres, et voir si ça change quelque chose.
  8. bryce

    Baculer dans espace papier

    Ou bien CTAB. :)
  9. Bonjour, Je trouve que ZwCAD fonctionne très bien, bien mieux que les autres clones IntelliCAD que j'ai testé, comme le dit Tramber. Gros avantage par rapport à une LT 2x plus chère : le Lisp ! Il est encore en retard sur AutoCAD concernant certaines fonctionnalités : pas de blocs dynamiques, pas de champs liés à des objets du dessin, extraction de données beaucoup moins puissante, tableaux beaucoup plus limités, pas d'annotativité...
  10. bryce

    FILTRE DE CALQUE

    Command: VPLAYER Enter an option [?/Color/Ltype/LWeight/TRansparency/Freeze/Thaw/Reset/Newfrz/Vpvisdflt]:
  11. bryce

    FILTRE DE CALQUE

    Bonjour, On peut utiliser la commande FCALQUE (_VPLAYER) dans des macros pour geler dans la fenêtre courante des calques. Dans l'exemple ci-dessous, on gèle dans la fenêtre courantetous les calques dont le nom commence par "a-": ^C^Cfcalque;g;a-*;c;;
  12. bryce

    macro x=0 et y=0

    Bonjour, Les macros d'action (fichiers actm) n'ont pas besoin d'être chargées, elles sont chargées automatiquement au démarrage d'AutoCAD. Pour en lancer une depuis un bouton ou au clavier, il suffit d'utiliser le nom de la macro comme une commande (si la macro s'appelle CPB, taper CPB puis Entrée dans la ligne de commande, ou ^C^CCPB pour un bouton).
  13. Bonjour, A ma connaissance les extrémités de polylignes avec largeur sont toujours carrées... <_< Sinon, pour tous les types d'objet, ça se passe dans le style de tracé:
  14. bryce

    Probleme d'insertions

    Oui. :) La macro que tu utilises pour insérer tes textes est prévue pour répondre à la question "Spécifiez la hauteur", puis à la question "Spécifiez l'angle de rotation". Si une hauteur est fixée dans le style, AutoCAD ne pose pas la 1ère question, et du coup la macro "déraille". Ce qui explique que ta macro réponde "12" à la question sur l'angle. ;)
  15. bryce

    STB ET CTB

    Et aucun des deux ne s'applique dans l'onglet Objet de toutes façons... ;)
  16. bryce

    Votre utilisation d'autocad

    Bonjour, - En cas de changement d'échelle de la vue, ou de pan dans la fenêtre, les cotes restent sur place. Il y a la commande COTREGEN, si les cotes sont toujours associées à la géométrie, mais c'est un peu la roulette russe... :P - Sur un dessin créé avec une vieille version, la variable DIMASSOC est à 0 et les cotes faites en EP seront fausses si on ne la met pas à 1 d'abord... - Même avec DIMASSOC à 1, il faut faire très attention à bien utiliser les accrochages aux objets, sous peine d'avoir des valeurs fausses sur certaines cotes... Voilà pour les dangers principaux, auxquels il faut ajouter les inconvénients (cotes visibles seulement dans une présentation, etc.). Bref, je suis plutôt partisan de la cotation en EO, en général depuis une fenêtre de présentation (style annotatif ou "Échelle des cotes selon présentation" suivant les cas). Cela dit, la cotation en EP reste envisageable dans certains cas, comme toujours sur AutoCAD il faut juste savoir ce que l'on fait et pourquoi... <_<
  17. bryce

    Probleme d'insertions

    Bonjour, Dans ce dessin, le style de texte courant a sans doute une hauteur fixée. Modifie ce style pour remettre sa hauteur à 0, ou essaie avec un autre style dont la hauteur est à 0. ;)
  18. bryce

    Création de macro

    Bonjour, A priori c'est lié à l'utilisation de CAL de façon transparente ('CAL), qui fait que la variable USERR3 n'est pas renseignée, et que le résultat des expressions n'est renvoyé qu'à la fin de la macro... <_< Voici une façon de contourner le problème : ^C^Ccal;p1=cur;\cal;p2=cur;\userr3;'cal;trunc(10000*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2)))/100;;_-insert;Pente;@;1;;0;% pente =
  19. bryce

    Création de macro

    Voici un exemple utilisant la commande CAL, pour changer un peu du Diesel... :P ^C^Ccal;p1=cur;\cal;p2=cur;\userr1;'cal;100*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2));;modemacro;% pente = $(getvar,userr1);
  20. bryce

    Création de macro

    Bonjour, Seb48, je ne comprends pas vraiment pourquoi il faut renseigner manuellement la pente avant d'insérer le bloc ?! :unsure: Si tu mesures la distance entre les extrémités du tuyau, sa pente pourrait être calculée par la macro, non ? A moins que la pente dans le dessin ne corresponde pas à la pente réelle ? De même, la coordonnée Y des points dans le dessin ne correspond-elle pas à leur altitude réelle ? Cela éviterait de devoir saisir l'altitude de départ, et de calculer l'altitude à l'arrivée...
  21. Bonjour, Sélectionne une fraction, clic droit > Propriétés de l'empilement, puis bouton Empilement automatique. ;)
  22. bryce

    plantage Autocad 2011 en 3D

    J'ai déjà répondu à ton MP pour te donner mon adresse depuis un bout de temps... ;) brice arobase creao point fr
  23. bryce

    plantage Autocad 2011 en 3D

    Je n'ai pas reçu le fichier, il est peut-être trop gros pour passer par courriel... Essaie avec http://dl.free.fr ;)
  24. bryce

    [Résolu] Boite de dialogue

  25. bryce

    [Résolu] Boite de dialogue

×
×
  • 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é