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. Chacun sa route, chacun son chemin la la la... J'suis bonne humeur aujourd'hui, après avoir chanter Mon beau sapin! :P
  2. bonuscad

    insertion en masse

    Grand_Sapin, Mon Beau Sapin ..... Un petit + pour l'encombrement des blocs ET acceptera les blocs avec attributs (par défaut, bien sûr) ;) ((lambda ( / prefix pt_ins last_pt obj ll ur lg) (setvar "cmdecho" 0) (setvar "attreq" 0) (vl-load-com) (setq prefix (strcat (vl-filename-directory (getfiled "Sélectionner un fichier DWG TEMOIN" "" "dwg" 16)) "\\")) (setq pt_ins (getpoint "\nPoint d'insertion pour le 1er Bloc? <0.0,0.0,0.0>: ")) (if (null pt_ins) (setq pt_ins '(0.0 0.0 0.0))) (setq last_pt nil) (foreach dwg (vl-directory-files prefix "*.dwg" 1) (command "_.-insert" (strcat "\"" prefix dwg "\"") "_none" pt_ins "1.0" "1.0" "0.0") (setq Obj (vlax-ename->vla-object (entlast))) (vla-GetBoundingBox Obj 'll 'ur) (setq ll (safearray-value ll)) (setq ur (safearray-value ur)) (if last_pt (progn (command "_.move" (entlast) "" "_none" (list (car ll) (cadr pt_ins) (caddr pt_ins)) "_none" pt_ins) (setq lg (distance (list (car ll) (cadr pt_ins) (caddr pt_ins)) pt_ins)) ) (setq lg 0.0) ) (setq pt_ins (list (+ lg (car ur)) (cadr pt_ins) (caddr pt_ins))) (setq last_pt pt_ins) ) (command "_.zoom" "_all") (command "_.zoom" "_extents") (setvar "attreq" 1) (setvar "cmdecho" 1) (prin1) ))
  3. Essayes ceci ! ((lambda ( / def_lay nam_lay js) (setq def_lay (tblnext "LAYER" T)) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((setq js (ssget "_X" (list (cons 8 nam_lay)))) (command "_.-wblock" (strcat (getvar "dwgname") "$" nam_lay) "" "*0.0,0.0,0.0" js "") ) ) (while (setq def_lay (tblnext "LAYER")) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((setq js (ssget "_X" (list (cons 8 nam_lay)))) (command "_.-wblock" (strcat (getvar "dwgname") "$" nam_lay) "" "*0.0,0.0,0.0" js "") ) ) ) (prin1) ))
  4. Essayes la fonction OVERKILL des outils Express Recherches le guide en Francais des ExpressTools d'Eric
  5. bonuscad

    cotes relatives

    Instructions (la plus simple, enfin celle que j'utilise beaucoup): * copier-coller le code dans le bloc-note * enregistrer sous (pour choisir le nom, je te conseille de mettre le même nom que la fonction (defun c:XXXX .........) dans ton cas (defun c:dim_fake ... donc choisir DIM_FAKE.LSP *Une fois enregitré dans le dossier de ton choix, à l'aide de l'explorateur tu fais un glisser-déposer (comme si tu voulais déplacer le fichier ailleurs) MAIS dans la zone graphique d'AutoCAD. (réduit ton explorateur, si tu es en plein écran ou fait le glisser-déposer sur l'icone de la barre de tâche de windows: Attends qu'Autocad revienne en plein-écran avant de lacher!) *A ce momment tu devrais voir apparraitre à la ligne de commande C:DIM_FAKE Cela veut dire que maintenant la commande au clavier DIM_FAKE est disponible, tu n'as plus qu'a la taper ;) NB:Une recherche sur le forum te donneras les multiples autres voies pour charger un fichier Lisp [Edité le 24/3/2006 par bonuscad]
  6. bonuscad

    demo acad 2007

    Je penses pas que ce soit par là, mais plutôt dans les paramètres de connexion de ton navigateur , I.E ou FireFox que tu pourras déclarer tes proxy. Je n'ai pas essayé car mon réseau d'entreprise utilise déjà un proxy, et je n'ai pas envie de foutre le boxon, ou de me heuter à des permissions non accordés...
  7. Cela fonctionne, mais il faut prendre une précaution avec les " (guillemets) qui est un caractère spécial ex. d'utilisation: ((lambda ( / str) (setq str "Vous bien sur 'CadXP' le site de la 'DAO'") (princ (vl-string-translate "'" "\"" str)) (prin1) ))
  8. bonuscad

    cotes relatives

    Voilà retranscrit en lisp ce que je t'avais proposé comme démarche. A tester... NB: Tes cotations originales ne sont pas perdues :P , mais tu auras besoin de CA pour pouvoir les retrouver. (defun c:dim_fake ( / js mark n value styl_cur lay_cur ent dxf_ent styl_cot nam_layer def_layer dxf_dim p1 p2 p_nw1 p_nw2) (princ "\nChoix des cotations à contrefaire: ") (setq js (ssget '((0 . "DIMENSION"))) mark nil) (cond (js (setq n -1) (initget 1) (setq value (getreal "\nValeur à retrancher/ajouter à la côte sélectionnée: ")) (setq styl_cur (getvar "DIMSTYLE")) (setq lay_cur (getvar "CLAYER")) (setvar "cmdecho" 0) (repeat (sslength js) (setq ent (ssname js (setq n (1+ n)))) (setq dxf_ent (entget ent)) (cond ((not mark) (setq styl_cot (cdr (assoc 3 dxf_ent))) (if (not (tblsearch "DIMSTYLE" (strcat "Sans-Texte_" styl_cot))) (progn (setvar "DIMTXT" (/ (getvar "DIMTXT") 10000.00)) (command "_.-dimstyle" "_save" (strcat "Sans-Texte_" styl_cot)) ) ) (if (not (tblsearch "DIMSTYLE" (strcat "Leurre_" styl_cot))) (progn (setvar "DIMTXT" (* (getvar "DIMTXT") 10000.00)) (foreach n '("DIMSE1" "DIMSE2" "DIMSD1" "DIMSD2") (setvar n 1)) (command "_.-dimstyle" "_save" (strcat "Leurre_" styl_cot)) ) ) (setq nam_layer (cdr (assoc 8 dxf_ent))) (setq def_layer (tblsearch "LAYER" nam_layer)) (if (not (tblsearch "LAYER" (strcat "Leurre_" (cdr (assoc 8 dxf_ent))))) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 (strcat "Leurre_" (cdr (assoc 8 dxf_ent)))) (assoc 70 def_layer) (assoc 62 def_layer) (cons 370 -3) (assoc 6 def_layer) ) ) ) (setq mark T) ) ) (command "_.copy" ent "" "_none" "*0,0,0" "_none" "*0,0,0") (command "_.change" (entlast) "" "_properties" "_layer" (strcat "Leurre_" (cdr (assoc 8 dxf_ent))) "") (setq dxf_dim (entget (entlast))) (setq dxf_dim (subst (cons 3 (strcat "Sans-Texte_" styl_cot)) (assoc 3 dxf_dim) dxf_dim)) (entmod dxf_dim) (command "_.copy" (entlast) "" "_none" "*0,0,0" "_none" "*0,0,0") (setq dxf_dim (entget (entlast))) (cond ((or (zerop (rem (cdr (assoc 70 dxf_dim)) 32)) (eq (rem (cdr (assoc 70 dxf_dim)) 32) 1)) (setq p1 (cdr (assoc 13 dxf_dim)) p2 (cdr (assoc 14 dxf_dim))) (setq p_nw1 (polar p1 (angle p2 p1) (/ value 2.0)) p_nw2 (polar p2 (angle p1 p2) (/ value 2.0))) (setq dxf_dim (subst (cons 13 p_nw1) (assoc 13 dxf_dim) dxf_dim)) (setq dxf_dim (subst (cons 14 p_nw2) (assoc 14 dxf_dim) dxf_dim)) (setq dxf_dim (subst (cons 3 (strcat "Leurre_" styl_cot)) (assoc 3 dxf_dim) dxf_dim)) (entmod dxf_dim) ) (T (princ "\nN'est pas une côte alignée, pivotée, horizontale ou verticale.") ) ) (if (not (member '(60 . 0) dxf_ent)) (entmod (append dxf_ent '((60 . 1)))) (entmod (subst '(60 . 1) '(60 . 0) dxf_ent)) ) ) (command "_.-dimstyle" "_restore" styl_cur) (setvar "cmdecho" 1) (setvar "CLAYER" lay_cur) ) (T (princ "\nAucune cotation sélectionnée!") ) ) (prin1) )
  9. bonuscad

    insertion en masse

    Ceci ? ((lambda ( / prefix) (setq prefix (strcat (vl-filename-directory (getfiled "Sélectionner un fichier dessin TEMOIN" "" "dwg" 16)) "\\") ) (foreach dwg (vl-directory-files prefix "*.dwg" 1) (command "_.-insert" (strcat "\"" prefix dwg "\"") pause "" "" "") ) (prin1) )) Tu sélectionneras un fichier dans un dossier (il servira de référence pour déterminer le dossier) J'ai mis une pause pour le point d'insertion, mais on pourrait imaginer un point incrémenté d'une certaine valeur (mais ça je ne peux pas deviner l'encombrement du bloc, ou alors un (BoundingBox) du dernier bloc inséré. A voir....) ;)
  10. bonuscad

    cotes relatives

    Il y avait eu un sujet ICI Je me demande si en établissant 2 nouveaux styles de cotation identique a celui que tu emplois MAIS sans les lignes d'attaches (engardant juste le texte de citation en fait) Puis un autre en faisant l'inverse, mais comme on ne peut pas enlever le texte, tu lui appliques une hauteur minuscule. Ce style servira pour les cotation communes afin d'avoir les ligne d'attache. Ensuite tu duplique tes cotations sur un autre calque et change le style de cotation pour leur affecterle nouveau style. Puis tu applique la routine que j'avais proposée pour réduire/agrandir la cotation. Si tu trouves la solution séduisante, je (on) peux essayer d'automatiser tout ça....
  11. Désolé, tellement l'habitude tu lisp que j'ai mis des guillemets, et comme j'avais pas testé :mad: En enlevant les guillemet, ça aurait du fonctionner. N'as tu pas enlever AUSSI le ";" après _none ^C^C_section;\\;\\_none;@0,0,1; Là j'ai essayé et ça fonctionne :exclam: [Edité le 22/3/2006 par bonuscad]
  12. bonuscad

    rechercher et remplacer

    Cela m'étonnerais que cela fonctionne du 1er coup, mais c'est un début avec les renseignements que tu as donnés. ((lambda ( / js n ent dxf_ent string) (setq js (ssget "_x" (list (cons 0 "text") ) ) ) (setq n -1) (repeat (sslength js) (setq ent (ssname js (setq n (1+ n)))) (setq dxf_ent (entget ent)) (setq string (cdr (assoc 1 dxf_ent))) (if (wcmatch string "?????") (entmod (subst (cons 1 (strcat string "AB")) (assoc 1 dxf_ent) dxf_ent)) ) ) )) Comme tu n'as pas l'air d'avoir encore lu la réponse, je précise; Si cela ne fonctionne pas ou trop bien (car 5 caractères dans une chaine, il peut y en avoir beaucoup plus que ce que tu désires) Donc on pourra affiner le filtre (si c'est possible!) Pour cela, il serait bien que tu fasses un (entget (car (entsel))) sur un texte concerné et que tu colle le résultat en retour. On ajustera le filtre en conséquence.... [Edité le 22/3/2006 par bonuscad]
  13. Tramber a certainement raison, essaye ta macro avec: ^C^C_section;\\;\\"_none";@0,0,1;\;
  14. Je viens de corriger le code, car j'ai observé que des (lw)polylignes ayant des doublons dans les sommets posaient problème. (ssget) avec une liste de points ne fonctionne pas si des points sont en doubles (tourjours bon à savoir) J'ai inseré le petit bout de code de (gile) pour supprimer les doublons dans une liste. Merci (gile) ;)
  15. Quand je fais des recherches pou le "fun" sur le net (en utilisant les noms d'expression de fonction lisp tel que "(boole" "(defun" "(mapcar etc..., j'ai remarqué que les principaux environnements sont Autolisp-VisualLisp et un Lisp qui a l'air principalement dédié au monde Linux ou il a l'air beaucoup employé. Après comme dit (gile) les autres environnements sont obsolètes ou peu employés. Je vais peut être me mettre à Linux pour faire du lisp :exclam: :P Le lisp n'est pas mort, vive le lisp
  16. bonuscad

    frozen layer

    PS: J'ai utilisé ((lambda)) pour créer une fonction anonyme qui ne reste pas en mémoire (je le fais souvent pour tester) C'est à dire que tu copie-colle directement en ligne de commande pour éxecuter le code. Si tu veux le réexecuter il faut de nouveau charger le code en mémoire. Tu peux transformer cette fonction anonyme en une fonction persistante. Tu remplaces ((lambda ( / def_lay bit_lay flag) par (defun c:lc ( / def_lay bit_lay flag) NB: Ne pas oublier d'enlever dans ce cas la paranthèse supplémentaire en fin de code de lambda Mais tu peux aussi le laisser sous la forme que tu as présenté si tu ne veux pas réutiliser les variables en dehors de la fonction (lambda) Je tenais à le préciser ;) L'utilisation de (lambda) est utile quand on sait que la fonction ne sera executé qu'une seule fois dans le code, ça évite d'encombrer la mémoire avec du code qui ne sert qu'une fois. Personnellement j'ai mis du temps à comprendre l'interêt de cette fonction :P
  17. bonuscad

    frozen layer

    Monté très rapidement, sans beaucoup de test (juste dans l'espace objet) ((lambda ( / def_lay bit_lay flag) (setq flag T lst_lay "") (setvar "cmdecho" 0) (while (setq def_lay (tblnext "LAYER" flag)) (setq flag nil) (if (< (cdr (assoc 62 def_lay)) 0) (command "_.-layer" "_freeze" (cdr (assoc 2 def_lay)) "") ) ) (setvar "cmdecho" 1) (prin1) ))
  18. Bonsoir Fais simplement une concaténation de chaine de caractères (strcat) Pour pouvoir convertir tes variables en chaine utilise (rtos) pour les réels et (itoa) pour les entiers ex: (strcat "Chaise de " (rtos variable_longueur 2 0) " x " (rtos variable_largeur 2 0) " x " (rtos variable_hauteur 2 0)) ou encore (strcat "Chaise de " (itoa (fix variable_longueur)) " x " (itoa (fix variable_largeur)) " x " (itoa (fix variable_hauteur))) (fix): partie entière d'un réel (n'arrondi pas)
  19. bonuscad

    logiciel de signalisation routière

    J'ai déjà lu que adobe illustrator est capable d'écrire des images au format WMF. Je n'ai pas illustrator, mais si cela est vrai, pourquoi ne pas coller les images dans ce soft et le sauvegarder dans ce format. Dans autocad il te suffiras de l'inserer au format WMF et en le décomposant tu aura des entités Autocad que tu pourras sauvegarder au format DWG. Bon après je reconnais qu'il y a du boulot de conversion pour se faire une bibliothèque :casstet: Un script ?..... Nb: j'ai fait un essai à patir des clipart d'office au format WMF, cela fonctionne bien (on peux en faire un dwg). Donc le problème est d'avoir ce format WMF.. Si quelqu'un qui a illustrator pouvait faire un essai !
  20. Ben, j'ais pas trouvé...... :mad: J'ai bien exploré dans les commandes qui concernent la 3D, mais choux-blanc, des messages d'erreurs, oui mais pas en boite d'alerte. :casstet: Bon j'vais pas y passer la nuit, et puis je préfère les problèmes de construction géométrique ;)
  21. Le sujet dérive un peu mais... Je suis presque au regret de penser la même chose que toi! :casstet: Heuresement cela n'est pas encore une règle générale, mais les fichiers transitent de plus en plus entre plusieurs mains (qui sont pas toutes propres) Et puis tout ça est un peu dans l'ère du temps. On pourrais imager avec les premiers ordinateurs, où les fichiers été bien classé, puis plus les machines sont devenues puissantes et les logiciels sophistiqués, plus ca devient le bazard dans les PC. pour retrouver les fichiers de travail. C'est comme votre logement "plus vous avez grand au cours de votre vie, plus c'est le souk!" Ne me dites pas que c'est pas vrai! (par le souk, j'entend la quantité) Donc logiquement, ca devrait pas s'arranger, et le propos de Yalta se vérifier de plus en plus :( Même moi, des fois, j'ai baissé les bras et pensé la même chose. (j'essaye d'être honnête sur mes propos) :exclam:
  22. Est ce que je peux jouer avec une 2005? Si oui, je ne répondrais pas tout de suite si je trouve ;) Mais c'est pas gagné :casstet:
  23. bonuscad

    DIM et HATCH

    Pour les hachures, au lieu de bouger objet à 0,0,0, essayer plutôt de redéfinir ta variable "SNAPBASE" . Celle elle qui définie l'origine de ton motif de hachure et qui évite pour certaines hachures qu'elles se croisent les bras. Tiens, je crois que Christian pourrait le rajouter a son Top Quizz, il n'y figure pas. :exclam:
  24. bonuscad

    CODES DXF (rapides)

    Une routine que je me sers assez souvent quand je monte des lisp. Ca m'évite de chercher à chaque fois dans l"aide pour me remémorer le code que je recherche :exclam: (defun c:dxflistdata ( / oldim obj lst_pair grp_el typ_el ch1 ch2 ch nb msg ent) (setq ent 0 oldim (getvar "dimzin")) (setvar "dimzin" 0) (while (not (listp ent)) (if user-dxf (setq msg "\n[Entite/Sous-entite]< S > - Choix de l'objet à lister ses codes DXF: ") (setq msg "\n[Entite/Sous-entite]< E > - Choix de l'objet à lister ses codes DXF: ") ) (initget "Entite Sous-entite") (if user-dxf (setq ent (nentsel msg)) (setq ent (entsel msg)) ) (if (eq ent "Sous-entite") (setq user-dxf T)) (if (eq ent "Entite") (setq user-dxf nil)) ) (cond (ent (setq obj (entget (car ent)) ch "\tDATA DXF d'OBJET\n" nb 1) (while obj (setq lst_pair (car obj)) (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 grp_el) ) ((eq (type grp_el) 'ENAME) (setq ch1 "") ) (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 typ_el) ) ((eq (type typ_el) 'ENAME) (setq ch2 "") ) ((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 ")\n")) (setq ch (strcat ch "(" ch1 " . " ch2 ")\n")) ) (setq obj (cdr obj) ch1 "" ch2 "" nb (1+ nb)) (if (> nb 31) (progn (alert ch) (setq ch "suite DATA DXF d'OBJET\n" nb 1))) ) (alert ch) ) ) (setvar "dimzin" oldim) (prin1) ) NB: espace après le < et avant le > .Mais ici ça ne bloque pas le code, Pas obligé de les enlever (histoire de présentation correct sur le forum)
  25. bonuscad

    Rotation ds espace papier

    En effet impossible rapidement et facilement avec les commandes standard. Cependant il peut y avoir des solutions, voir le sujet identique déjà evoqué ICI
×
×
  • 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é