azrael
Membres-
Compteur de contenus
69 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par azrael
-
Remplacer valeur d'un attribut par un autre
azrael a répondu à un(e) sujet de azrael dans Routines LISP
Super. Je me suis emberlificoté vers le Lisp et j'ai compliqué la chose. Un grand merci pour cette solution -
Bonjour, J'ai un peu plus de 1500 blocs de luminaires (lum_08) avec une valeur un attribut OSB1. XXXX Je souhaite remplacer le texte des 1500 blocs à partir d'un fichier excel ? cellule A1 = 9587 cellule B1 = 4879 cellule A2 = 9588 cellule B2 = 4327 Je remplacerais la valeur de l'attribut OSB1 du bloc lum_08 "9587" par "4879" Cela vous semble-t-il possible ? Merci d'avance pour votre aide et vos suggestions Maxime
-
Effectivement, c'est top 🙂 Merci
-
Bonjour, J'utilise le (trop super) lisp de Gile pour insérer un bloc dynamique avec une valeur d'attribut qui s'incrémente . Malheureusement, les blocs ne sont plus dynamique après l'insertion ? C'est normal ? TMP.dwg
-
Copier certains attributs d'un bloc à un autre bloc différent
azrael a répondu à un(e) sujet de asptt9 dans LISP et Visual LISP
Bonjour, J'utilise ce fichier Lisp régulièrement. Je me demandais s'il était possible de tenir compte que d'un attribut, celui sélectionné lorsqu'on clique sur bloc ""\nSélectionnezle bloc d'origine : "))" , un peu comme "_eattedit" Encore plus loin ... sélectionnez un, deux ou trois attributs d'un bloc et recopier dans d'autres blocs ? Sinon, c'est déjà très bien comme cela ;) Maxime -
Désolé mais je ne peux rien faire pour t'aider ! :(
-
Il m'a fallu plusieurs secondes pour comprendre cette triste nouvelle :( Je suis très sincèrement triste car, je me rends compte seulement à l'instant, il faisait parti de ma famille "professionnelle". Il m'a tellement aidé dans mon boulot que j'en suis rouge de honte de n'avoir pas pu lui dire "Merci" comme il se doit. Partager une bière, un resto et discuter de la vie. Evidemment, je m'associe à vos messages et je pense à sa famille et ses amis. Merci "Monsieur" Patrick pour avoir tellement donné ...
-
Bonjour Denis, Désolé mais j'étais HS ;) Effectivement, j'ai un fichier lisp pour créer les champs puis un autre pour modifier les champs. Rien de vraiment catastrophique. Je ne comprends pas pourquoi ta solution ne modifie pas la valeur du champs.
-
La routine de Terry Miller GetExcel is a general purpose function for (Excel to AutoCAD) and (AutoCAD to Excel) applications. Special credit to Gilles Chanteau from Marseille, France for his sub-functions ColumnRow, Alpha2Number and Number2Alpha. The syntax for the functions are easy to follow and include documentation of the conditions of each argument in the function headings. ;------------------------------------------------------------------------------- ; Program Name: GetExcel.lsp [GetExcel R4] ; Created By: Terry Miller (courriel: terrycadd@yahoo.com) ; (URL: http://web2.airmail.net/terrycad) ; Date Created: 9-20-03 ; Function: Several functions to get and put values into Excel cells. ;------------------------------------------------------------------------------- ; Revision History ; Rev By Date Description ;------------------------------------------------------------------------------- ; 1 TM 9-20-03 Initial version ; 2 TM 8-20-07 Rewrote GetExcel.lsp and added several new sub-functions ; including ColumnRow, Alpha2Number and Number2Alpha written ; by Gilles Chanteau from Marseille, France. ; 3 TM 12-1-07 Added several sub-functions written by Gilles Chanteau ; including Cell-p, Row+n, and Column+n. Also added his ; revision of the PutCell function. ; 4 GC 9-20-08 Revised the GetExcel argument MaxRange$ to accept a nil ; and get the current region from cell A1. ;------------------------------------------------------------------------------- ; Overview of Main functions ;------------------------------------------------------------------------------- ; GetExcel - Stores the values from an Excel spreadsheet into *ExcelData@ list ; Syntax: (GetExcel ExcelFile$ SheetName$ MaxRange$) ; Example: (GetExcel "C:\\Folder\\Filename.xls" "Sheet1" "L30") ; GetCell - Returns the cell value from the *ExcelData@ list ; Syntax: (GetCell Cell$) ; Example: (GetCell "H15") ; Function example of usage: ; (defun c:Get-Example () ; (GetExcel "C:\\Folder\\Filename.xls" "Sheet1" "L30");<-- Edit Filename.xls ; (GetCell "H21");Or you can just use the global *ExcelData@ list ; );defun ;------------------------------------------------------------------------------- ; OpenExcel - Opens an Excel spreadsheet ; Syntax: (OpenExcel ExcelFile$ SheetName$ Visible) ; Example: (OpenExcel "C:\\Folder\\Filename.xls" "Sheet1" nil) ; PutCell - Put values into Excel cells ; Syntax: (PutCell StartCell$ Data$) or (PutCell StartCell$ DataList@) ; Example: (PutCell "A1" (list "GP093" 58.5 17 "Base" "3'-6 1/4\"")) ; CloseExcel - Closes Excel session ; Syntax: (CloseExcel ExcelFile$) ; Example: (CloseExcel "C:\\Folder\\Filename.xls") ; Function example of usage: ; (defun c:Put-Example () ; (OpenExcel "C:\\Folder\\Filename.xls" "Sheet1" nil);<-- Edit Filename.xls ; (PutCell "A1" (list "GP093" 58.5 17 "Base" "3'-6 1/4\""));Repeat as required ; (CloseExcel "C:\\Folder\\Filename.xls");<-- Edit Filename.xls ; (princ) ; );defun ;------------------------------------------------------------------------------- ; Note: Review the conditions of each argument in the function headings ;------------------------------------------------------------------------------- ; GetExcel - Stores the values from an Excel spreadsheet into *ExcelData@ list ; Arguments: 3 ; ExcelFile$ = Path and filename ; SheetName$ = Sheet name or nil for not specified ; MaxRange$ = Maximum cell ID range to include or nil to get the current region from cell A1 ; Syntax examples: ; (GetExcel "C:\\Temp\\Temp.xls" "Sheet1" "E19") = Open C:\Temp\Temp.xls on Sheet1 and read up to cell E19 ; (GetExcel "C:\\Temp\\Temp.xls" nil "XYZ123") = Open C:\Temp\Temp.xls on current sheet and read up to cell XYZ123 ;------------------------------------------------------------------------------- (defun GetExcel (ExcelFile$ SheetName$ MaxRange$ / Column# ColumnRow@ Data@ ExcelRange^ ExcelValue ExcelValue ExcelVariant^ MaxColumn# MaxRow# Range$ Row# Worksheet) (if (= (type ExcelFile$) 'STR) (if (not (findfile ExcelFile$)) (progn (alert (strcat "Excel file " ExcelFile$ " not found.")) (exit) );progn );if (progn (alert "Excel file not specified.") (exit) );progn );if (gc) (if (setq *ExcelApp% (vlax-get-object "Excel.Application")) (progn (alert "Close all Excel spreadsheets to continue!") (vlax-release-object *ExcelApp%)(gc) );progn );if (setq ExcelFile$ (findfile ExcelFile$)) (setq *ExcelApp% (vlax-get-or-create-object "Excel.Application")) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Open ExcelFile$) (if SheetName$ (vlax-for Worksheet (vlax-get-property *ExcelApp% "Sheets") (if (= (vlax-get-property Worksheet "Name") SheetName$) (vlax-invoke-method Worksheet "Activate") );if );vlax-for );if (if MaxRange$ (progn (setq ColumnRow@ (ColumnRow MaxRange$)) (setq MaxColumn# (nth 0 ColumnRow@)) (setq MaxRow# (nth 1 ColumnRow@)) );progn (progn (setq CurRegion (vlax-get-property (vlax-get-property (vlax-get-property *ExcelApp% "ActiveSheet") "Range" "A1") "CurrentRegion") );setq (setq MaxRow# (vlax-get-property (vlax-get-property CurRegion "Rows") "Count")) (setq MaxColumn# (vlax-get-property (vlax-get-property CurRegion "Columns") "Count")) );progn );if (setq *ExcelData@ nil) (setq Row# 1) (repeat MaxRow# (setq Data@ nil) (setq Column# 1) (repeat MaxColumn# (setq Range$ (strcat (Number2Alpha Column#)(itoa Row#))) (setq ExcelRange^ (vlax-get-property *ExcelApp% "Range" Range$)) (setq ExcelVariant^ (vlax-get-property ExcelRange^ 'Value)) (setq ExcelValue (vlax-variant-value ExcelVariant^)) (setq ExcelValue (cond ((= (type ExcelValue) 'INT) (itoa ExcelValue)) ((= (type ExcelValue) 'REAL) (rtosr ExcelValue)) ((= (type ExcelValue) 'STR) (vl-string-trim " " ExcelValue)) ((/= (type ExcelValue) 'STR) "") );cond );setq (setq Data@ (append Data@ (list ExcelValue))) (setq Column# (1+ Column#)) );repeat (setq *ExcelData@ (append *ExcelData@ (list Data@))) (setq Row# (1+ Row#)) );repeat (vlax-invoke-method (vlax-get-property *ExcelApp% "ActiveWorkbook") 'Close :vlax-False) (vlax-invoke-method *ExcelApp% 'Quit) (vlax-release-object *ExcelApp%)(gc) (setq *ExcelApp% nil) *ExcelData@ );defun GetExcel ;------------------------------------------------------------------------------- ; GetCell - Returns the cell value from the *ExcelData@ list ; Arguments: 1 ; Cell$ = Cell ID ; Syntax example: (GetCell "E19") = value of cell E19 ;------------------------------------------------------------------------------- (defun GetCell (Cell$ / Column# ColumnRow@ Return Row#) (setq ColumnRow@ (ColumnRow Cell$)) (setq Column# (1- (nth 0 ColumnRow@))) (setq Row# (1- (nth 1 ColumnRow@))) (setq Return "") (if *ExcelData@ (if (and (>= (length *ExcelData@) Row#)(>= (length (nth 0 *ExcelData@)) Column#)) (setq Return (nth Column# (nth Row# *ExcelData@))) );if );if Return );defun GetCell ;------------------------------------------------------------------------------- ; OpenExcel - Opens an Excel spreadsheet ; Arguments: 3 ; ExcelFile$ = Excel filename or nil for new spreadsheet ; SheetName$ = Sheet name or nil for not specified ; Visible = t for visible or nil for hidden ; Syntax examples: ; (OpenExcel "C:\\Temp\\Temp.xls" "Sheet2" t) = Opens C:\Temp\Temp.xls on Sheet2 as visible session ; (OpenExcel "C:\\Temp\\Temp.xls" nil nil) = Opens C:\Temp\Temp.xls on current sheet as hidden session ; (OpenExcel nil "Parts List" nil) = Opens a new spreadsheet and creates a Part List sheet as hidden session ;------------------------------------------------------------------------------- (defun OpenExcel (ExcelFile$ SheetName$ Visible / Sheet$ Sheets@ Worksheet) (if (= (type ExcelFile$) 'STR) (if (findfile ExcelFile$) (setq *ExcelFile$ ExcelFile$) (progn (alert (strcat "Excel file " ExcelFile$ " not found.")) (exit) );progn );if (setq *ExcelFile$ "") );if (gc) (if (setq *ExcelApp% (vlax-get-object "Excel.Application")) (progn (alert "Close all Excel spreadsheets to continue!") (vlax-release-object *ExcelApp%)(gc) );progn );if (setq *ExcelApp% (vlax-get-or-create-object "Excel.Application")) (if ExcelFile$ (if (findfile ExcelFile$) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Open ExcelFile$) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add) );if (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add) );if (if Visible (vla-put-visible *ExcelApp% :vlax-true) );if (if (= (type SheetName$) 'STR) (progn (vlax-for Sheet$ (vlax-get-property *ExcelApp% "Sheets") (setq Sheets@ (append Sheets@ (list (vlax-get-property Sheet$ "Name")))) );vlax-for (if (member SheetName$ Sheets@) (vlax-for Worksheet (vlax-get-property *ExcelApp% "Sheets") (if (= (vlax-get-property Worksheet "Name") SheetName$) (vlax-invoke-method Worksheet "Activate") );if );vlax-for (vlax-put-property (vlax-invoke-method (vlax-get-property *ExcelApp% "Sheets") "Add") "Name" SheetName$) );if );progn );if (princ) );defun OpenExcel ;------------------------------------------------------------------------------- ; PutCell - Put values into Excel cells ; Arguments: 2 ; StartCell$ = Starting Cell ID ; Data@ = Value or list of values ; Syntax examples: ; (PutCell "A1" "PART NUMBER") = Puts PART NUMBER in cell A1 ; (PutCell "B3" '("Dim" 7.5 "9.75")) = Starting with cell B3 put Dim, 7.5, and 9.75 across ;------------------------------------------------------------------------------- (defun PutCell (StartCell$ Data@ / Cell$ Column# ExcelRange Row#) (if (= (type Data@) 'STR) (setq Data@ (list Data@)) ) (setq ExcelRange (vlax-get-property *ExcelApp% "Cells")) (if (Cell-p StartCell$) (setq Column# (car (ColumnRow StartCell$)) Row# (cadr (ColumnRow StartCell$)) );setq (if (vl-catch-all-error-p (setq Cell$ (vl-catch-all-apply 'vlax-get-property (list (vlax-get-property *ExcelApp% "ActiveSheet") "Range" StartCell$)) );setq );vl-catch-all-error-p (alert (strcat "The cell ID \"" StartCell$ "\" is invalid.")) (setq Column# (vlax-get-property Cell$ "Column") Row# (vlax-get-property Cell$ "Row") );setq );if );if (if (and Column# Row#) (foreach Item Data@ (vlax-put-property ExcelRange "Item" Row# Column# (vl-princ-to-string Item)) (setq Column# (1+ Column#)) );foreach );if (princ) );defun PutCell ;------------------------------------------------------------------------------- ; CloseExcel - Closes Excel spreadsheet ; Arguments: 1 ; ExcelFile$ = Excel saveas filename or nil to close without saving ; Syntax examples: ; (CloseExcel "C:\\Temp\\Temp.xls") = Saveas C:\Temp\Temp.xls and close ; (CloseExcel nil) = Close without saving ;------------------------------------------------------------------------------- (defun CloseExcel (ExcelFile$ / Saveas) (if ExcelFile$ (if (= (strcase ExcelFile$) (strcase *ExcelFile$)) (if (findfile ExcelFile$) (vlax-invoke-method (vlax-get-property *ExcelApp% "ActiveWorkbook") "Save") (setq Saveas t) );if (if (findfile ExcelFile$) (progn (vl-file-delete (findfile ExcelFile$)) (setq Saveas t) );progn (setq Saveas t) );if );if );if (if Saveas (vlax-invoke-method (vlax-get-property *ExcelApp% "ActiveWorkbook") "SaveAs" ExcelFile$ -4143 "" "" :vlax-false :vlax-false nil );vlax-invoke-method );if (vlax-invoke-method (vlax-get-property *ExcelApp% "ActiveWorkbook") 'Close :vlax-False) (vlax-invoke-method *ExcelApp% 'Quit) (vlax-release-object *ExcelApp%)(gc) (setq *ExcelApp% nil *ExcelFile$ nil) (princ) );defun CloseExcel ;------------------------------------------------------------------------------- ; ColumnRow - Returns a list of the Column and Row number ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 1 ; Cell$ = Cell ID ; Syntax example: (ColumnRow "ABC987") = '(731 987) ;------------------------------------------------------------------------------- (defun ColumnRow (Cell$ / Column$ Char$ Row#) (setq Column$ "") (while (< 64 (ascii (setq Char$ (strcase (substr Cell$ 1 1)))) 91) (setq Column$ (strcat Column$ Char$) Cell$ (substr Cell$ 2) );setq );while (if (and (/= Column$ "") (numberp (setq Row# (read Cell$)))) (list (Alpha2Number Column$) Row#) '(1 1);default to "A1" if there's a problem );if );defun ColumnRow ;------------------------------------------------------------------------------- ; Alpha2Number - Converts Alpha string into Number ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 1 ; Str$ = String to convert ; Syntax example: (Alpha2Number "ABC") = 731 ;------------------------------------------------------------------------------- (defun Alpha2Number (Str$ / Num#) (if (= 0 (setq Num# (strlen Str$))) 0 (+ (* (- (ascii (strcase (substr Str$ 1 1))) 64) (expt 26 (1- Num#))) (Alpha2Number (substr Str$ 2)) );+ );if );defun Alpha2Number ;------------------------------------------------------------------------------- ; Number2Alpha - Converts Number into Alpha string ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 1 ; Num# = Number to convert ; Syntax example: (Number2Alpha 731) = "ABC" ;------------------------------------------------------------------------------- (defun Number2Alpha (Num# / Val#) (if (< Num# 27) (chr (+ 64 Num#)) (if (= 0 (setq Val# (rem Num# 26))) (strcat (Number2Alpha (1- (/ Num# 26))) "Z") (strcat (Number2Alpha (/ Num# 26)) (chr (+ 64 Val#))) );if );if );defun Number2Alpha ;------------------------------------------------------------------------------- ; Cell-p - Evaluates if the argument Cell$ is a valid cell ID ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 1 ; Cell$ = String of the cell ID to evaluate ; Syntax examples: (Cell-p "B12") = t, (Cell-p "BT") = nil ;------------------------------------------------------------------------------- (defun Cell-p (Cell$) (and (= (type Cell$) 'STR) (or (= (strcase Cell$) "A1") (not (equal (ColumnRow Cell$) '(1 1))) );or );and );defun Cell-p ;------------------------------------------------------------------------------- ; Row+n - Returns the cell ID located a number of rows from cell ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 2 ; Cell$ = Starting cell ID ; Num# = Number of rows from cell ; Syntax examples: (Row+n "B12" 3) = "B15", (Row+n "B12" -3) = "B9" ;------------------------------------------------------------------------------- (defun Row+n (Cell$ Num#) (setq Cell$ (ColumnRow Cell$)) (strcat (Number2Alpha (car Cell$)) (itoa (max 1 (+ (cadr Cell$) Num#)))) );defun Row+n ;------------------------------------------------------------------------------- ; Column+n - Returns the cell ID located a number of columns from cell ; Function By: Gilles Chanteau from Marseille, France ; Arguments: 2 ; Cell$ = Starting cell ID ; Num# = Number of columns from cell ; Syntax examples: (Column+n "B12" 3) = "E12", (Column+n "B12" -1) = "A12" ;------------------------------------------------------------------------------- (defun Column+n (Cell$ Num#) (setq Cell$ (ColumnRow Cell$)) (strcat (Number2Alpha (max 1 (+ (car Cell$) Num#))) (itoa (cadr Cell$))) );defun Column+n ;------------------------------------------------------------------------------- ; rtosr - Used to change a real number into a short real number string ; stripping off all trailing 0's. ; Arguments: 1 ; RealNum~ = Real number to convert to a short string real number ; Returns: ShortReal$ the short string real number value of the real number. ;------------------------------------------------------------------------------- (defun rtosr (RealNum~ / DimZin# ShortReal$) (setq DimZin# (getvar "DIMZIN")) (setvar "DIMZIN" 8) (setq ShortReal$ (rtos RealNum~ 2 8)) (setvar "DIMZIN" DimZin#) ShortReal$ );defun rtosr ;------------------------------------------------------------------------------- (princ);End of GetExcel.lsp
-
J'utilise beaucoup le lisp de DenisHen "DHDossier" mais j'ai toujours le même problème : il n'écrase pas les valeurs. Le code ci-dessous écrase les valeurs mais il ne peut pas créer les propriétés. (defun c:ch_champs () (vla-SetCustomByKey(vla-get-summaryinfo(vla-get-activedocument(Vlax-get-acad-object)))"Tableau" "TEXT") ) ;_ Fin de defun Quelqu'un peut-il m'aider à éviter de jongler avec les deux fichiers ? Merciii d'avance, Maxime
-
Bonjour, J'ai trouvé une routine de Terry Miller qui permet de retrouver facilement la valeur d'une cellule (GetCell "E19") = valeur de la cellule E19. Malheureusement, il n'est pas possible de sélectionner de A2500 à F2500 mais de A1 à F2500. Le PC du bureau est trop lent. La routine de gille est plus rapide mais je n'arrive ^pas à extraire les valeurs.
-
Oups, je suis désolé mais je n'arrive pas à lancer l'application. Habituellement, j'ai un "defun c:*****" mais ici, j'avoue ne pas savoir ce que je dois taper pour lancer l'application :blink:
-
Bonjour Gile, Désolé mais l'entreprise est en audit ACI toute la semaine et nous sommes très sollicités. Je vais tester le programme ce soir à la maison. Déjà un grand merci pour ta réponse rapide ;) J'en profite également pour te remercier pour l'ensemble des solutions déposé sur CadXP. J'en utilise certaines depuis déjà quelques années avec toujours le même bonheur. Maxime
-
Bonjour à tous, Je cherche depuis quelques jours à remplir les cartouches à partir d'un fichiers Excel. J'ai créer des champs à partir des propriétés du dessin - personnaliser (Date - N° de plan - titre1 - titre2 - Site …) J'ai un fichier Excel dont : la 1er colonne = Date la 2ème colonne = N° de plan la 3ème colonne = titre1 Etc. J'ai le fichier lisp qui permet de copier des valeurs dans les propriétés déjà créées. Dans le meilleur des mondes, je souhaiterai pourvoir ouvrir un fichier excel - choisir une feuille - une ligne et copier les valeurs de la ligne dans les propriétés du dessin. J'ai cherché sur le site mais sans résultat. Cela est-il possible ? Maxime
-
Bonjour Steven, Ta proposition fonctionne mais pas enavec un fichier scr pour effectuer l'opération par lot (500 fichiers).
-
Malheureusement, il n'écrase pas. J'avais testé avec mes champs(déjà existants) sans le moindre résultat. Je pensais même que le lisp me fonctionnait pas ;) Après, j'ai utilisais l'original et il a ajouté les champs qui, forcément, n'existaient pas dans mon dessin. Je l'utilise pour les plans électrique avec plusieurs folios (présentations). C'est effectivement magique et cela limite les erreurs. Malheureusement, s'il n'écrase pas, c'est moins nécessaire dans mon cas. Dommage !
-
Bonjour, J'ai découvert les champs pour les cartouches. Je préfère ceux-ci aux attributs. Avec l'aide de dossier.lsp de Denis, j'arrive à ajouter des champs. Merciii Denis. Malheureusement, parfois, il faut écraser la valeur des champs et dans ce cas, c'est plus possible. Quelqu'un a peut-être une solution ? ;;;Enregistrement des détails du dossier dans les propriétés du dessin courant (defun c:DHDossier (/ sum) (princ "\nDéveloppé par Denis H. (V1.0)") (setq sum (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object)) ) ;_ Fin de vla-get-summaryinfo ) ;_ Fin de setq (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-addcustominfo (list sum "Vérifié par" "Julien") ) ;_ Fin de vl-catch-all-apply ) ;_ Fin de vl-catch-all-error-p ) ;_ Fin de and (setq sum (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object)) ) ;_ Fin de vla-get-summaryinfo ) ;_ Fin de setq (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-addcustominfo (list sum "Etage" "3") ) ;_ Fin de vl-catch-all-apply ) ;_ Fin de vl-catch-all-error-p ) ;_ Fin de and (command "_DWGPROPS") (command "regen") (princ) ) ;_ Fin de defun ;|«Visual LISP© Format Options» (72 2 40 2 T "Fin de " 100 9 0 0 nil nil nil nil T) ;*** NE PAS AJOUTER de texte au-dessous du commentaire! ***|;
-
Merci PhilPhil. Le problème sera lorsque du passe de 9 à 10 ou de 99 à 100 et de 999 à 1000 ou lorsque la feuille aura un autre nom à deux lettres. Ce petit script n'est peut-être pas top mais il fonctionne chez moi. Au bureau, c'est un peu plus compliqué car les plans sont sur un serveur. Avec le script, il demande le mot de passe de l'ouverture de ma session ?
-
Dans les tracés par lot (autocad, jeu de feuilles …) il ajoute le nom de la présentation au fichier. Par exemple le fichier 147.dwg présentation A3V. Je vais avoir un fichier 147-A3V.PDF. Avec la fenêtre, il proposerai 147.pdf. J'ai malheureusement absolument besoin que le PDF porte que le nom du fichier DWG. Je préfère le scrip au lisp. Simplement, avec les fortes chaleurs, j'ai pas réfléchi qu'il était possible de taper dans un script (setq x (dwgname)). Je suis alors parti sur du lisp. Merci La Lozère pour l'info "tilemode à 0". Voici la version scr ( / chemin name chemin_name) attdia 1 filedia 1 expert 5 tilemode 0 (setq name (substr (setq str (getvar "dwgname")) 1 (- (strlen str) 4))) (setq chemin (getvar "DWGPREFIX")) (setq chemin_name (strcat chemin name ".pdf")) _-export PDF T !chemin_name _redraw expert 2 ; Je ne pense pas que la première ligne soit utile Malheureusement, je passe de la présentation 1 à la 15 :/
-
Je suis nul en programmation mais j'ai (difficilement) réussi ces quelques lignes. (defun c:printpdf ( / chemin name chemin_name ) (setq name (substr (setq str (getvar "dwgname")) 1 (- (strlen str) 4))) (setq chemin (getvar "DWGPREFIX")) (setq chemin_name (strcat chemin "//" name)) (command "_-export" "PDF" "T" chemin_name ) ) Le programme lisp est lancé par un script. C'est le seul moyen d'avoir un pdf sans le non du fichier plus la présentation si je souhaite automatiser avec un script. Malheureusement, c'est pas vraiment top. Cela bug si le fichier est dans l'espace objet. Dans un deuxième temps, j'aimerais qu'il tourne en arrière plan … si cela est possible. Peut-être faudrait-il déplacer ce message dans le coin "lisp" ?
-
Bonjour à tous, Ma fille essaye depuis ce matin (hic) d'imprimer en PDF un jeu de feuilles comprenant plusieurs DWG avec plusieurs présentations. Elle y arrive mais j'aimerais que les PDF aient le même nom que le DWG. Par exemple, si elle imprime le fichier 107.DWG, j'ai le fichier 107.pdf Facile de le faire manuellement mais elle n'y arrive pas avec l'outil impression d'un jeu de feuilles. Comme elle a plus de 500 plans à imprimer régulièrement, le faire manuellement n'est pas le 1er choix :) C'est normal ou elle passe à côté de quelque chose ? Merci d'avance Maxime
-
Merci Gilles, cela fonctionne. Le but est de gérer des scripts à partir de fichier Access avec des variables par plan Ex simple: (load "u:/hv/VARIABLE_1.1") ChangeAttribut Bloc_cartouche NAME VARIABLE_1.2 Qsave (load "u:/hv/VARIABLE_2.1") ChangeAttribut Bloc_cartouche NAME VARIABLE_2.2 Qsave Merci beaucoup Gille pour ton aide. Merci aussi à ce site qui existe depuis tellement d'années :) Maxime
-
Bonjour Gile et merci pour ton aide, J'ai essayé la commande SetAttValue Malheureusement, le script ne fonctionne pas. j'ai ajouté c:SetAttValue au lisp J'ai créé le fichier texte de 4 lignes suivant: SetAttValue Nom du bloc nom du tag valeur Normalement, cela doit fonctionné ou je déraille ? I A la maison, cela bug :( PS: merci aussi à Patrick
-
Sans pourvoir retrouver mon malheureux cours de lisp oublié depuis plus de 20 ans, j'ai écris ceci SS0 = nom du bloc SS2 = le tag SS3 = la réponse à inscrire (defun c:mod ( / ss0 ss2 ss3) (setq ss1 (ssget "x" (list (cons 0 "insert") (cons 2 ss0)))) (setq ct 0) (repeat (sslength ss1) (sub1) (princ) ) (defun sub1 () (setq en (ssname ssl ct)) (setq test T) (while test (setq en (entnext en)) (setq ent (entget en)) (if (=(cdr (assoc 0 ent)) "ATTRIB") (progn (if (= (cdr (assoc 2 ent)) ss2) (progn (setq att (cdr (assoc 1 ent))) (setq ent (subst (cons 1 ss3) (assoc 1 ent) ent)) (entmod ent) 'modification de l'entité (entupd en) ) ) (princ) ) (setq test nil) ) ) (setq ct (1+ ct)) ) ) Evidemment, cela bug :blink::) je continue à chercher ...
-
Bonjour, J'avais depuis plus de 20 ans un fichier lsp qui permettait de remplir l'attribut d'un bloc via un script suivant Non du bloc Non du Tag Valeur du tag En pratique, voici le script: (load "u:/hv/changeattribut") chattribut (la commande lsp) carta3_b (le bloc) Nom (le tag) 15001-JOL-H-101 (la valeur) chattribut(la commande lsp) carta3_b(le bloc) date(le tag) 07/07/2016(la valeur) ... Si quelqu'un a déjà ce programme ou une idée pour le réaliser et le partager, j'en serais ravi.
