Aller au contenu

vincentp010

Membres
  • Compteur de contenus

    792
  • Inscription

  • Dernière visite

  • Jours gagnés

    15

Tout ce qui a été posté par vincentp010

  1. 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.
  2. Salut, c'est (setq HAUT 0)
  3. 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))
  4. 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.
  5. 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"
  6. La 2009 aussi
  7. vincentp010

    connexion wms

    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.
  8. 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.
  9. Oui tu créer le fichier, il est chargé automatiquement dans chaque dessin ouvert.
  10. 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
  11. 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.
  12. 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)
  13. 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.
  14. 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)
  15. 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")
  16. 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.
  17. Bonjour, essai avec ChangeTitleForAutoCAD Je n'ai pas testé.
  18. La cle est GEPFREE
  19. 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
  20. C'est dans HKEY_CLASSES_ROOT (voir en bas de la capture d'ecran)
  21. 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
  22. 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.
  23. 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) )
  24. vincentp010

    Akamai NetSession

    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.
  25. 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
×
×
  • 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é