Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. Un autre exemple :) ((lambda ( / e le_calque) (while (not (setq e (entsel"\nChoix d'un objet: ")))) (setq le_calque (cdr (assoc 8 (entget (car e))))) (alert (strcat "\n" "Sélectionne le calque " le_calque "\nqui contient des Lignes/Polylignes/Mutilignes/Splines de couleur VERT" "\net des Hachure de type Utilisateur." ) ) (setq js (ssget "X" (list '(-4 . "< OR") '(-4 . "< AND") '(0 . "*LINE") '(62 . 3) (cons 8 le_calque) '(-4 . "AND>") '(-4 . "< AND") '(0 . "HATCH") '(2 . "_U*") (cons 8 le_calque) '(-4 . "AND>") '(-4 . "OR>") ) ) ) (cond (js (sssetfirst nil js))) )) Quant au (ssmenb) et (sslength), il te seront utile si tu a besoin de parcourir ton jeu de selection pour modifier une propriété particulère d'un type d'entité seulement.
  2. bonuscad

    ordre des calques_2005

    Hi hi! C'est bien ce que je disais, un caractère spécial! Essayer de coller en ligne de commande, ceci pour le fun dans un nouveau dessin, vous verrez vous aurez 2 calques "0" (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "0\240") (70 . 0) (62 . 7) (370 . -3) (6 . "Continuous") ) )
  3. bonuscad

    ordre des calques_2005

    Jifi, Pourrais tu, par curiosité, faire un copier-coller de ces quelques lignes dans les fichiers incriminés? Ceci dans la ligne de commande et donner le résulat. Merci. ((lambda ( / def_lay) (setq def_lay (tblnext "LAYER" T)) (print (cdr (assoc 2 def_lay))) (while (setq def_lay (tblnext "LAYER")) (print (cdr (assoc 2 def_lay))) ) (prin1) ))
  4. Au message commande: Tape "Snapang" et met le à "0"
  5. bonuscad

    Pb SCU (super urgent)

    J'ai oublié de préciser que cela n'est valable QU'AVEC des Scu nommés. Tu charge le lisp dans ton dessin origine, puis tu l'execute par "exportscu" (pas de message particulier: désolé je le livre tel qu'a l'origine) Tu te rends dans ton dessin cible, tu charge la routine, puis lance "importscu", tu devrais retrouvé tes scu nommés précédé tu signe "$"
  6. bonuscad

    longueur de polylignes

    On peut regretter qu'Autodesk n'est pas fait une commande "PERIMETRE" comme il a conçu la commande "AIRE" qui permet de faire des additions ou soustractions de surface. Néanmoins ce sujet à déjà été maintes fois abordé ici et ailleurs, et chacun y a fait sa proposition. Donc je suis sur qu'une recherche sera positive et que tu trouveras une solution correspondant exactement à ton besoin ;) Je ne mets pas de liens car il y en aurait beaucoup (cela évitera de favoriser une réponse particulière, car toutes sont interressantes, c'est un choix à faire).
  7. bonuscad

    ordre des calques_2005

    Pour obtenir 2 fois le calque "0", vu que les espaces sont acceptés dans les noms de calque, ne serais ce pas le cas: le calque "0" par défaut et le même avec de nombreux espace puis un "." au delà de 32 caractères Je crois aussi qu'on peut utiliser un caractère "blanc" différent de l'espace peut être (Alt + 0160) , je ne sais plus. Si c'est le cas, c'est une utilisation tordue de caractère spéciaux.
  8. C'est exactement ICI Notes: Prends soin d'enregistrer en copie au format texte depuis excel en choisissant comme séparateur de préférence la tabulation. Le format obtenu doit être de la forme: N° X Y Z ou X Y Z ou X Y Extrait du Zip topo.lsp et topo.lsp et place les dans un dossier de recherche d'autocad (à cause du DCL) Et hop, cela devrait rouler ;)
  9. bonuscad

    Pb SCU (super urgent)

    Comme je n'ai pas retrouvé de liens, je fait un copier-coller d'une routine de Michael Puckett. Celle ci est identique à l'original, sauf que j'ai corrigé les commandes non-internationalisé et mis le peu de message en Français. Si cela pose problème, je laisse le soin à notre cher Webmaster Patrick, d'effacer la réponse. ; ------------------------------------------------------- ; ; c:UcsExport / c:UcsImport 1.0 December 2000 ; ; Copyright (c) 2000 Michael Puckett ; ; All Rights Reserved ; ; Written Q & D for Dennis Shinn, Internet Gentleman ; ; ------------------------------------------------------- ; ; This code, however trivial, is a copyrighted work, ; and protected by all applicable laws and statutes. ; ; ------------------------------------------------------- ; ; This code is provided as is, with all specified and ; unspecified shortcomings, flaws and errors, without ; warranty and without claim that it is suited for any ; particular use. Sux that this has to be written but ; unfortunately, it's necessary. ; ; ------------------------------------------------------- ; ; Notes ; ; Exporting is always to the same file and importing ; same. The file is "UcsExport.ucs", and it will reside ; in the temporary directory - if it can be made. ; ; Exported UCSs are prefixed with a "$". Any existing ; UCS by the same name in a drawing importing said UCSs ; will be overwritten, no questions asked. ; ; Existing UCSs prefixed with a $ will NOT be exported. ; ; ------------------------------------------------------- ; ; Shortcomings ; ; Due to the limitations of text representations of real ; numbers, the accuracy of this utility may induce errors ; into your drawings. Accuracy of this utility is limited ; to 15 decimal places. ; ; Please keep this in mind when using this utility. Had I ; more time I'd write a version that retained full decimal ; accuracy (do-abled in VB/Delphi/C), but alas, too many ; other projects on the go. ; ; ------------------------------------------------------- (defun c:ExportScu ( / *format* f dat lst name lunits lprec dimzin) (defun *format* (val / typ) (cond ( (eq 'real (setq typ (type val))) (rtos val 2 15) ; I don't care what tony says ) ( (eq 'int typ) (itoa val) ) ( (eq 'str typ) (strcat (chr 34) val (chr 34)) ) ( (eq 'list typ) (mapcar '*format* val) ) ( t val ) ) ) (while (setq dat (tblnext "ucs" (null dat))) (if (/= "$" (substr (cdr (assoc 2 dat)) 1 1)) (setq lst (cons (entget (tblobjname "ucs" (cdr (assoc 2 dat)))) lst ) ) ) ) (if lst (cond ( (setq f (open (setq name (strcat (getvar "tempprefix") "UcsExport.ucs") ) "w" ) ) (setq dimzin (getvar "dimzin") lunits (getvar "lunits") lprec (getvar "luprec") name (strcat (getvar "tempprefix") "UcsExport.ucs") ) (setvar "dimzin" 8) (setvar "lunits" 2) (setvar "luprec" 8) (foreach i lst (princ (apply 'append (mapcar '(lambda (j / c) (cond ( (eq 2 (setq c (car j))) (list (cons 2 (substr (strcat (chr 34) "$" (cdr j) (chr 34)) 1 31 ) ) ) ) ( (not (member c '(-1 5 330))) (list (cons c (*format* (cdr j)))) ) ) ) i ) ) f ) (princ "\n" f) ) (setq f (close f)) (setvar "dimzin" dimzin) (setvar "lunits" lunits) (setvar "luprec" lprec) ) ( t (princ (strcat "\nDésolé! Ne peut ouvrir <" name "> pour l'export.")) ) ) ) (prin1) ) (defun c:ImportScu ( / f dat name cmdecho) (cond ( (setq f (open (setq name (strcat (getvar "tempprefix") "UcsExport.ucs") ) "r" ) ) (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (while (setq dat (read-line f)) (if (tblsearch "ucs" (cdr (assoc 2 (setq dat (read dat))))) (command "_.ucs" "_delete" (cdr (assoc 2 dat))) ) (entmake dat) ) (setq f (close f)) (setvar "cmdecho" cmdecho) ) ( t (princ (strcat "\nDésolé! Ne peut ouvrir <" name "> pour l'import.")) ) ) (prin1) ) (prompt "\nUCS_Ex-Im.lsp correctement chargé") (prompt "\nTapez ExportScu et ImportScu pour exécution.") (prin1)
  10. Bonjour, A mon avis tu utiliseras plus (avec autocad) le language HPGL2 que le Post-Script. Les drivers HP d'autocad utilisent trés bien ce language. Si tu es amené à faire de l'imagerie avec PhotoShop par exemple, le Poscript sera mieux approprié. Je pense qu'il serait mieux (avec les 2000 euros) de rajouter au traceur de la mémoire ou 1 DD conséquent. Si le traceur n'est pas géré par un serveur d'impression (en réseau), cela libérera ton PC plus rapidement. C'est config peut être interessante si tu as une production importante de sortie papier. Mais des avis supplémentaires t'aideront à faire ton choix ;)
  11. bonuscad

    traceur hp750cplus

    Salut Normalement dans la config sur traceur (materiel) ou du pilote (logiciel), tu devrais pouvoir activer "Surface encrée". Si cette option est active le traceur coupe APRES le tracé. Attention lors de l'utilisation de rotation de feuille cela peut ne pas fonctionner comme il faut (il déroule le papier quand-même) :mad:
  12. bonuscad

    fond noir ou blanc

    Ou encore ce sujet
  13. bonuscad

    Problème de souris

    Regarde dans le panneau de configuration de windows les propriétés de la souris. Si tu as dans l'onglet "roulette" l'option "dépanner" et "avancée" tu as peut être moyen de résoudre ton problème. Laisse toi guidé par l'assistant de dépannage.
  14. Salut Ma routine, je te l'accorde n'apporte pas grand chose, surtout si on est pas familier avec les codes DXF. L'option "Ajouter object sélectionné" de "filter" si elle fait la même chose, rapatrie , à mon goût, trop d'informations (en fait pratiquement toutes) que l'on est obligé dans la majorité des cas de virer. Et puis tu peux croire sélectionner une ligne alors que c'est une polyligne, ou alors incrusté dans un bloc/xref, donc obligé de vider la liste de "filter" de recommencer ta sélection sur un autre objet. Donc des fois au bout du compte, beaucoup de manip dans la boite de dialogue pour monter le filtre. Avec ma routine je vois de suite si le filtre principal me convient et les codes complémentaires rajoutés (dans certain cas) sont les plus utilisés pour les filtres En fait j'aimais bien l'ancienne routine d'Autodesk "SSX", j'ai voulu faire le même principe en la simplifiant quelque peu et voir le fitre en dynamique dans la barre d'état. Si je publie le code, c'est pour aussi donner des idées et pas forcément pour réinventer la roue ;) La solution de la mise à jour de (initget) (getkword) dans une boucle peuvent donné des solutions pour d'autre routines. L'emploi de (grread) (grtext) est interessant aussi. En bref, ce n'est pas que la fonction finale qui peut servir et être interressante, mais simplement quelque bout de ligne que l'on peut exploiter pour laisser libre court a son esprit d'inventivité. Je repose quand même la question car il y en avait une! Bien que l'importance soit minime, d'où peut venir le comportement aléatoire de (sssetfirst) dans certain dessins.
  15. Merci Zebulon d'avoir tenté de répondre. Fait bizzare j'ai le même symptôme avec ton lisp. Avec un dessin; pour tout dire que je me sert pour faire mes tests (il contient tous les types d'entités crées dans différents SCU,calques, couleurs, etc...) et de taille tout à fait raisonnable. La sélection s'effectue, les grips sont activé, mais pas visible (ceci à la 1ere utilisation, je le rapelles) Il me suffit de cliquer 1 fois dans le vide pour que les grips s'affichent. Ceci est constaté sur une 2000-2002-2005. Bien sur "PICKFIRST" ainsi que "GRIPS" sont à 1 dans tout les cas. Enfin drôle de phénomène, mais pas trop génant car il ne le fait que si les grips n'ont pas été utilisés au moins 1 fois avant. Peut être un comportement qui perdure sur la 2006? A propos de ton lisp si la conditon est remplie; 1 entité sélectionnée (pas de controle à ce niveau) :( La suite devrait se dérouler comme il faut car tu utilises des fonctions lisp basiques (pas de vl- ni vlax-). Je suis surpris qu'il ne fonctionne pas sous 2006.
  16. Bonjour, J'ai essayé de créer une routine un peu comme SSX (filtre d'objet;pour ceux qui se souviennent), mais de façon dynamique. Pour l'usage (il faut bien connaitre les codes DXF); il suffit de balader le curseur (sans click) sur des objets. Les codes DXF principaux (communs à toutes les entités) se retrouvent affichés en dynamique dans la barre d'état (à la place des coordonnées) Une fois validé par (espace,entrée ou click-droit), la liste du filtre est affiché sur la lignes de commandes. Celle-ci contient des codes DXF supplémentaires suivant le genre d'entité sélectionnée. On peut alors supprimer les codes qui ne nous interessent plus pour fabriquer le fitre. (on peut entrer les codes par le click-droit) Une entrée nulle à ce stade valide le filtre et l'applique au dessin. Mon petit problème, est que lors de la 1ere utilisation les grips ne sont pas activés sur la sélection. (mais effacer ou autres agit bien sur la séléction mais ont voit pas les grips) Alors que lors d'utilisations suivantes, pas de problème. Où est ce que cela pêche? Une idée? (defun data2string (l_dxf / l_dxf lst_pair grp_el typ_el ch1 ch2 ch) (setq ch "") (while l_dxf (setq lst_pair (car l_dxf)) (setq grp_el (car lst_pair) typ_el (cdr lst_pair)) (cond ((eq (type grp_el) 'INT) (setq ch1 (itoa grp_el)) ) ((eq (type grp_el) 'REAL) (setq ch1 (rtos grp_el 2 4)) ) ((eq (type grp_el) 'STR) (setq ch1 (strcat "\"" grp_el "\"")) ) (T (setq ch1 "") ) ) (cond ((eq (type typ_el) 'INT) (setq ch2 (itoa typ_el)) ) ((eq (type typ_el) 'REAL) (setq ch2 (rtos typ_el 2 4)) ) ((eq (type typ_el) 'STR) (setq ch2 (strcat "\"" typ_el "\"")) ) ((eq (type typ_el) 'LIST) (setq ch2 (strcat (rtos (car typ_el) 2 4) " " (rtos (cadr typ_el) 2 4) (if (caddr typ_el) (strcat " " (rtos (caddr typ_el) 2 4)) ""))) ) (T (setq ch2 "") ) ) (if (eq (type typ_el) 'LIST) (setq ch (strcat ch "(" ch1 " " ch2 ") ")) (setq ch (strcat ch "(" ch1 " . " ch2 ") ")) ) (setq l_dxf (cdr l_dxf) ch1 "" ch2 "") ) (strcat "(" ch ")") ) (defun c:dyn_filter ( / sv_shmnu oldim key pt_sel l_dxfcod m_filt ent dxf_ent typ_ent msg ss) (setq sv_shmnu (getvar "SHORTCUTMENU") oldim (getvar "dimzin") ) (setvar "dimzin" 0) (setvar "SHORTCUTMENU" 11) (while (and (setq key (grread T 4 0)) (not (member key '((2 13) (2 32)))) (/= (car key) 25)) (setq l_dxfcod nil m_filt nil pt_sel (osnap (list (caadr key) (cadadr key)) "_near") ) (if pt_sel (progn (setq ss (ssget "_C" pt_sel pt_sel)) (if ss (setq ent (ssname ss 0))) ) (setq ent (car (nentselp (list (caadr key) (cadadr key))))) ) (cond (ent (setq dxf_ent (entget ent)) (setq l_dxfcod (append '(38 39 48 370 62 6 8 67 0) l_dxfcod)) (if (member (cdr (assoc 0 dxf_ent)) '("HATCH" "INSERT" "MLINE" "SHAPE")) (if (assoc 2 dxf_ent) (setq l_dxfcod (cons 2 l_dxfcod))) ) (foreach n l_dxfcod (if (assoc n dxf_ent) (setq m_filt (cons (assoc n dxf_ent) m_filt)))) (grtext -2 (data2string m_filt)) ) (T (grtext -2 "")) ) ) (setq typ_ent (cdr (assoc 0 dxf_ent)) m_filt nil) (cond ((eq typ_ent "LWPOLYLINE") (setq l_dxfcod (cons 43 l_dxfcod)) ) ((or (eq typ_ent "POLYLINE") (eq typ_ent "MLINE")) (setq l_dxfcod (cons 70 l_dxfcod)) ) ((or (eq typ_ent "DIMENSION") (eq typ_ent "LEADER")) (setq l_dxfcod (cons 3 l_dxfcod)) (setq l_dxfcod (cons 70 l_dxfcod)) ) ((or (eq typ_ent "ACR") (eq typ_ent "CIRCLE") (eq typ_ent "ELLIPSE")) (setq l_dxfcod (cons 40 l_dxfcod)) ) ((or (eq typ_ent "TEXT") (eq typ_ent "MTEXT") (eq typ_ent "ATTDEF")) (setq l_dxfcod (cons 7 l_dxfcod)) (setq l_dxfcod (cons 40 l_dxfcod)) ) ) (foreach n l_dxfcod (if (assoc n dxf_ent) (setq m_filt (cons (assoc n dxf_ent) m_filt)))) (princ (strcat "\n(ssget \"" "_X" "\" " (data2string m_filt) ")")) (setq msg "") (initget (foreach n m_filt (setq msg (strcat (itoa (car n)) " " msg)))) (setq msg "") (setq msg (strcat "\nCode DXF a supprimer? [" (foreach n m_filt (setq msg (strcat (itoa (car n)) "/" msg))) "]")) (while (setq what (getkword msg)) (setq m_filt (vl-remove (assoc (atoi what) m_filt) m_filt)) (princ (strcat "\n(ssget \"" "_X" "\"" (data2string m_filt) ")")) (setq msg "") (initget (foreach n m_filt (setq msg (strcat (itoa (car n)) " " msg)))) (setq msg "") (setq msg (strcat "\nCode DXF a supprimer? [" (foreach n m_filt (setq msg (strcat (itoa (car n)) "/" msg))) "]")) ) (if (zerop (getvar "PICKFIRST")) (setvar "PICKFIRST" 1)) (sssetfirst nil nil) (setq ss (ssget "_X" m_filt)) (sssetfirst nil ss) (setvar "SHORTCUTMENU" sv_shmnu) (setvar "dimzin" oldim) (prin1) )
  17. Salut C'est pas des notes de calcul, mais je pense c'est un document qui peut aider. Doc. PDF
  18. Nan, j'avais rien compris :casstet: J'ai zappé le mot "certain" calques, ce qui fait toute la différence. Ce cas est alors plus problématique. Peut être que la commande "EDITREF" pourrait te simplifier les manips que tu devras faire?
  19. Si c'est juste la liste des calques des Xrefs qui posent problème (je ne saisis pas trop pourquoi) Tu détaches simplement tous les Xref, tu "enregistres sous" ton fichier dans un dossier créer pour l'occasion et tu envois ce fichier. Tu vire ton dossier créé (pour éviter les doublons) J'espère que j'ais compris?
  20. Je suis d'accord avec toi Oli553 Disons que j'ai adapté ma réponse à la question, dont j'ai senti qu'elle émanait d'un utilisateur peu aguéri. Je n'ai pas voulu compliqué la réponse :o Tu as bien fait de le souligner ;)
  21. bonuscad

    pb impression calque

    J'suis incrit??? ben savais pas... :mad: :cool: On va les avoir Eric comme au basket 3/0!!!
  22. bonuscad

    Impression à l\'échelle

    Une démarche pas à pas que je te suggère de suivre (elle n'utilise pas de macro, ni lisp; c'est basique mais efficace et ca aide à comprendre) Click-gauche sur l'onglet "Présentation1" (nom par défaut) pour un 1er accés, autrement Click-droit sur l'onglet "Présentation1" puis "configuration dans le menu contextuel Je passe sur les choix à faire sur l'onglet "Périphérique de traçage" Dans configuration tracé, onglet "Mise en page" choisis ton format de feuille Ex: A4 en MM (pas pouces hein?!) choisis l'orientation de ta mise en page Portrait/Paysage TOUJOURS GARDER echelle du tracé 1:1 (1mm tracé=1 mm de ton espace PAPIER ) Le mieux cocher "Présentation" (mais fenêtre et autres options peuvent être utilisées) valider ces choix Si 1ere utilisation une fenêtre est créée automatiquement. Pour plus de facilité, l'effacer (tu devrais avoir ta feuille blanche) puis utiliser la commande "FMULT" et valide l'option par défaut "Zonegraph" Cela à pour effet de te créer une fenêtre qui va automatiquement s'adapter aux marges du papier choisi. Là tu te rends dans ton espace "OBJET" Suivant l'unité dessiné il va falloir la transcrire en millimètre. si mm utilisé simple; unité 1 si cm alors unité 10 (1cm=10mm) si dm alors unité 100 (1dm=100mm) si m alors unité 1000 (1m=1000mm) etc... Tu te sert alors de la commande "ZOOM" puis l'option "Gauche" (oui je sais, celle ci n'apparait pas dans la ligne des options, mais elle est valide) tu clique alors le point que tu veux faire coincider avec ton coin bas gauche de ta feuille dans l'espace papier. NB: un "scu" "3points" peut être fait suivi de la commande "Repere" puis "scu" "précédent" pour aligner ta vue objet avec EP. Tu rentre alors l'échelle sous la forme (1/50xp si mm) (10/50xp si dm) (1000/50xp si m) pour obtenir une échelle 1/50eme (simple à ce rappeler non?) Tu repasse alors dans l'espace papier, sélectionne ta fenêtre (grips) puis click-droit est tu choisis dans le menu contextuel "Vérrouiller la vue" -> "Actif" Voilà ta mise en page est terminé et l'échelle doit être correcte. Si tu constate un écart peu important sur le papier après impression, il est necessaire alors de calibrer ton traceur (étalonner) Normalement si suivi à lettre, le résultat doit être correct ;)
  23. C'est pas "\" mais "\"" Le slash sert à introduire le caractère spécial guillemet et les guillemets supplémentaires sont là pour dire que c'est une chaine de caractère. Mais il est possible (si syntaxe correct) que sous XP cela soit mal interprété. Personellement je préfère ta 1ere solution qui évite d'avoir une fenêtre DOS qui souvre temporairement. [Edité le 21/9/2005 par bonuscad]
  24. Zebulon Ta précédente solution fonctionne mieux. avec start, s'il y a des espaces dans le nom du dossier ou le nom du fichier, ça plante! Ou alors changer avec: (command "_start" (strcat "\"" id_file "\"")) [Edité le 21/9/2005 par bonuscad]
  25. Re, Donc pour en finir, je dirais que sous 2005, malgré le rodage de la 1ere utilisation, cela fonctionne bien. Par contre de nouveaux essais sous une 2000 reconfirme mon 1er post, fonctionnement aléatoire et quand cela fonctionne, le style n'est pas changé Quid?!! Voilà pour l'info, (ca a l'air instable ces réacteurs suivant la version...)
×
×
  • 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é