Aller au contenu

lecrabe

Moderateurs
  • Compteur de contenus

    10 665
  • Inscription

  • Dernière visite

  • Jours gagnés

    101

Tout ce qui a été posté par lecrabe

  1. Hello J espere que tu as une version v15.OD (07/2017) sur ton AutoCAD 2017 !? Et que ton AutoCAD 2017 a bien l Update 2017.1.2 !? LA SANTE, Bye, lecrabe "fatigue"
  2. lecrabe

    Retraite J1

    Hello 2 Vautours (Ardechois + Marseillais) en attente... La Santé, Bye, lecrabe "fatigué"
  3. lecrabe

    CONFIG. TOUR & PORTABLE

    Hello Au fait je suppose que tu parles d un PC FIXE !? Donc tu choisis un Core i5/i7/i9 ULTRA-Rapide ! Ce sera bien sur un 6/8 Cores (INUTIL pour AutoCAD mais pas grave) Par exemple trouver en solde (9eme generation) un bon vieux Core i5/i7/i9 rapide : Core i5 9600K : 6C/6T - 3.7-4.6 Ghz - 12 Mo cache Core i7 9700K : 8C/8T - 3.6-4.9 Ghz - 12 Mo cache Core i7 9900KS : 8C/16T - 4.0-5.0 Ghz - 16 Mo cache Sinon en 10eme generation : Core i5 10600K : 6C/12T - 4.1-4.8 Ghz - 12 Mo cache Core i7 10700K : 8C/16T - 3.8-5.1 Ghz - 16 Mo cache Memoire = 32 Go (en 2 x 16 Go) Carte graphique, la toute nouvelle NVidia RTX 3060 TI (8 Go) est Tip-Top Avec un Super Rapport qualite prix ! ... Environ 600 Euros ... Si tu as les moyens !? M2/SSD rapide de 1 To + eventuel 2eme DD de 2/3/4 To classique SVP tu nous raconteras ... LA SANTE, Bye, lecrabe "fatigue"
  4. lecrabe

    (initdia)

    Hello SANS REFLECHIR : SVP as tu essaye sur ta version 2021 avec LISPSYS = 0 Tu quittes et tu relances AutoCAD 2021 ... LA SANTE, Bye, lecrabe "fatigue"
  5. Hello Pypow 1) Tu utilises quelle version 20XX de AutoCAD ou AutoCAD MAP ?? 2) Tu as un Covadis quelle version ?? LA SANTE, Bye, lecrabe "fatigue"
  6. lecrabe

    Retraite J1

    Hello Thierry Donc si j ai bien compris : le Vautour Ardechois commence tourner au dessus du Forez ?! La Santé, Bye, lecrabe "fatigué"
  7. lecrabe

    Retraite J1

    Hello Déjà plus de 4 mois de retraite... Le COV19 (variante "normale") m a attaque fin janvier mais à priori j ai gagné la bataille (sans l aide la science) ! Plus d odorat : pas grave, je suis patient ! Avantage: pas besoin de courir tout de suite après un vaccin ! La Santé, Bye, lecrabe "fatigué" PS: je renifle régulièrement "sans succès" mes Whiskys tourbés single malt ?!
  8. lecrabe

    LibreCAD

    Hello RAPPEL : tu es seulement autorise a utiliser "LYONCAD" !! LA SANTE, Bye, lecrabe "fatigue"
  9. lecrabe

    Renommer nom de champ OD

    Hello 1) Chef OUI Chef ! 2) OK MERCI pour la nouvelle version ! LA SANTE, Bye, lecrabe "fatigue"
  10. lecrabe

    Renommer nom de champ OD

    Hello Bruno WAOUH cela me parait Tip-Top comme d'habitude ! Et le support du Multi-Record OD, c du "costaud" !! LA SANTE, Bye, lecrabe "fatigue"
  11. Hello 1) Un simple WBLOC filtre parfaitement les DWGs ... Mais bien verifier avant qu il n'y a pas de Proxy (venant de Covadis ou CIVIL par exemple) 2) No comprendo ta demande sur une Polyligne ! 3) J'ai dessine sur le DWG en L1N, une Polyligne 2D qui fait le tour des 8 points sur les 2 "lignes" Depuis le point au Nord-Ouest dans le sens Trigo ... aire 35.0683909 -- périmètre 98.4039280 au niveau du point X=617698.1171850 Y=315648.2828252 Z=0.0000000 au niveau du point X=617713.5052793 Y=315643.7142172 Z=0.0000000 au niveau du point X=617728.7576286 Y=315639.1122014 Z=0.0000000 au niveau du point X=617744.1586246 Y=315634.5172109 Z=0.0000000 au niveau du point X=617744.7828751 Y=315633.5443999 Z=0.0000000 au niveau du point X=617729.4495101 Y=315638.1603780 Z=0.0000000 au niveau du point X=617714.1432879 Y=315642.7594326 Z=0.0000000 au niveau du point X=617698.7775585 Y=315647.3169882 Z=0.0000000 4) Et donc sur le DWG en L93 (reprojete par MAP), voici la nouvelle Polyligne 2D qui fait le tour ... aire 35.1755036 -- périmètre 98.5541629 au niveau du point X=670615.9259210 Y=7049214.0087296 Z=0.0000000 au niveau du point X=670631.2978528 Y=7049209.3016389 Z=0.0000000 au niveau du point X=670646.5335506 Y=7049204.5622504 Z=0.0000000 au niveau du point X=670661.9181753 Y=7049199.8286240 Z=0.0000000 au niveau du point X=670662.5350346 Y=7049198.8490216 Z=0.0000000 au niveau du point X=670647.2183212 Y=7049203.6030883 Z=0.0000000 au niveau du point X=670631.9286451 Y=7049208.3399722 Z=0.0000000 au niveau du point X=670616.5790171 Y=7049213.0358027 Z=0.0000000 5) La meme polyligne redessinee en L93 sur le DXF/DWG reprojete par IGNMap ... aire 35.1754951 -- périmètre 98.5541637 au niveau du point X=670615.9262780 Y=7049214.0119050 Z=0.0000000 au niveau du point X=670631.2982100 Y=7049209.3048140 Z=0.0000000 au niveau du point X=670646.5339080 Y=7049204.5654260 Z=0.0000000 au niveau du point X=670661.9185330 Y=7049199.8317990 Z=0.0000000 au niveau du point X=670662.5353920 Y=7049198.8521970 Z=0.0000000 au niveau du point X=670647.2186780 Y=7049203.6062640 Z=0.0000000 au niveau du point X=670631.9290020 Y=7049208.3431480 Z=0.0000000 au niveau du point X=670616.5793740 Y=7049213.0389780 Z=0.0000000 6) Et si j avais reprojete avec COVADIS, le resulat aurait ete legerement different ! Voila je ne peux pas faire PLUS ! Et il est normal qu il y ait qq differences suite a la reprojection ! Bien sur que lors d une reprojection on ne traite que le point d insertion des blocs !! Sinon un simple carre ne serait plus qu un polygone 4 cotes quelconque apres reprojection !!! LA SANTE, Bye, lecrabe "fatigue" PS: si tu veux re-inventer l eau chaude, pourquoi pas !?
  12. Hello BON j'ai refais le test avec MON IGNMap et cela fonctionne bien ! SAUF qu'il ne faut pas de XRecords et autres trucs speciaux dans le DXF ... Voir mon message precedent ! Reprojection de Lambert 1 Nord vers du Lambert 93 France Entiere par exemple ... Donc j'ai pris ton DWG dans les environs de Bethune en Lambert 1 Nord ! J'ai fais un SIMPLE WBLOC sur TOUT le DWG pour le filtrer parfaitement et produire un autre DWG "propre" Que j'ai enregistre en DXF 2010 et LA IGNMap l'a parfaitement reprojete en DXF ... De plus ce qui est GENIAL, c que IGNMap travaille en Batch Donc si tu as N DXF "propres" dans ton dossier DXFINPUT Tu auras N DXF reprojetes dans ton dossier DXFOUTPUT ... Qu'on se le dise !! LA SANTE, Bye, lecrabe
  13. Hello SNIFF SNIFF il est possible que IGNMap ne supporte pas "bien" les XRecords ! Meme probleme "possible" avec les objets Metiers ARX / Proxys / etc ... OK avec Fraid car si tu generes par CIRCE 2 "bons" points en diagonale aux extremites du projet Alors APRES un simple ALIGNER AutoCAD sera acceptable ... SVP tu nous dis ... LA SANTE, Bye, lecrabe
  14. Hello ET voila il suffit de chercher au bon endroit ! Fichier "cadxp__vincentp010__exifscr.zip" en ligne ... Le fichier sera accessible : http://dl.free.fr/bbPoyFfbN A verifier que c bien l'outil EXIF dont tu as besoin !? LA SANTE, Bye, lecrabe
  15. Hello +1 avec Olivier comme d'habitude ! Et je soutiens CETTE version car BETON : Autre choix, c'est un bloc avec attribut. Tu ne renseignes que ton ID, puis ATTOUT, synchro sous excel avec la petite formule qui va bien et ATTIN => c'est du dynamique "manuel avec tes petits doigts", mais avantage, pas de liaison ODBC ou autre, tout est dans le DWG et 1 seul objet YES aussi pour l'outil de Vincent (VincentP010 si je me souviens bien !?) que je n'ai pas sauvegarde ! Si si je ne garde pas tout !! LA SANTE, Bye, lecrabe
  16. Hello IGNMap : Tu as fait un DXF de quel niveau !? As tu essaye avec du DXF de niveau 2013 ou plutot meme 2010 !? LA SANTE, Bye, lecrabe
  17. Hello Au fait je te joins ci-apres une routine CT_MT de Gilles que j'adore ! Elle cree un cadre (en LWPOLYLINE) et/ou un SOLID Aplat couleur derriere les TEXTs / MTEXTs selectionnes C simple et beton ... LA SANTE, Bye, lecrabe ;; ;; Une routine pour placer un cadre ou un masque d'arrière plan (hachure SOLID) ;; sur les textes (simples ou multilignes). ;; ;; CT & MT par GC 15/11/07 + 18/11/07 + 20/11/07 ;; ;; http://www.cadxp.com/sujetXForum-17530.htm ;; ;; Fonctionnent avec textes simples et multilignes ;; Les Parametres (couleur et la distance de Decalage) ;; sont conservées dans le dessin pendant la session ;; ;; EDIT : Tout bien pesé, je pense qu'il vaut mieux 2 commandes séparées ;; (CT pour les cadres et MT pour les masques) : moins d'options à valider ou modifier. ;; ;; EDIT : Nouvelles versions, fonctionnent avec les "couleurs vraies" pour les version 2004 ;; et plus, en couleurs de l'index pour les version antérieures. ;; ;; EDIT : Ajout d'une option Wipeout dans MT ;; ;; EDIT : Ajout d'une option Largeur (de polyligne) dans CT ;; ;; ;; CT Encadre les textes Selectionnés ;; (defun c:CT (/ of col wid opt par wo n ss n tx elst plst) (or *TextFrameOffset* (setq *TextFrameOffset* (/ (getvar "TEXTSIZE") 5.0)) ) (or *TextFrameColor* (setq *TextFrameColor* (list '(62 . 256))) ) (or *TextFrameWidth* (setq *TextFrameWidth* 0.0) ) (setq of *TextFrameOffset* col *TextFrameColor* wid *TextFrameWidth* ) (while (and (princ (strcat "\nDecalage: " (rtos of) "\tCouleur: " (TrueColor2String col) "\tLargeur: " (rtos wid) "\nSelectionnez les textes ou <Parametres> " ) ) (not (setq ss (ssget '((0 . "MTEXT,TEXT"))))) ) (initget 1 "Decalage Couleur Largeur") (setq par (getkword "\nChoix de l'option [Decalage/Couleur/Largeur]: " ) ) (cond ((= par "Couleur") (if (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (if (setq col (acad_truecolordlg (cond ((assoc 420 col)) ((assoc 62 col)) ) ) ) (setq *TextFrameColor* col) (setq col *TextFrameColor*) ) (if (setq col (acad_colordlg (cdr (assoc 62 col)))) (setq *TextFrameColor* (setq col (list (cons 62 col)))) (setq col *TextFrameColor*) ) ) ) ((= par "Decalage") (if (setq of (getdist (strcat "\nSpecifiez le Decalage du cadre <" (rtos of) ">: " ) ) ) (setq *TextFrameOffset* of) (setq of *TextFrameOffset*) ) ) (T (if (setq wid (getdist (strcat "\nSpecifiez la largeur du cadre <" (rtos wid) ">: " ) ) ) (setq *TextFrameWidth* wid) (setq wid *TextFrameWidth*) ) ) ) ) (setq n -1) (while (setq tx (ssname ss (setq n (1+ n)))) (setq elst (entget tx) plst (text2box-plst elst of) ) (make-frame elst col wid plst) ) (princ) ) ;; ==========================================================;; ;; ;; MT Place un masque (hachure SOLID ou wipeout) derrière les textes Selectionnés ;; (defun c:MT (/ of col par n ss n tx elst plst ec) (or *TextMaskOffset* (setq *TextMaskOffset* (/ (getvar "TEXTSIZE") 5.0)) ) (or *TextMaskColor* (setq *TextMaskColor* (list '(62 . 1))) ) (setq of *TextMaskOffset* col *TextMaskColor* ) (while (and (princ (strcat "\nDecalage: " (rtos of) "\tCouleur: " (TrueColor2String col) "\nSelectionnez les textes ou <Parametres> " ) ) (not (setq ss (ssget '((0 . "MTEXT,TEXT"))))) ) (initget 1 "Decalage Couleur Wipeout") (setq par (getkword "\nChoix de l'option [Decalage/Couleur/Wipeout]: " ) ) (cond ((= par "Wipeout") (setq *TextMaskColor* (setq col (list (cons 430 "Wipeout")))) ) ((= par "Couleur") (if (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (if (setq col (acad_truecolordlg (cond ((assoc 420 col)) ((assoc 62 col)) (T '(62 . 1)) ) ) ) (setq *TextMaskColor* col) (setq col *TextMaskColor*) ) (if (setq col (acad_colordlg (cond ((cdr (assoc 62 col))) (T 1) ) ) ) (setq *TextMaskColor* (setq col (list (cons 62 col)))) (setq col *TextMaskColor*) ) ) ) (T (setq of (getdist (strcat "\nSpecifiez le Decalage du cadre <" (rtos of) ">: " ) ) ) (setq *TextMaskOffset* of) (setq of *TextMaskOffset*) ) ) ) (setq n -1) (while (setq tx (ssname ss (setq n (1+ n)))) (setq elst (entget tx) plst (text2box-plst elst of) ) (make-mask elst col plst) ) (setq ec (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_draworder" ss "" "_f") (setvar "CMDECHO" ec) (princ) ) ;; ==========================================================;; ;; Text2Box-plst ;; Retourne la liste des sommets (coordonnées SCO) de la boite ;; englobant le texte après Decalage ;; ;; Arguments ;; elst : liste DXF de l'entité ;; of : distance de Decalage (defun Text2box-plst (elst of / nor ref rot wid hgt jus org box plst) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq nor (cdr (assoc 210 elst)) ref (trans (cdr (assoc 10 elst)) 0 nor) rot (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 nor)) wid (cdr (assoc 42 elst)) hgt (cdr (assoc 43 elst)) jus (cdr (assoc 71 elst)) org (list (cond ((member jus '(2 5 8)) (/ wid -2)) ((member jus '(3 6 9)) (- wid)) (T 0.0) ) (cond ((member jus '(1 2 3)) (- hgt)) ((member jus '(4 5 6)) (/ hgt -2)) (T 0.0) ) ) plst (mapcar (function (lambda (p) (mapcar '+ org p) ) ) (list (list (- of) (- of)) (list (+ wid of) (- of)) (list (+ wid of) (+ hgt of)) (list (- of) (+ hgt of)) ) ) ) (setq box (textbox elst) ref (cdr (assoc 10 elst)) rot (cdr (assoc 50 elst)) plst (list (list (- (caar box) of) (- (cadar box) of)) (list (+ (caadr box) of) (- (cadar box) of)) (list (+ (caadr box) of) (+ (cadadr box) of)) (list (- (caar box) of) (+ (cadadr box) of)) ) ) ) (setq mat (list (list (cos rot) (- (sin rot)) 0) (list (sin rot) (cos rot) 0) '(0 0 1) ) plst (mapcar (function (lambda (p) (mapcar '+ (mxv mat p) (list (car ref) (cadr ref))) ) ) plst ) ) ) ;; ==========================================================;; ;; Make-Frame ;; Crée une polyligne encadrant le texte ;; ;; Arguments ;; elst : liste DXF de l'entité ;; col : couleur de la polyligne ;; plst : liste des sommets (defun make-frame (elst col wid plst / nor elv) (setq nor (cdr (assoc 210 elst))) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq elv (caddr (trans (cdr (assoc 10 elst)) 0 nor))) (setq elv (caddr (cdr (assoc 10 elst)))) ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (assoc 8 elst) (if (and (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (assoc 420 col) ) (assoc 420 col) (assoc 62 col) ) '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 43 wid) (cons 38 elv) (cons 210 nor) ) (mapcar (function (lambda (x) (cons 10 x))) plst) ) ) ) ;; ==========================================================;; ;; Make-Mask ;; Crée une hachure SOLID figurant un masque d'arrière plan ;; ;; Arguments ;; elst : liste DXF de l'entité texte ;; col : couleur de la hachure ;; plst : liste des sommets (defun make-mask (elst col plst / nor elv) (setq nor (cdr (assoc 210 elst))) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq elv (caddr (trans (cdr (assoc 10 elst)) 0 nor))) (setq elv (caddr (cdr (assoc 10 elst)))) ) (if (= (cdr (assoc 430 col)) "Wipeout") (MakeWipeout (mapcar (function (lambda (p) (list (car p) (cadr p) elv) ) ) plst ) nor (cdr (assoc 8 elst)) ) (entmake (list '(0 . "HATCH") '(100 . "AcDbEntity") (assoc 8 elst) (if (and (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (assoc 420 col) ) (assoc 420 col) (assoc 62 col) ) '(100 . "AcDbHatch") (list 10 0.0 0.0 elv) (cons 210 nor) '(2 . "SOLID") '(70 . 1) '(71 . 0) '(91 . 1) '(92 . 1) '(93 . 4) '(72 . 1) (cons 10 (car plst)) (cons 11 (cadr plst)) '(72 . 1) (cons 10 (cadr plst)) (cons 11 (caddr plst)) '(72 . 1) (cons 10 (caddr plst)) (cons 11 (cadddr plst)) '(72 . 1) (cons 10 (cadddr plst)) (cons 11 (car plst)) '(97 . 0) '(75 . 0) '(76 . 1) '(98 . 1) '(10 0.0 0.0 0.0) ) ) ) ) ;; ==========================================================;; ;; MakeWipeout crée un objet "wipeout" à partir d'une liste de points ;; et du vecteur normal de l'objet (defun MakeWipeout (pt_lst nor lay / dxf10 max_dist cen dxf_14) (or (member "acwipeout.arx" (arx)) (arxload "acwipeout.arx")) (setq dxf10 (list (apply 'min (mapcar 'car pt_lst)) (apply 'min (mapcar 'cadr pt_lst)) (caddar pt_lst) ) ) (setq max_dist (float (apply 'max (mapcar '- (apply 'mapcar (cons 'max pt_lst)) dxf10) ) ) ) (setq cen (mapcar '+ dxf10 (list (/ max_dist 2) (/ max_dist 2) 0.0))) (setq dxf14 (mapcar '(lambda (p) (mapcar '/ (mapcar '- p cen) (list max_dist (- max_dist) 1.0) ) ) pt_lst ) ) (setq dxf14 (reverse (cons (car dxf14) (reverse dxf14)))) (entmake (append (list '(0 . "WIPEOUT") '(100 . "AcDbEntity") (cons 8 lay) '(100 . "AcDbWipeout") '(90 . 0) (cons 10 (trans dxf10 nor 0)) (cons 11 (trans (list max_dist 0.0 0.0) nor 0)) (cons 12 (trans (list 0.0 max_dist 0.0) nor 0)) '(13 1.0 1.0 0.0) '(70 . 7) '(280 . 1) '(71 . 2) (cons 91 (length dxf14)) ) (mapcar '(lambda (p) (cons 14 p)) dxf14) ) ) ) ;; ==========================================================;; ;; Applique une matrice de transformation à un vecteur (Vladimir Nesterovsky) (defun mxv (m v) (mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m ) ) ;; ==========================================================;; ;; Retourne une chaîne indiquant l'index de la couleur ou les valeurs RVB (defun TrueColor2String (lst / ind) (setq ind (cond ((cdr (assoc 430 lst))) ((cdr (assoc 420 lst))) ((cdr (assoc 62 lst))) (T 256) ) ) (cond ((= (type ind) 'STR) ind) ((= ind 256) "DuCalque") ((= ind 0) "DuBloc") ((< 256 ind) (strcat (itoa (lsh ind -16)) "," (itoa (lsh (lsh ind 16) -24)) "," (itoa (lsh (lsh ind 24) -24)) ) ) ((itoa ind)) ) )
  18. Hello +1 avec Olivier ! En fait le probleme de Lilian : - Est il dynamiquement statique ? ou - Est il statiquement dynamique ? LA SANTE, Bye, lecrabe
  19. Hello STOP STOP si j ai bien compris tu n'as NI Covadis, NI AutoCAD MAP (ou AutoCAD CIVIL) !? Et tu desires faire de la reprojection Lambert ... Mais pourquoi tu n'installes pas l 'excellent outil GRATUIT de l'IGN : IGNMap qui reprojette de nombreux formats: DXF, SHP, MIF-MID, GCD, etc http://ignmap.ign.fr/ Ce que utilisent par exemple les gens qui ont un "simple" AutoCAD ou AutoCAD LT ! BON OK, il faut "Enregistrer sous en DXF" pour IGNMap MAIS c quand meme pas le bout du monde ! ET APRES, il faut ouvrir en DXF et Re-enregistrer en DWG ... De plus IGNMap a de nombreuses fonctionnalites Tip-Top !! Je l'ai installe sur TOUS mes PCs (comme QGIS) et pourtant j'ai a disposition MAP, CIVIL, Covadis ... LA SANTE, Bye, lecrabe
  20. Hello YES je suis OK avec avec le Vil Lyonnais Mr philsogood ! Tu trouveras ci-joint 2 routines que j'utilise souvent sur les Blocs et TEXTs / MTEXTs BROT__BECH et TXROT__TXECH Rotation des Blocs (BROT) et TEXTs/MTEXTs (TXROT) relativement a leur Rotation d Origine ... Echelle des Blocs (BECH) et TEXTs/MTEXTs (TXECH) relativement a leur Echelle d Origine ... LA SANTE, Bye, lecrabe "stephanois" ;; ;; Routines : BROT & BECH (BSCALE) ;; ;; Echelle de N Bloc(s) d'une valeur donnee (xx.xx) ;; par rapport a leur point d'insertion par GC pour Patrice B. ;; Commande au clavier : BECH ;; ;; Rotation de N Bloc(s) d'un angle donne (+/- xx.xx) ;; par rapport a leur point d'insertion par GC pour Patrice B. ;; Commande au clavier : BROT ;; ;; (defun c:bscale (/ *error* doc scl ss) (defun c:bech (/ *error* doc scl ss) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (if (and (setq scl (getreal "\nFacteur d'échelle: ")) (ssget '((0 . "INSERT"))) ) (progn (vla-StartUndoMark doc) (vlax-for o (setq ss (vla-get-ActiveSelectionSet doc)) (foreach p '(XScaleFactor YScaleFactor ZScaleFactor) (vl-catch-all-apply '(lambda () (vlax-put-property o p (* scl (vlax-get-property o p))) ) ) ) ) (vla-delete ss) (vla-EndUndoMark doc) ) ) (princ) ) (defun c:brot (/ *error* doc rot ss) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (vla-EndUndoMark doc) (princ) ) (if (and (setq rot (getorient "\nRotation: ")) (ssget '((0 . "INSERT"))) ) (progn (vla-StartUndoMark doc) (vlax-for o (setq ss (vla-get-ActiveSelectionSet doc)) (vl-catch-all-apply '(lambda () (vla-put-Rotation o (+ rot (vla-get-Rotation o))) ) ) ) (vla-delete ss) (vla-EndUndoMark doc) ) ) (princ) ) ;; ;; Il te faut sans doute une routine Lisp/VLisp qui a ete diffusee ici (si je me souviens bien !?) ;; et qui permet de faire une Rotation relative des Textes/MTextes par rapport a leur point d'Insertion ;; ;; Routine: ROTEXT vs 1.00 par Bryce pour Patrice B. ---> TXROT ;; ;; Rotation RELATIVE des Textes / MTextes par rapport au point d'origine ;; Echelle RELATIVE des Textes / MTextes par rapport au point d'origine ;; (vl-load-com) (defun C:TXROT ( / ss ass rot ) (if (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT")))) (progn (setq ass (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) ss nil rot (getangle "\nAngle de Rotation: ") ) (vlax-for text ass (vla-put-Rotation text (+ rot (vla-get-Rotation text))) ) (vla-delete ass) ) ; progn ) ; if ss (princ) ) ;; ;; Il te faut sans doute une routine Lisp/VLisp qui a ete diffusee ici (si je me souviens bien !?) ;; et qui permet de faire une Rotation/Echelle relative des Textes/MTextes par rapport a leur point d'Insertion ;; ;; Routine: ROTEXT vs 1.00 par Bryce pour Patrice B. ---> TXECH (Micro Modif par PB) ;; ;; Rotation RELATIVE des Textes / MTextes par rapport au point d'origine ;; Echelle RELATIVE des Textes / MTextes par rapport au point d'origine ;; (vl-load-com) (defun C:TXECH ( / ss ass rot ) (if (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT")))) (progn (setq ass (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) ss nil ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; rot (getreal "\nFacteur d'Echelle (Positif SVP): ") ;;; rot (getangle "\nAngle de rotation: ") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ) (vlax-for text ass ;;;;;;;;;;;;;;;;;;; Rotation --> Height ;;;;;;;;;;;;;;;;;;;;;;;;;; (vla-put-Height text (* rot (vla-get-Height text))) ;;; (vla-put-Rotation text (+ rot (vla-get-Rotation text))) ) (vla-delete ass) ) ; progn ) ; if ss (princ) )
  21. Hello Au fait j ai oublie une excellente routine "LayerCount" de Lee-Mac pour compter les objets selectionnes par Calque ! C tres pratique quand tu as UN SEUL type d objet sur certains calques ... LA SANTE, Bye, lecrabe ;; ;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/object-count-per-layer/td-p/7619771 ;; ;; Layer Count - Lee Mac ;; ;; Prints a report of the number of objects on each layer in a drawing (defun c:LayerCount ( / lst ss ) (if (ssget) (progn (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (vla-get-activedocument (vlax-get-acad-object)))) (setq lst (layercount:assoc++ (vla-get-layer obj) lst)) (if (and (= "AcDbBlockReference" (vla-get-objectname obj)) (= :vlax-true (vla-get-hasattributes obj)) ) (foreach att (vlax-invoke obj 'getattributes) (setq lst (layercount:assoc++ (vla-get-layer att) lst)) ) ) ) (vla-delete ss) (princ (layercount:padbetween "\n\n" "" "-" 62)) (princ (layercount:padbetween "\nLayer" "Objects" " " 61)) (princ (layercount:padbetween "\n" "" "-" 61)) (foreach itm (vl-sort lst '(lambda ( a b ) (> (cdr a) (cdr B)))) (princ (layercount:padbetween (strcat "\n" (car itm)) (itoa (cdr itm)) "." 61)) ) (princ (layercount:padbetween "\n" "" "-" 61)) (princ (layercount:padbetween "\nTotal" (itoa (apply '+ (mapcar 'cdr lst))) "." 61)) (princ (layercount:padbetween "\n" "" "-" 61)) (textpage) (princ) ) ) ) (defun layercount:assoc++ ( key lst / itm ) (if (setq itm (assoc key lst)) (subst (cons key (1+ (cdr itm))) itm lst) (cons (cons key 1) lst) ) ) (defun layercount:padbetween ( s1 s2 ch ln ) ( (lambda ( a b c ) (repeat (- ln (length B) (length c)) (setq c (cons a c))) (vl-list->string (append b c)) ) (ascii ch) (vl-string->list s1) (vl-string->list s2) ) ) (vl-load-com) (princ)
  22. Hello Bon je resume a ma facon : 1) Selectionner TOUS les objets d'un calque PRECIS (ou N calques avec un prefixe) 2) Copier sur UN AUTRE calque PRECIS (prealablement cree) Suis je OK ?? Si OUI, voici l enchainement des commandes : Commande: -COPIERVERSCALQUE Sélectionnez les objets à copier: (ssget "X" '((8 . "DVD-MUR01*"))) 558 trouvé(s) Sélectionnez les objets à copier: Spécifiez le nom du calque de destination ou [?/= (sélectionner un objet)] : DVD-MUR02 558 objets copiés et placés sur le calque "DVD-MUR02". Spécifiez un point de base ou [Déplacement/Quitter] : Commande: Cela va envoyer une copie de tous les objets des N calques DVD-MUR01* sur LE calque DVD-MUR02 ---- MAIS si tu veux arriver sur N calques DVD-MUR02* je pense qu il te faudra un Lisp / VLisp ---- LA SANTE, Bye, lecrabe
  23. Hello OK je n'ai peut etre pas tout compris !? LA SANTE, Bye, lecrabe
  24. lecrabe

    RECUPERATION DE DONNEES

    Hello YES ! Je vois très bien !! Mais je te l ai dit c une utilisation très ponctuelle, juste pour exporter les ODs en CSV... Merci, Bye, lecrabe
  25. lecrabe

    RECUPERATION DE DONNEES

    Hello Bruno 100% OK avec toi ! C très dangeureux !! C juste pour une utilisation exceptionnelle sur des GROS DWGs MAP ... Plusieurs dizaines/centaines de Mo ... MERCI, Bye, lecrabe
×
×
  • 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é