-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Comme dit en retour, nécessite un nombre entier (ce qui représente le nombre de décimal qui te sera retourné), 2 serait suffisant pour toi je pense. donc ce qui te sera retourné: ce que tu vas copié dans le bloc-note et enregistrer sous le nom de CF030-050L.lin Maintenant dans (toujours dans le bloc note) on va modifié les valeurs en rouge pour les passer en métrique. Ce qui donnerait avec une conversion avec 2.54 Tu remarquera que j'ai changé aussi la valeur en rouge qui été avant *2 Pour cela j'ai décompilé ton fichier SHX pour avoir cette valeur correspondante. Voici pour info ton fichier décompilé. ;; ;; AutoCAD SHP file generated by dumpshx.exe ;; *00001,8,CFCIRCLE 3,6,10,(1,-040),4,6,0 *00002,10,CFXX-050B 024,2,020,1,048,2,01C,1,040,0 *00003,14,CFXX-100B 044,2,020,1,048,2,01C,1,040,2,02C,1,048,0 *00004,18,CFXX-150B 064,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,0 *00005,22,CFXX-200B 084,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 0 *00006,30,CFXX-300B 0C4,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,0 *00012,39,CFXX-400B 0F4,014,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1, 048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,0 *00013,43,CFXX-450B 0F4,034,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1, 048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040, 0 *00014,47,CFXX-500B 0F4,054,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1, 048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040, 2,02C,1,048,0 *00015,55,CFXX-600B 0F4,094,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1, 048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040, 2,02C,1,048,2,02C,1,040,2,02C,1,048,0 *00016,19,CFXX-050C 014,2,020,1,048,2,01C,1,040,2,01C,1,048,2,014,020,1,01C,0 *00017,22,CFXX-100C 024,2,020,1,048,2,01C,1,040,2,02C,1,048,2,01C,1,040,2,028,1,024, 0 *00018,26,CFXX-150C 034,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,01C,1,048, 2,020,1,034,0 *00019,30,CFXX-200C 044,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,01C,1,040,2,028,1,044,0 *00020,38,CFXX-300C 064,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,2,01C,1,040,2,028,1,064,0 *00026,46,CFXX-400C 084,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,01C,1,040,2, 028,1,084,0 *00027,50,CFXX-450C 094,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2, 01C,1,048,2,020,1,094,0 *00028,54,CFXX-500C 0A4,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2, 02C,1,048,2,01C,1,040,2,028,1,0A4,0 *00029,62,CFXX-600C 0C4,2,020,1,048,2,01C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048, 2,02C,1,040,2,02C,1,048,2,02C,1,040,2,02C,1,048,2,02C,1,040,2, 02C,1,048,2,02C,1,040,2,02C,1,048,2,01C,1,040,2,028,1,0C4,0 *00030,6,PLXX-050B 024,2,020,1,048,0 *00031,10,PLXX-100B 044,2,020,1,048,2,02C,1,040,0 *00032,10,PLXX-150B 064,2,020,1,048,2,03C,1,040,0 *00033,10,PLXX-200B 084,2,020,1,048,2,04C,1,040,0 *00034,18,PLXX-300B 0C4,2,020,1,048,2,03C,1,040,2,03C,1,048,2,03C,1,040,0 *00035,19,PLXX-400B 0F4,014,2,020,1,048,2,04C,1,040,2,04C,1,048,2,04C,1,040,0 *00036,27,PLXX-450B 0F4,034,2,020,1,048,2,03C,1,040,2,03C,1,048,2,03C,1,040,2,03C,1, 048,2,03C,1,040,0 *00037,27,PLXX-500B 0F4,054,2,020,1,048,2,03C,1,040,2,03C,1,048,2,04C,1,040,2,04C,1, 048,2,03C,1,040,0 *00038,27,PLXX-600B 0F4,094,2,020,1,048,2,04C,1,040,2,04C,1,048,2,04C,1,040,2,04C,1, 048,2,04C,1,040,0 *00039,14,PLXX-050C 014,2,020,1,048,2,02C,1,040,2,028,1,014,0 *00040,14,PLXX-100C 024,2,020,1,048,2,04C,1,040,2,028,1,024,0 *00041,14,PLXX-150C 034,2,020,1,048,2,06C,1,040,2,028,1,034,0 *00042,14,PLXX-200C 044,2,020,1,048,2,08C,1,040,2,028,1,044,0 *00043,22,PLXX-300C 064,2,020,1,048,2,03C,1,040,2,06C,1,048,2,03C,1,040,2,028,1,064, 0 *00044,22,PLXX-400C 084,2,020,1,048,2,04C,1,040,2,08C,1,048,2,04C,1,040,2,028,1,084, 0 *00045,30,PLXX-450C 094,2,020,1,048,2,03C,1,040,2,03C,1,048,2,06C,1,040,2,03C,1,048, 2,03C,1,040,2,028,1,094,0 *00046,30,PLXX-500C 0A4,2,020,1,048,2,03C,1,040,2,03C,1,048,2,08C,1,040,2,03C,1,048, 2,03C,1,040,2,028,1,0A4,0 *00047,30,PLXX-600C 0C4,2,020,1,048,2,04C,1,040,2,04C,1,048,2,08C,1,040,2,04C,1,048, 2,04C,1,040,2,028,1,0C4,0 on voit ici que *00002 équivaut à CFXX-050B J'espère que tu as compris le principe. Pour ton information, il vaut mieux que le fichier SHX (et éventuellement les fichier LIN)soit placé dans un dossier de support.
-
[Résolu] Commande SCU OBJET dans l'exécution d'un LISP
bonuscad a répondu à un(e) sujet de MrWoolf dans Débuter en LISP
Bonjour Quand tu utilise (entsel), il te retourne une liste du genre: (<Nom d'entité: -41234d40> (242.162 -64.6885 0.0)) où le 1er élément est le nom de l'entité et le second est le point de sélection. Donc un (cadr (entsel)) te retourne essentiellement le point de sélection et pas la définition de l'objet sélectionné. Tu fais une confusion avec la liste retourné par un (entget (car (entsel))) NB: ATTENTION le point retourné par (cadr (entsel)) n'appartient pas à l'objet, c'est plutôt le point centre de la cible de sélection, donc proche de l'objet. Suivant le degré de zoom ce point peut ne plus être valide ultérieurement dans le code. On peut contourner ce problème avec la fonction (osnap (cadr (entsel)) "_near") pour obtenir un point situé exactement sur l'objet. -
Création d'un programme éclairage public
bonuscad a répondu à un(e) sujet de mateus dans LISP et Visual LISP
Bonjour Regarde la fonction lisp (tblsearch table-name symbol [setnext]) Si celle-ci te retourne autre chose que nil, ne rien faire, autrement créer la table. -
Gilles a l'honneur (chez lee-mac) !
bonuscad a répondu à un(e) sujet de lecrabe dans CAO, généralités
Si tu utilise Firefox, tu as le module ImTranslator qui est bien pratique pour traduire des extraits avec des copier-coller ou avec Google, tu as aussi cette technique Traduction google -
En lisp le caractère "\" est un caractère spécial. Extrait de l'aide à propos de (prin1) Il peut aussi être interprété littéralement comme une pause (surtout dans les macro) En lisp dans les chemins de dossier il faut donc le doubler (1er exemple de l'extrait de l'aide) ou alors, autre possibilité le remplacer par le seul symbole "/" (slash ou diviser en français)
-
Bonjour lili2006 Malheureusement la structure du nom de tes fichier ne convient pas... Voici par exemple la mienne pour un scan25 http://uppix.net/3/0/6/2a9ce98f33f84e4cfb11e5d4369f6t.jpg Pour les scans > 1/25000 le principe de matricule des noms de fichier n'est plus la même, donc cela ne fonctionnera pas. SC25_TOUR_0760_6400_L93.tif Ici en rouge tu retrouves les coordonnées X Y en Lambert93 du cliché (les 4 premières décimales) ce qui représente en faite la coordonnée 760000.0,6400000.0 Pour la Bd-Ortho le principe est le même. Autrement ta modification n'est pas correcte, il faut penser à doubler les \ (anti-slash) Ceci serait correct: Là le principe est plutôt avec le numéro INSEE de la commune, la section puis la feuille, donc rien à voir avec les coordonnées. (en tout cas avec le cadastre provenant du format vectoriel EDIGEO) avec le format raster cela reste peut être possible (à voir) Il faudrait peut être envisager un dessin gabarit dans lequel il y aurait par exemple dans le calque "defpoint" (non-imprimable) un texte contenant les infos nécessaires pour identifier la planche à charger. et avec un code de se genre (pour le principe), on pourrait automatiser les chargements. (defun c:BD_PARCELLAIRE ( / js dxf_ent name-image) (while (not (setq js (ssget "_+.:E:S" '((0 . "TEXT") (67 . 0) (410 . "Model") (8 . "Defpoints") (62 . 1) (100 . "AcDbText")))))) (setq dxf_ent (entget (ssname js 0))) (setq name-image (cdr (assoc 1 dxf_ent))) (initget "Attacher Détacher _Attach Detach") (if (eq (getkword "\n[Attacher/Détacher] l'image <Détacher>: ") "Attach") (command "_.-image" "_attach" name-image (cdr (assoc 10 dxf_ent)) "1000" "0") (command "_.-image" "_detach" (substr name-image (1+ (vl-string-search "BDP_07_" name-image)) 24)) ) (prin1) ) Tu devrais donner un extrait de structure de dossier et du noms des fichiers (comme à fait lili), pour voir si le premier principe est applicable.
-
Je trouve que cette situation exceptionnelle du Nord-Ouest de la France peut donner un aperçu de ce qui se passerait si le Gulf-Stream venait à faiblir sérieusement. Les bretons et les Normands en ski et le bassin Méditerranéen en terrasse. Comme quoi; avec une bouillotte ça va toute de suite mieux. Merci la Méditerranée! :P
-
La Bd-Ortho de l'IGN est sous licence, je me voie mal mettre en ligne des fichiers pour tester.En plus 2DVD complet, ça fait du monde... Mais rien ne t'empêche d'enlever les semi-colon devant: ; (setvar "LIMCHECK" 0) ; (setvar "LIMMIN" '(760000.0 6345000.0)) ; (setvar "LIMMAX" '(855000.0 6485000.0)) et de rajouter en dessous de celle-ci: (command "_.zoom" "_all") Tu lance le lisp et tu balade ton curseur. Bien sur si tu clique, il n'insérera pas l'image (puisque tu ne les possèdes pas!) En fait les noms de clichés de l'IGN sont constitués d'une partie des coordonnées d'insertion de l'image. C'est pour cela qu'après adaptation cela doit fonctionner sur n'importe quel département de France. Voici aussi presque le même pour le SCAN25 (ici il n'y a qu'un dossier ou DVD) (defun trunc (xr / ia) (setq ia (itoa (fix (/ xr 10000.0)))) (strcat (cond ((< (strlen ia) 3) "0") ((< (strlen ia) 2) "00") (T "") ) (strcat ia "0") ) ) (defun c:SCAN25 ( / ent_text dxf_ent key img_name folder) ; (setvar "LIMCHECK" 0) ; (setvar "LIMMIN" '(760000.0 6345000.0)) ; (setvar "LIMMAX" '(855000.0 6485000.0)) ; (command "_.zoom" "_all") (setq ent_text (entmakex (list (cons 0 "MTEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbMText") (cons 1 "") (cons 10 (trans (getvar "VIEWCTR") 0 1)) (cons 40 (/ (getvar "VIEWSIZE") 75.0)); (cons 50 (- 0 (getvar "VIEWTWIST"))) (cons 62 250) (cons 71 7) (cons 72 5) (cons 90 1) (cons 63 255) (cons 45 1.5) ) ) dxf_ent (entget ent_text) ) (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (setq img_name (strcat "SC25_TOUR_" (trunc (caadr key)) "_" (itoa (+ (atoi (trunc (cadadr key))) 10)) "_L93.tif") dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent) dxf_ent (subst (cons 1 (strcat "{\\fArial;" img_name "}" )) (assoc 1 dxf_ent) dxf_ent) dxf_ent (subst (cons 40 (/ (getvar "VIEWSIZE") 75.0)) (assoc 40 dxf_ent) dxf_ent) ) (entmod dxf_ent) ) ) ) (cond ((eq (car key) 3) (entdel ent_text) (setq folder "K:\\4-SCAN\\1-SCAN25\\SC25_TOUR_TIF_LAMB93_DEP07\\") (if (findfile (strcat folder img_name)) (progn (princ (strcat "\nCharge l'image: " (strcat folder img_name))) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_MAPIINSERT" (strcat folder img_name) "_no") (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) ) (princ (strcat "\nL'image " img_name " est introuvable!")) ) ) ) (prin1) )
-
Bonjour, Pour ceux qui utilise la BD-ORTHO de l'IGN, je vous propose un bout de code (à personnaliser) pour insérer la bonne dalle au bon endroit. En effet quoi de plus pénible que de devoir identifier le nom de la dalle que l'on veut inséré, puis de parcourir tous les dossiers/fichiers pour sélectionner le bon cliché! Voici le bout de code: (defun trunc (xr / ia) (setq ia (itoa (fix (/ xr 10000.0)))) (strcat (cond ((< (strlen ia) 3) "0") ((< (strlen ia) 2) "00") (T "") ) (if (> (- (fix (/ xr 1000)) (* 10 (fix (/ xr 10000)))) 4) (strcat ia "5") (strcat ia "0") ) ) ) (defun c:BD_ORTHO ( / ent_text dxf_ent key img_name folder) ;On pourrait ici par exemple déterminer l'emprise globale des dalles et faire un zoom ; (setvar "LIMCHECK" 0) ; (setvar "LIMMIN" '(760000.0 6345000.0)) ; (setvar "LIMMAX" '(855000.0 6485000.0)) (setq ent_text (entmakex (list (cons 0 "MTEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbMText") (cons 1 "") (cons 10 (trans (getvar "VIEWCTR") 0 1)) (cons 40 (/ (getvar "VIEWSIZE") 75.0)); (cons 50 (- 0 (getvar "VIEWTWIST"))) (cons 62 250) (cons 71 7) (cons 72 5) (cons 90 1) (cons 63 255) (cons 45 1.5) ) ) dxf_ent (entget ent_text) ) (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (setq ;Concaténez les valeurs textes vous concernant img_name (strcat "07-2011-" (trunc (caadr key)) "-" (itoa (+ (atoi (trunc (cadadr key))) 5)) "-LA93.ecw") dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent) dxf_ent (subst (cons 1 (strcat "{\\fArial;" img_name "}" )) (assoc 1 dxf_ent) dxf_ent) dxf_ent (subst (cons 40 (/ (getvar "VIEWSIZE") 75.0)) (assoc 40 dxf_ent) dxf_ent) ) (entmod dxf_ent) ) ) ) (cond ((eq (car key) 3) (entdel ent_text) ;ICI il vous faut fixer en DUR le dossier contenant les images ECW (setq folder "K:\\1-BDORTHO\\ORTHO-2011\\BDO_RVB_0M50_ECW_LAMB93_D07-ED11-1\\") (if (findfile (strcat folder img_name)) (progn (princ (strcat "\nCharge l'image: " (strcat folder img_name))) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_MAPIINSERT" (strcat folder img_name) "_no") (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) ) (progn ;PAREIL ICI il vous faut fixer en DUR le dossier contenant les images ECW (2 dossier en tout représentant les 2 DVD) (setq folder "K:\\1-BDORTHO\\ORTHO-2011\\BDO_RVB_0M50_ECW_LAMB93_D07-ED11-2\\") (if (findfile (strcat folder img_name)) (progn (princ (strcat "\nCharge l'image: " (strcat folder img_name))) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_MAPIINSERT" (strcat folder img_name) "_no") (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) ) (princ (strcat "\nL'image " img_name " est introuvable!")) ) ) ) ) ) (prin1) ) Après lancement du lisp il vous suffit de déplacer le curseur pour avoir le nom du cliché et de simplement cliquer pour insérer la dalle. NB: Cela peut être adaptable à une version pleine d'AutoCad autre que MAP en remplaçant "_MAPIINSERT" par "_IMAGEATTACH" et en fournissant les coordonnées qui ont été concaténées dans la variable img_name
-
Bonjour, Ce que tu peux faire est d'utiliser ceci sur tes objets concerné par tes type de ligne. La procédure va te retourner la description et définition du type de ligne en INCH. Il te suffira de faire un copier-coller dans un fichier ".LIN" approprié en appliquant un facteur de conversion (2.54) au définition concernée (sauf les angles) (defun c:model_typline ( / ent ent_dxf nam_tl def_tl prec m_adir m_abas nam_lin def_lin nbr_lin w_line lg_tiret tp_cpx cod_shx ss_ent styl_tl file_shx scal_motif rot_motif x_motif y_motif str_motif) (setvar "cmdecho" 0) (while (not (setq ent (entsel "\nChoix du TypeLigne modèle: ")))) (setq ent_dxf (entget (car ent)) nam_tl (assoc 6 ent_dxf)) (cond ((and (cdr nam_tl) (/= (cdr nam_tl) "ByLayer") (/= (cdr nam_tl) "ByBlock")) (initget 4) (setq def_tl (entget (tblobjname "Ltype" (cdr nam_tl))) prec (getint (strcat "\nPrécision décimale désirée<" (itoa (getvar "LUPREC")) ">: ")) ) (if (not prec) (setq prec (getvar "LUPREC"))) (setq m_adir (getvar "angdir") m_abas (getvar "angbase") nam_lin (strcat "*" (cdr (assoc 2 def_tl))) def_lin (strcat "," (cdr (assoc 3 def_tl))) lg_lin (cdr (assoc 40 def_tl)) nbr_line (cdr (assoc 73 def_tl)) w_line "\nA" ) (setvar "angdir" 0) (setvar "angbase" 0) (textscr) (princ (strcat "\n" nam_lin def_lin)) (princ w_line) (while (/= (caar def_tl) 49) (setq def_tl (cdr def_tl)) ) (while def_tl (cond ((eq 49 (caar def_tl)) (setq lg_tiret (cdar def_tl)) (princ (strcat "," (rtos lg_tiret 2 prec))) ) ((eq 74 (caar def_tl)) (setq tp_cpx (cdar def_tl)) ) ((eq 75 (caar def_tl)) (setq cod_shx (cdar def_tl)) (cond ((eq tp_cpx 2) (princ (strcat ",[\"" (cdr (assoc 9 def_tl)) "\"")) ) ((eq tp_cpx 4) (princ ",[*") ) ) ) ((eq 340 (caar def_tl)) (setq ss_ent (entget (cdr (assoc 340 def_tl)))) (if ss_ent (setq styl_tl (cdr (assoc 2 ss_ent)) file_shx (cdr (assoc 3 ss_ent)) ) (setq styl_tl "" file_shx " ") ) (if (eq styl_tl "") (princ (strcat (itoa cod_shx) "," file_shx)) (princ (strcat "," styl_tl)) ) ) ((eq 46 (caar def_tl)) (setq scal_motif (cdr (assoc 46 def_tl))) (princ (strcat ",S=" (rtos scal_motif 2 prec))) ) ((eq 50 (caar def_tl)) (setq rot_motif (cdr (assoc 50 def_tl))) (princ (strcat ",R=" (angtos rot_motif 0 prec))) ) ((eq 44 (caar def_tl)) (setq x_motif (cdr (assoc 44 def_tl))) (princ (strcat ",x=" (rtos x_motif 2 prec))) ) ((eq 45 (caar def_tl)) (setq y_motif (cdr (assoc 45 def_tl))) (princ (strcat ",y=" (rtos y_motif 2 prec) "]")) ) ((eq 9 (caar def_tl)) (setq str_motif (cdr (assoc 9 def_tl))) ) ) (setq def_tl (cdr def_tl)) ) (setvar "angdir" m_adir) (setvar "angbase" m_abas) ) (T (princ "\nImpossible de récuperer le type de ligne de l'objet pointé.")) ) (setvar "cmdecho" 1) (prin1) ) Un exemple de ce qui peut être retourné: En rouge les valeurs à convertir d'impérial à mètrique. PS:Comme tu n'as pas joint le fichier de forme SHX, je n'ai pas essayé de faire les conversions. RE PS: La valeur de conversion de 2.54 peut être, suivant si tu convertir vers des mm cm m etc.. de 0.254, 2.54, 25.4, 254
-
Les fonctions (read-line) (write-line), cela est vrai aussi pour (prin1) (princ) (print) (write-char) (read-char), ne peuvent se faire que sous la forme séquentielle dans un fichier ouvert. Donc pour faire ce que tu veux, cela oblige à lire intégralement le fichier, puis après l'ordonner en mémoire et réécrire l'ensemble. Cette lecture et écriture intégrale peut être pénalisante en temps de traitement sur de gros fichiers. Pour faire ce que veux, il faudrait se tourner vers la liaison excel en colonnes et rangées. Voir les liaisons sous excel en lisp sur le blog de patrick_35, par exemple Api_xls v2.00
-
L'articlequi m'a fais découvrir ce lien. Aussi ;) , mais la profondeur de zoom à l'air moins importante.
-
Bonjour, Vous voulez faire une escapade virtuelle en utilisant une lunette télescopique numérique, c'est ici que ça se passe... Un assemblage impressionnant de photos pratiquement simultanées pour former un cliché à 360° à haute résolution. Pour Charlie, si vous le localisez...
-
jpeg, C'est sympa de lui donner un lien vers un lisp, mais s'il est sous une version LT, il n'en fera pas grand chose. Autrement NicolasC qui a publié l'article sur ton site en lien aurait pu citer la source :angry: C'est d'une indélicatesse complète pour l'auteur qui je suppose est Gilles Chanteau, connu ici sous le pseudo de (gile). Sous une version LT, la seule solution qui me semble possible est d'exporter le dessin (DXF ou DWG) sous une version antérieur qui ne connaissait pas les objets AEC, au risque de perdre aussi d'autre informations.
-
Oui, je n'avais pas fais attention en te créant l'exemple... Tu as corrigé par toi même, c'est bien. C'est presque ça, il faut mettre le caractère \ devant certain guillemet pour les écrire comme il faut dans le script. Sans tester, ça doit être proche de ceci: (write-line "(my_replace_text \"E318\" \"D214\")" fscr)
-
Bonjour, Est tu sur d'avoir utilisé la syntaxe entre parenthèses... car le code est une fonction, pas une commande. Si ce code est enregistrer (dans un dossier de recherche de préférence) sous le nom par exemple de MY_REPLACE.LSP. Dans ton script, il te suffira d'avoir les lignes suivantes: (load "my_replace") (my_replace_text "A315-555-xxx" "B478-555-xxx")
-
Pour les PC ma préférence va chez DELL (alors qu'avant je préférais HP) Par contre pour les périphérique d'impression professionnel, je préfère HP. Ce n'est qu'un avis personnel forgé par l'expérience de l'usage des 2 marques.
-
J'ai fais rapidement un test avec DXB et un wbloc des texte (attention certain sont des bloc), hachures et cotation Une fois ré-assemblé tout ça je tombe a 13796Ko. Je te joint le zip juste pour voir, mais je te conseilles de refaire la manip consciencieusement car je me suis loupé sur les unités entre le Wblock et le DXB et l'insertion que j'ai faite à l'oeil (il faudrait penser à mettre des points de repères identiques dans les 2 fichiers). http://www.gigaup.fr/?g=NMS04D5T5W
-
Peut être une autre solution plus rapide (pas testée) Isoler les textes,cotations et les hachures (en faire un wblock serait pas mal) et avec le reste faire une sortie traceur DXB (à l'échelle 1) dans un fichier. Dans un nouveau dessin faire la commande "_DXBIN" pour réimporter tes lignes de structures et insérer (en mode décomposé) ton fichier contenant les textes et les hachures. Je pense que de cette façon tu vas réduire drastiquement ton fichier, l'inconvénient tu vas perdre tout les blocs. En fait tu n'aura que des lignes (aucun arrondi), pas de polylignes ni arc et cercle. A voir si cela pourrait te convenir
-
Il y a plein de blocs dans ce dessin. Notamment avec des noms comme "Groupe-xxxx" et "PL-ME-xxxx". Je pense qu'en utilisant "'FILTER" avec comme nom de bloc "Groupe-*" puis une fois sélectionnés, les décomposer, puis faire une purge. Faire pareil avec les "PL-ME-*" Répéter l'opération autant de fois que nécessaire car en plus ils ont l'air imbriqués... Faire des sauvegarde intermédiaires. J'ai commencé et fais déjà 6 passes + plantages d'Autocad entre temps, donc j'ai arrêté car ces opérations prennent du temps et ma machine n'a pas assez de mémoire pour ces opérations. Je pensent que le problème vient de là car ces blocs ne sont utilisés qu'une fois même dans les imbrications et que cela génère des définitions en double dans les bloc, ce qui augmente la taille du fichier. En tout cas ce fichier n'a pas été réalisé par un produit AutoDesk. Bon courage...
-
zone tampon ou buffer d'une polyligne
bonuscad a répondu à un(e) sujet de fabcad dans Suggestions de développements
Salut fabcad, Une variante de ta routine, écrite simplement (pas fais de test approfondi avec des SCU particuliers) (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst)) (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) ) ) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:buffer ( / js AcDoc Space ent vla_obj e_width ename l_pt) (princ "\nSélectionner la polyligne à bufferiser") (while (not (setq js (ssget "_+.:E:S" (list (cons 0 "*POLYLINE") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) (cons -4 "<NOT") (cons -4 "&") (cons 70 113) (cons -4 "NOT>") ) ) ) ) ) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ent (ssname js 0) vla_obj (vlax-ename->vla-object ent) ) (initget 7) (setq e_width (getdist "\nLargeur de la zone tampon: ")) (vla-Offset vla_obj (* 0.5 e_width)) (setq ename (vlax-ename->vla-object (entlast)) l_pt (l-coor2l-pt (vlax-get ename 'Coordinates) nil) ) (entdel (entlast)) (vla-Offset vla_obj (- (* 0.5 e_width))) (setq ename (vlax-ename->vla-object (entlast)) l_pt (append (reverse (l-coor2l-pt (vlax-get ename 'Coordinates) nil)) l_pt) ) (entdel (entlast)) (setq nw_pl (vlax-invoke Space 'AddLightWeightPolyline (apply 'append (mapcar 'list (mapcar 'car l_pt) (mapcar 'cadr l_pt))))) (vla-put-Closed nw_pl 1) (prin1) ) -
Normalement ce n'est pas ici que se situe les fichiers d'annulation, mais plutôt à: C:\Documents and Settings\User\Local Settings\Temp Dans ce dossier tu devrait trouver au moins les fichiers: REDO.ac$ UNDO.ac$ qui sont les fichiers d'annulations et de reprises. il y a aussi la sauvegarde automatique .SV$ de ton dessin en cours (qui peut être renommé en DWG en cas de pépin) Lors de plantages d'Autocad, il arrive souvent que plein de fichiers AC$ ne soit pas supprimés comme cela est fait avec une sortie propre d'Autocad. Bien que cela ne porte pas préjudice au fonctionnement, tu peux tous les effacer si aucune session d'Autocad n'est active. Anecdote, pas plus tard qu'hier, j'ai fais un traitement lourd en lisp et j'ai oublié d'avoir UNDOCTL à 0, et bien la session à planter car les fichiers d'annulation ont remplis le disque dur... et j'ai perdu le travail de la procédure. Par contre je n'ai pas de réponse au manque de réactivité de ton premier U...
-
Je l'ai écrit très vite , sans contrôle et sans variables locales (pas bien...) Je demande donc de faire une sélection dont je ne vérifie même pas qu'elle soit vide. Puis dans une boucle correspondant au nombre d'objets contenus, je passe systématiquement en revue le code DXF 210 qui est le vecteur d'extrusion de l'objet et lui affecte par substitution le vecteur standard dans le SCG qui est 0,0,1 (x y z), donc le vecteur d'extrusion est ici l'axe Z du SCG, donc perpendiculaire au plan XY. Avec ce vecteur les objets sont toujours dans un plan parallèle au SCG. En appliquant ceci tu aura des différences dans le positionnement et sur le résultat de mesure en 2D (en ne s'accrochant pas au Z) par rapport aux objets avant la modification, c'est pour ça que je t'ai dit à tes risques et périls. Je te l'ai proposé car je pense que cet état est du à une inattention de l'opérateur lors de la mis en place des objets, mais ce n'est pas une procédure que je recommanderai dans d'autres situations. Si les mesures, après l'application du lisp, en t'accrochant te semble correcte, tu peux valider ce redressement des objets. Voir si le positionnement (s'il a de l'importance) te convient aussi. Comme les anciens vecteurs étaient proche de la normale, les écarts devraient être à peine mesurable... Il faut garder à l'esprit qu'avec cette procédure, tu fais bouger les objets, dans ton cas c'est imperceptible mais ils bougent quand même. Comme cet état était je pense involontaire, tu gagne à redresser la situation ;)
-
Regardé rapidement, Gros problème, beaucoup d'insertion de bloc se sont fait dans un SCU non parallèle au SCG. Cela doit être une erreur qui est passée inaperçue, mais les conséquences sont là, difficile avec les outils proposés de remettre ça d'aplomb. Tu peux tenter ceci sur tes insertions de bloc. ((lambda ( / ) (setq js (ssget)) (repeat (setq n (sslength js)) (setq dxf_ent (entget (ssname js (setq n (1- n))))) (entmod (subst '(210 0.0 0.0 1.0) (assoc 210 dxf_ent) dxf_ent)) ) )) Cela fais tu exécute ensuite flatten qui devrait alors mieux fonctionner... Solution non garantie, à tes risques et péril, contrôler le résultat avec l'original. (Travailler sur une copie)
-
Lenteur envois fichier sur HP DESIGNJET T1200
bonuscad a répondu à un(e) sujet de jalna dans Périphériques de sortie, impression
Peut être que la gestion du mode bidirectionnel n'est pas activé dans l'onglet "Ports". Panneau de configuration des imprimantes par windows Activer ce mode permet au traceur de converser avec ton PC et ainsi de savoir l'état du périph avant d'envoyer une impression (disponibilité du: type de papier, format du rouleau, niveau cartouche d'encre, etc...)
