Karmelie Posté(e) le 7 décembre 2011 Posté(e) le 7 décembre 2011 Bonjour, J'ai reçu un plan contenant des nuages de points (des milliers). Ils sont heureusement répartis sur des calques différents. Il faudrait que j'assigne chacun des points (élément autocad) à un symbole selon son calque. Par exemple:les points du calque 22 deviennent des conifères (bloc "conifere")Les points du calque 23 deviennent des feuillus (bloc "feuillus") Est-ce possible de transformer des "points Autocad" en blocs". PS: Comment fait-on pour réussir une recherche avec le moteur de recherche.... Pas facile avec uniquement des mots de 4 caractères... :angry: Merci à l'avance,
didier Posté(e) le 7 décembre 2011 Posté(e) le 7 décembre 2011 coucou une solution bidouille (sans lisp) tu extrais tes points dans des fichiers csvque tu ouvres dans Excelpuis tu fais un script d'insertion de blocs. sur le site il existe plein d'exemples de scripts avec Excel amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Karmelie Posté(e) le 7 décembre 2011 Auteur Posté(e) le 7 décembre 2011 Merci Didier Je pensais à quelque chose de plus expéditif...
didier Posté(e) le 7 décembre 2011 Posté(e) le 7 décembre 2011 Coucou bien sûr si tu ne veux pas d'homéopathieil y a la solution en lisp. mais comme je te le disais, je répondais par une bidouille amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
vincentp010 Posté(e) le 7 décembre 2011 Posté(e) le 7 décembre 2011 Un petit code écrit vite fait:a modifier au niveau des nom de calque et de block(defun c:ptoblock () (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vlax-for i Space (if (= (vla-get-ObjectName i) "AcDbPoint") (progn (setq layi (vla-get-layer i)) (setq blkid (cond ((= layi "22") "conifere") ((= layi "23") "feuillus") ((= layi "24") "arbres") (t nil) ) ) (if (/= nil blkid) (vla-put-layer (vla-insertblock Space (vla-get-Coordinates i) blkid 1 ;echx 1 ;echy 1 ;echz 0 ;rot ) layi ) ) ;_if blk )) ;_if pt ) ;_for ) ;_defun Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Karmelie Posté(e) le 7 décembre 2011 Auteur Posté(e) le 7 décembre 2011 Wow! C'est en plein ça! Je m'étais essayée en Lisp mais je n'arrivais même pas à récupérer les coordonnées des points.. Je comprends un peu le principe mais pas plus. Merci
lecrabe Posté(e) le 7 décembre 2011 Posté(e) le 7 décembre 2011 Hello Voici un autre bon vieux programme en Lisp qui dessine un bloc/symbole (deja insere dans le DWG) sur les points graphiques selectionnes ... En commentant et decommentant correctement 2/3 lignes,ce meme programme fait la meme chose sur des cercles J'ai presque le MEME pour dessiner des blocs sur des textes ... Chargement du Lisp par : APPLOAD Commande au clavier : P2B(ou C2B pour la version CERCLE) Le Decapode (lecrabe) ;;; Routine pour dessiner un Bloc sur des cercles / points graphiques ;;; Version 2 corrigee pour ne traiter que des cercles ou des points ;;; Commande: C2B ou P2B ;;; ;;;--------------------------------------------------------------------; ;;; PNT2BLK.LSP - July 2001 - Original Routine ;;; Place a block object in the location of selected point objects. ;;;--------------------------------------------------------------------; ;;; Function: PNT2BLK --> C2B / P2B ;;; function to convert point objects to blocks. ;;; block must be defined in the current drawing ;;; blocks including attdefs will not address the attributes ;;; if the block references attdefs with default or constant values, ;;; these will be populated. ;;;********************************************************************* ;(defun c:c2b (/ ss ct len e eb bname pt attreqhold echohold) (defun c:p2b (/ ss ct len e eb bname pt attreqhold echohold) ;;;get command echo setting and store it (setq echohold (getvar "CMDECHO")) ;;;set command echo off (setvar "CMDECHO" 0) ;;;get attribute request setting and store it (setq attreqhold (getvar "ATTREQ")) ;;;set attribute request off (setvar "ATTREQ" 0) ;;;get name of block to insert (setq bname (getstring "\nBlock name: ")) ;;;check that the block is defined in the current drawing (if (tblsearch "block" bname) (progn ;;;prompt for point selection (princ "\nSelect point objects:") ;;; --- if point OR circle objects were selected --- ;(if (setq ss (ssget '((0 . "CIRCLE")))) (if (setq ss (ssget '((0 . "POINT")))) (progn ;;;walk through point objects (setq len (sslength ss)) (setq ct 0) (while (< ct len) ;;;for each point (setq e (ssname ss ct)) (setq ct (+ ct 1)) (setq eb (entget e)) ;;;get insert point (setq pt (cdr (assoc 10 eb))) ;;;insert block (command "_insert" bname pt "" "" "") ) ) ;(princ "\nNo circle objects selected.") (princ "\nNo point objects selected.") ) ) (princ "\nInvalid, block not defined in drawing.") ) ;;;restore command echo setting to stored value (setvar "CMDECHO" echohold) ;;;restore attribute request setting to stored value (setvar "ATTREQ" 0) (princ) ) Autodesk Expert Elite Team
Karmelie Posté(e) le 7 décembre 2011 Auteur Posté(e) le 7 décembre 2011 Merci Le Decapode (lecrabe) Avec les commentaires je serai en mesure de mieux comprendre ce qui ce passe au lieu de faire "un tout bête copier/coller"
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant