-
Compteur de contenus
792 -
Inscription
-
Dernière visite
-
Jours gagnés
15
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par vincentp010
-
Stockage, analyse spatiale et transformation de coordonnées
vincentp010 a répondu à un(e) sujet de Olivier Eckmann dans ObjectARX/DBX, C++, .NET, RealDWG
Salut, Cette idée avait déjà germée dans ma tête il y a quelques temps. Pour moi, le plus rapide pour le traitement serait une base de données. Si je met tout dans le même fichier texte, j'ai 9143569 point et 180Mo de fichier, ça fait un peut lourd pour tester toutes les lignes. Après je ne connais pas grand chose en base spatiale, mais on doit pouvoir interroger un point pour savoir s'il est dans un polygone. Il faudrait faire des tests pour voir ce qui serait le plus rapide. -
Salut, c'est (setq HAUT 0)
-
[Résolu] Transformation de chaines en réels et inversement
vincentp010 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, atoi transforme une chaine en entier, donc "63.83" devient 63. Il faut utiliser atof à la place pour conserver les décimales. Et itoa convertit un entier en chaine. Comme nous voulons un nombre à virgule, il faut utiliser rtos et lui dire combien nous voulons de chiffres après la virgule. (setq Zgs (rtos (- (atof Zgs) (atof prf)) 2 2)) -
Insertion d'un bloc sous AutoCAD avec LISP ou PYTHON
vincentp010 a répondu à un(e) sujet de Novice_python dans AutoCAD 2009
Il ne faut pas mettre le nom du dessin dans la commande Dispatch, le dessin doit être ouvert dans autocad avant de lancer le script. La bonne syntaxe est bien celle ci sans modifications accad = win32com.client.Dispatch("AutoCAD.Application") if accad != None: (J'ai mis accad car le forum remplace automatiquement "acad" par "Autocad" à cet endroit :angry: ) Ton bloc doit être définit dans le dessin et le calque doit exister. N’hésite pas si tu as des questions. -
Insertion d'un bloc sous AutoCAD avec LISP ou PYTHON
vincentp010 a répondu à un(e) sujet de Novice_python dans AutoCAD 2009
Voici un exemple d'insertion de bloc en python. Il te faut importer win32com et que ton bloc soit définis dans le dessin Avec win32com tu as accès à l'interface com/ActiveX d'autocad import win32com.client import pythoncom def AcadPoint(pt): """ Take 2D or 3D point (x, y, [z]) and return a variant array of double to deal with autocad com interface """ if len(pt) == 2: pt = Point2D3D(pt) return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, pt) ## type: 8192 + 5 = 8197 def Point2D3D(pt): """ Take a 2D point (x, y) and return a 3D point (x, y, 0) """ return (pt[0],pt[1], 0) acad = win32com.client.Dispatch("AutoCAD.Application") if AutoCAD != None: doc = acad.ActiveDocument ms = doc.ModelSpace pt = AcadPoint((0,0,0)) # RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password]) blk = ms.InsertBlock(pt,"monblock", 1, 1, 1, 0) blk.Layer = "moncalque" -
La 2009 aussi
-
Salut, C'est un peut le bazar pour faire marcher le wms du cadastre dans Autocad. Seule la version wms 1.3.0 est supportée par le serveur, donc ça ne marche pas avec ma version 2009. Et il faut savoir que si tu demandes une image de plus de 1280x1024 pixels le serveur te renvoi une erreur, et tu ne peux pas régler la taille maximale de l'image dans Autocad contrairement à QGis. Bref le wms avec Autocad Map c'est un peut la misère niveau réglages.
-
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
C’était une erreur avec le séparateur de décimal du système (virgule ou point). J'ai mis à jour mon post avec la version 1.1.1 qui devrait résoudre ce problème. -
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
Oui tu créer le fichier, il est chargé automatiquement dans chaque dessin ouvert. -
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
Tu met le lisp dans le chemin de recherche des fichiers de support et dans le fichier C:\Users\User\AppData\Roaming\Autodesk\AutoCAD Map 3D 2009\R17.2\fra\Support\acaddoc.lsp (a changer suivant ta version) tu mets cette ligne (load "ppdf") si le fichier s'appelle ppdf.lsp -
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
Tu prend la version GPL sur cette page Oui, en haut à droite tu as un + pour créer un nouveau profil que tu pourras choisir lors de l'impression en pdf. Dans l'onglet "Actions" tu choisis le fichier .vbs en "Action après l'enregistrement" Dans ce fichier, il faut changer le chemin vers l’exécutable ghostscript et la marge voulue. -
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
Voila ce que j'utilise avec pdfcreator pour avoir des pdf à la bonne taille sans me prendre la tête. Tout d'abord je me suis fait un lisp qui me sort un pdf avec pdfcreator sur du papier de 92x92 en utilisant les paramètres d'impression déjà définis: ;########################################################################### ;# Copyright (C) 07-2014 Vincent PRELAT # ;# This program is free software: you can redistribute it and/or modify # ;# it under the terms of the GNU General Public License as published by # ;# the Free Software Foundation, either version 3 of the License, or # ;# any later version. # ;# This program is distributed in the hope that it will be useful, # ;# but WITHOUT ANY WARRANTY; without even the implied warranty of # ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # ;# GNU General Public License for more details. # ;# You should have received a copy of the GNU General Public License # ;# along with this program. If not, see <http://www.gnu.org/licenses/>. # ;########################################################################### ;Print pdf 92x92 inch ;Use _PAGESETUP configuration (vl-load-com) (defun c:ppdf (/ imprimante papier orient decal style ech al pt) (setvar "cmdecho" 0) (setq imprimante "PDFCreator") (setq orient "") (setq decal "") (setq style "") ; set scale, as by default fit to page (setq al (vla-get-ActiveLayout (vla-get-activedocument (vlax-get-acad-object)))) (vla-getCustomScale al 'numerator 'denominator) (setq ech (strcat (rtos numerator 2) ":" (rtos denominator 2))) (setq papier (vla-get-CanonicalMediaName al)) (if (not (or (= papier "A4") (= papier "A3"))) (progn (setq papier "92x92") (setq orient "_p") ;portrait (setq decal "_c") ;centre ) ) (setq pt (vla-get-PlotType al)) ; 0 "Affichage" ; 1 "Etendu" ; 2 "Limites" ; 3 "Vue" ; 4 "Fenetre" ; 5 "Presentation" (cond ((= pt 0) (if (= (getvar "CTAB") "Model") ; detail present imprimante papier unite orient symetrie display ech decal strace ctb epaisl ombrage fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_d" ech decal "_y" style "" "" "_n" "_n" "_y") ; detail present imprimante papier unite orient symetrie display ech decal strace ctb epaisl echepais ep1er masquerep fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_d" ech decal "_y" style "" "" "" "" "_n" "_n" "_y") ) );_0 ((= pt 1) (if (= (getvar "CTAB") "Model") ; detail present imprimante papier unite orient symetrie extend ech decal strace ctb epaisl ombrage fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_e" ech decal "_y" style "" "" "_n" "_n" "_y") ; detail present imprimante papier unite orient symetrie extend ech decal strace ctb epaisl echepais ep1er masquerep fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_e" ech decal "_y" style "" "" "" "" "_n" "_n" "_y") ) );_1 ((= pt 2) ; detail present imprimante papier unite orient symetrie limits ech decal strace ctb epaisl ombrage fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_l" ech decal "_y" style "" "" "_n" "_n" "_y") );_2 ((= pt 3) (if (= (getvar "CTAB") "Model") ; detail present imprimante papier unite orient symetrie view vname ech decal strace ctb epaisl ombrage fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_v" "" ech decal "_y" style "" "" "_n" "_n" "_y") ; detail present imprimante papier unite orient symetrie view vname ech decal strace ctb epaisl echepais ep1er masquerep fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_v" "" ech decal "_y" style "" "" "" "" "_n" "_n" "_y") ) );_3 ((= pt 4) (if (= (getvar "CTAB") "Model") ; detail present imprimante papier unite orient symetrie fenetre ig sd ech decal strace ctb epaisl ombrage fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_w" "" "" ech decal "_y" style "" "" "_n" "_n" "_y") ; detail present imprimante papier unite orient symetrie fenetre ig sd ech decal strace ctb epaisl echepais ep1er masquerep fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_w" "" "" ech decal "_y" style "" "" "" "" "_n" "_n" "_y") ) );_4 ((= pt 5) ; detail present imprimante papier unite orient symetrie layout ech decal strace ctb epaisl echepais ep1er masquerep fichier enregistrer tracer (command "_-plot" "_y" "" imprimante papier "_m" orient "" "_l" ech "" "_y" style "" "" "" "" "_n" "_n" "_y") );_5 (t nil) );_cond ) Et dans pdfcreator j'ai un profil avec une action automatique après l'enregistrement pour couper le pdf (je viens de le modifier suivant les remarques de didier pour créer un pdf sans CropBox) Il nécessite l'installation de Ghostscript http://pix.toile-libre.org/upload/thumb/1425909784.png ' CropIt.vbs script ' License: GPL ' Version: 1.1.1 ' Date: 10/03/2015 ' Author: Vincent Prelat ' Comments: This script needs ghostscript. ' http://www.ghostscript.com Option Explicit Const AppTitle = "PDFCreator - CropIt" Const PathTogs = "C:\Program Files\gs\gs9.14\bin\gswin32c.exe" ' Marging to add on pdf's HiResBoundingBox (mm) Const marge = 2 Function GetPDFbbox(PathTogs, fname) Dim GetDecimalChar GetDecimalChar = Mid(CStr(CDbl(1/2)), 2, 1) 'MsgBox("Separateur: """ & GetDecimalChar & """") ' Get HiResBoundingBox Dim WshShell, ret, FndHbb, BBox Set WshShell = CreateObject("WScript.Shell") ret = WshShell.Exec(PathTogs & " -dNOPAUSE -dBATCH -sDEVICE=bbox """ & fname & """ ").stderr.readall 'MsgBox(ret) FndHbb = InStr(1, ret, "%%HiResBoundingBox:") BBox = Mid(ret, FndHbb + 20) Dim BBoxArray BBoxArray = Split(BBox, " ", -1, 1) GetPDFbbox = Array(CDbl(replace(BBoxArray(0), ".", GetDecimalChar)), CDbl(replace(BBoxArray(1), ".", GetDecimalChar)), CDbl(replace(BBoxArray(2), ".", GetDecimalChar)), CDbl(replace(BBoxArray(3), ".", GetDecimalChar))) End Function Function AddMarge(BBoxArray, m): '72pt = 1 inch = 25.4 mm Dim i i = m * 72/25.4 AddMarge = Array(BBoxArray(0) - i, BBoxArray(1) - i, BBoxArray(2) + i, BBoxArray(3) + i) End Function ' Set CropBox of a pdf Sub CropPDF(PathTogs, fname, fname2, BBox) Dim GetDecimalChar GetDecimalChar = Mid(CStr(CDbl(1/2)), 2, 1) Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run """" & PathTogs & """" & " -sDEVICE=pdfwrite -o" & " """ & fname2 & """ -c [/CropBox [" & CStr(replace(BBox(0), GetDecimalChar, ".")) & " " & CStr(replace(BBox(1), GetDecimalChar, ".")) & " " & CStr(replace(BBox(2), GetDecimalChar, ".")) & " " & CStr(replace(BBox(3), GetDecimalChar, ".")) & "] /PAGES pdfmark -f """ & fname & """",0 , true End Sub ' Create a new pdf with MediaBox set to CropBox of old pdf Sub Crop2Media(PathTogs, fname, fname2) Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run """" & PathTogs & """" & " -sDEVICE=pdfwrite -dUseCropBox -o" & " """ & fname2 & """ """ & fname & """",0 , true End Sub Dim objArgs, fname, tfname, fso, BBox Set objArgs = WScript.Arguments If objArgs.Count = 0 Then MsgBox "This script needs a parameter!", vbExclamation, AppTitle WScript.Quit End If fname = objArgs(0) Set fso = CreateObject("Scripting.FileSystemObject") If Ucase(fso.GetExtensionName(fname)) <> "PDF" Then MsgBox "This script works only with pdf files!", vbExclamation, AppTitle WScript.Quit End If If Not fso.FileExists(PathTogs) Then MsgBox "You need ghostscript for this script!" & vbcrlf & vbcrlf & _ "Please go to http://www.ghostscript.com and download it.", vbExclamation, AppTitle WScript.Quit End If Dim WshShell Set WshShell = CreateObject("WScript.Shell") tfname = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\" & fso.GetTempName BBox = GetPDFbbox(PathTogs, fname) BBox = AddMarge(BBox, marge) CropPDF PathTogs, fname, tfname, BBox If Not fso.FileExists(tfname) Then MsgBox "There was an error using ""gs""!", vbCritical, AppTitle WScript.Quit End If Crop2Media PathTogs, tfname, fname fso.DeleteFile(tfname) -
Cropper et pivoter des PDF définitivement
vincentp010 a répondu à un(e) sujet de crashray dans AutoCAD trucs et astuces
Après c'est peut être au robot de ne pas prendre en compte seulement la MediaBox et d'utiliser la BoundingBox pour mettre son tampon ! Si tu sort des plans qui n'ont jamais le même format, ça peut devenir très chiants, si. -
Salut, Il y a plus simple pour avoir le dossier temporaire sans créer de fichier vide (setq chem_temp (getenv "temp")) Et ne pas oublier de fermer le fichier ouvert à la fin (close TempReturn)
-
Sélection d'un bloc DWG avec le langage LISP
vincentp010 a répondu à un(e) sujet de Novice_python dans AutoCAD 2011
Oui on peut contrôler Autocad avec Python via l'interface COM. Du coup on a accès aux fonctions vlax- Exemple: #!/usr/bin/python # -*- coding: utf-8 -*- import win32com.client acad = win32com.client.Dispatch("AutoCAD.Application") if AutoCAD != None: doc = acad.ActiveDocument ms = doc.ModelSpace count = ms.Count if count == 0: print "Erreur: Veuillez ouvrir un dessin Autocad" exit(1) plines = [] for item in ms: if 'polyline' in item.ObjectName.lower(): item = win32com.client.CastTo(item, "IAcadPolyline") if '1PARCELLE' == item.Layer: plines.append(item) doc.Utility.Prompt(str(len(plines)) + " polylignes de parcelles\n") -
LAS (mais j'aurais préféré écrire R.A.S !)
vincentp010 a répondu à un(e) sujet de jms dans AutoCAD 2011
Salus, je crois me souvenir qu'il faut faire un las par fenêtre de présentation. Tu te met dans ta fenêtre et tu sauvegarde ton état de calques. Dans ton autre dessin, tu te met dans ta fenêtre et tu importe ton état de calques. Donc si tu as de nombreuses fenêtre de présentation, ça risque d'être long. -
Titre de fenêtre AutoCAD
vincentp010 a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Bonjour, essai avec ChangeTitleForAutoCAD Je n'ai pas testé. -
La cle est GEPFREE
-
C'est normal, c'est à toi d'ajouter la clef de registre pour ajouter le raccourci. Un lien en anglais sur l'ajout de raccourcis dans le menu du clique droit: https://msdn.microsoft.com/fr-fr/library/windows/desktop/cc144101%28v=vs.85%29.aspx
-
C'est dans HKEY_CLASSES_ROOT (voir en bas de la capture d'ecran)
-
Tu installes pstoedit depuis l'installeur fournit sur le site. Dans l'archive que je joins, tu copier pdf2dxf.bat dans C:\Program Files\pstoedit Puis tu exécute le fichier .reg pour créer une entrée dans le registre afin d'avoir la commande en cliquant droit sur un pdf dans l'exploreur. (le numéro de AcroExch.Document.11 peut changer suivant la version d'acrobat reader d'installée) http://pix.toile-libre.org/upload/thumb/1422545167.png pdf2dxf.zip
-
Salut, moi j'utilise pstoedit. Il s'utilise en ligne de commande et j'ai fait un raccourci pour l'utiliser en faisant un clic droit sur un pdf. Création de pdf2dxf.bat: pstoedit -f "dxf:-ctl -mm" %1 > %1.dxf Edition du registre: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\AcroExch.Document.11\shell\Convertir en dxf\command] @="\"C:\\Program Files\\pstoedit\\pdftodxf.bat\" \"%1\"" Pour les textes transformés en polylignes, c'est parce que se sont des hachures dans le pdf et non des textes; il est impossible de les récupérer en texte sans faire de la reconnaissance de caractères.
-
Lisp pour sortir une liste de sommet de polyligne avec quelques infos en plus
vincentp010 a répondu à un(e) sujet de crashray dans Débuter en LISP
Salut, voici un essai en lisp: ; lwpoline to g-code ; ; bulge to angle from : ; http://www.cadtutor.net/forum/showthread.php?43619-Calculate-the-bulge-of-an-arc. (defun c:gcode (/ dimbak ent bulge bulgeprev pt ptprev cen cotbce x1 y1 x2 y2 typ rad nbsom nbsom1 recher f1 gfile l1 l2 l3 l4) (setvar "cmdecho" 0) (setq dimbak (getvar "dimzin")) (setvar "dimzin" 0) (setq f1 (getfiled "Choisissez le fichier gcode a creer" "" "txt" 5)) (if (/= f1 nil) (progn (setq gfile (open f1 "w")) (setq ent 0) (while (/= ent nil) (progn (print) (setq ent (entsel "Pointez la polyligne : ")) (setq ent (car ent)) (if (/= ent nil) (progn (setq typ (cdr (assoc 0 (entget ent)))) (if (= typ "LWPOLYLINE") (progn (setq ent (entget ent)) (setq nbsom (cdr (assoc 90 ent))) (setq nbsom1 1) (setq bulge 0 pt nil) (while (<= nbsom1 nbsom) (setq recher nil) ;recherche les coordonnes du sommet suivant (while (/= recher 10) (setq ent (cdr ent)) (setq recher (caar ent)) ) (setq ptprev pt) (setq pt (cdr (assoc 10 ent))) (setq bulgeprev bulge) (setq bulge (cdr (assoc 42 ent))) (if (= bulgeprev 0) (setq l1 "GO1")) (if (< bulgeprev 0) (setq l1 "GO2")) (if (> bulgeprev 0) (setq l1 "GO3")) (setq l2 (strcat " X" (rtos (car pt) 2 3))) (setq l3 (strcat " Y" (rtos (cadr pt) 2 3))) (if (/= bulgeprev 0) (progn (setq x1 (car ptprev) x2 (car pt)) (setq y1 (cadr ptprev) y2 (cadr pt)) (setq cotbce (/ (- (/ 1.0 bulgeprev) bulgeprev) 2.0)) ; Compute center point and radius (setq cen (list (/ (+ x1 x2 (- (* (- y2 y1) cotbce))) 2.0) (/ (+ y1 y2 (* (- x2 x1) cotbce) ) 2.0)) ) (setq rad (distance cen ptprev)) (setq l4 (strcat " R" (rtos rad 2 3))) ) (setq l4 "") ) (write-line (strcat l1 l2 l3 l4) gfile) ;(print) (setq nbsom1 (+ nbsom1 1)) );_endwhile ));_end if lwpline ));_end if ent (if (/= ent nil) (setq ent 0) (setq ent nil)) ));_end while ent (close gfile) ));_end if f1 (setvar "dimzin" dimbak) ) -
Autodesk force l'utilisation dès que l'on veut télécharger un logiciel chez eux. Par contre je te conseille de le désactiver au démarrage, car il pompe pas mal de ressources. Tu auras juste à le lancer manuellement dès que tu veux télécharger un logiciel autodesk.
-
remplir et valider une page web
vincentp010 a répondu à un(e) sujet de wookichu dans Pour aller plus loin en LISP
Salut, j'ai fait un bout de script en python pour récupérer les infos, qui est encore en développement et très rudimentaire. Pour me connecter, j'utilise cette adresse: https://apex.dgi.minefi.gouv.fr/DACLogin?identifiant=LOGIN&secret=PASSWORD&op=c&url=aHR0cDovL3NwZGMuZGdpLm1pbmVmaS5nb3V2LmZyL2luZGV4LmFzcA== Et pour ensuite avoir les propriétaires: http://spdc.dgi.minefi.gouv.fr/cdc_titulaires.asp?txtOffice=OFFICE&txtCcodep=DEPARTEMENT&txtCcocom=COMMUNE&txtSession=SESSION&txtUtilisateur=LOGIN&txtCcoprf=&txtCcosec=SECTION&txtDnupla=PARCELLE SESSION est à récupérer dans un cookie de la page d’accueil après le login
