esbe Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Bonjour à tous J'ai cherché dans le forum sans succés alors je vous le demande Existe t il un lisp ou autre qui pourrait automatiquement me remplacer tous les points en altitude de mon fichier par des cercles de 4 mm ??? Merci d'avance @+
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Bonjour à toutes et tous, Avec " PNT2BLK" si tu fais un cercle de 4 mm et que tu le transformes en bloc ? (defun c:pnt2blk (/ 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) (setq bname (getblock "Nom du bloc a choisir")) ;;;check that the block is defined in the current drawing (if (tblsearch "block" bname) (progn (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname)))) (setq lay (cdr (assoc 8 (entget (ssname ss 0))))) ) ;;;prompt for point selection (princ "\nSelect point objects:") ;;;if point objects were selected (if (setq ss (ssget '((0 . "POINT")))) (progn ;;;walk through point objects (setq len (sslength ss)) (setq ct 0) (while ( ;;;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 "" "" "") (if lay (command "_chprop" (entlast) "" "_Layer" lay "") ) ) ) (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) ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Merci Lili Je vais essayer tout de suite @+
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Rebonjour Ben, j'y arrive pas Commande: PNT2BLK; erreur: no function definition: GETBLOCK j'ai cree un bloc d'un cercle de 4 mm Merci de ton aide
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Re, Effectivement, pour selectionner le bloc, j'utilise la BD de (gile) "GETBLOCK" qui se trouve dans la routine "Dialog". Charge ce lisp et cela devrait fonctionner ! PS : Fonctionnement de "GETBLOCK" => getBlock, retourne le nom du bloc entré, sélectionné à l'écran, dans la liste déroulante ou depuis la boite de dialogue AutoCAD de sélection de fichier (getfiled). Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Rere, Ou alors encore comme ça ? (defun c:pnt2blk (/ 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) ;;;check that the block is defined in the current drawing (if (tblsearch "block" bname) (progn (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bname)))) (setq lay (cdr (assoc 8 (entget (ssname ss 0))))) ) ;;;prompt for point selection (princ "\nSelect point objects:") ;;;if point objects were selected (if (setq ss (ssget '((0 . "POINT")))) (progn ;;;walk through point objects (setq len (sslength ss)) (setq ct 0) (while ( ;;;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 "" "" "") (if lay (command "_chprop" (entlast) "" "_Layer" lay "") ) ) ) (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) ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Hello Voici une version "autonome" sans case de dialogue DCL :) que l'on peut modifier tres facilement pour en faire la version :Cercle to Bloc ! ;;; 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 ( ;;;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)) Le Decapode Autodesk Expert Elite Team
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Bon alors je ne suis vraiment pas douée !!! Ok je selectionne bien le bloc créé mais lorsqu'il me selectionner les objets je selectionne mes points et ...nada...rien commande pnt2blk inconnue l'idée c'est bien de remplacer les point par le bloc cercle ??? :exclam:
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Merci Lecrabe je teste tout de suite @+
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Re, Je viens de retester, pas de pb chez moi ! Extrait ligne de commandes => Commande: PNT2BLKChoix de l'objet:Select point objects:Choix des objets: Spécifiez le coin opposé: 11 trouvé(s)Choix des objets: 1) Tu sélectionnes ton bloc,2) Fenêtre de capture sur les pts en question. l'idée c'est bien de remplacer les point par le bloc cercle ??? C'est plutôt une insertion du bloc sur les pts sélectionnés. Si tu ne veux plus voir les pts supports, changes de format de points ou gèles le calque,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Genial cela fonctionne, mais cela m'a insere mon bloc de cercle, je n'ai plus qu'à explosser tout cela Merci encore à tous les deux M'autorisez vous à le diffuser auprés des utilisareurs Revit qui seront ravis de cet outil ? Bon week end
esbe Posté(e) le 11 octobre 2008 Auteur Posté(e) le 11 octobre 2008 Hello Lilil Je devrai arreter de bosser le WE cela ne me réussit pas Ton programme fonctionne très bien, malgre les messages commandes inconnues !!!J'ai 4 cercles superposés !!!! ils etaient tellement petits sur mon grand terrain que .... Merci encore :)
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Rerere, Genial cela fonctionne Qu'est-ce qui fonctionne ? M'autorisez vous à le diffuser auprés des utilisareurs Revit qui seront ravis de cet outil ? C'est bien l'esprit de ce site, non ? De plus, je ne sais même plus ou j'ai bien pu récupérer ce lisp mais je me rappelle que (gile) m'avait aidé à l'adapter avec sa BD " GETBLOCK ",.. EDIT : Merci esbe, j'ai ma réponse,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Salut, plus simple, sans passer par un bloc. Les cercles sont créés sur le calque courant avec un rayon de 2 unités mais il est facile de modifier la liste "entmake" pour choisir un autre calque ou celui des points d'origine, de modifier le rayon ou de spécifier d'autres propriétés. (defun c:p2c (/ ss n ent) (princ "\nSélectionnez les points à transformer ou validez pour tous: ") (if (or (setq ss (ssget (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) (setq ss (ssget "_X" (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) ) (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n)))) (entmake (list '(0 . "CIRCLE") (assoc 10 (entget ent)) (cons 40 2.0) ; rayon du cercle ) ) (entdel ent) ) (princ "\nAucun point sélectionné.") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 11 octobre 2008 Posté(e) le 11 octobre 2008 Re, Marche impecc et correspond parfaitement à la demande de esbe, Merci (gile), Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
yacobo Posté(e) le 7 janvier 2009 Posté(e) le 7 janvier 2009 slt ts l monde, jai 1 solution trés utile!! dessiner n'import koi 2puis excel vers autocad ( polyline; cercle;bloc;points; ect) il existe une fonction excel pour ça!!! pr + d'iinformation n'isiter pas 2 me contacter!!! c trés serieux: yac_am_azz@hotmail.com 1
lili2006 Posté(e) le 8 janvier 2009 Posté(e) le 8 janvier 2009 Bonjour à toutes et tous, Bienvenue yacobo, Peux-tu développer STP ? Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
yusukens82 Posté(e) le 27 juillet 2021 Posté(e) le 27 juillet 2021 Bonjour, merci pour les LISP c'est exactement ce que je cherchais 😉 Bonne nuit
PhY62 Posté(e) le 15 juin 2022 Posté(e) le 15 juin 2022 Le 11/10/2008 à 16:38, (gile) a dit : Salut, plus simple, sans passer par un bloc. Les cercles sont créés sur le calque courant avec un rayon de 2 unités mais il est facile de modifier la liste "entmake" pour choisir un autre calque ou celui des points d'origine, de modifier le rayon ou de spécifier d'autres propriétés. (defun c:p2c (/ ss n ent) (princ "\nSélectionnez les points à transformer ou [b]: " ) (if (or (setq ss (ssget (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) (setq ss (ssget "_X" (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) ) (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n)))) (entmake (list '(0 . "CIRCLE") (assoc 10 (entget ent)) [surligneur](cons 40 2.0) ; rayon du cercle[/surligneur] ) ) (entdel ent) ) (princ "\nAucun point sélectionné.") ) (princ) ) Salut @(gile), Sur AutoCAD 2023 j'ai ce message : Citation Commande: P2C Sélectionnez les points à transformer ou [b]: Sélectionnez des objets: 1 trouvé(s) Sélectionnez des objets: ; erreur: groupe DXF incorrect: nil Commande: J'ai même changé CIRCLE par CERCLE en vain... Une solution ? 🙂 Merci d'avance ! Utilisateur AutoCAD (intensif) depuis la version 11 sous DOSUtilisateur 3ds Max (occasionnel... dommage) depuis la version 2013 (version Design)
Luna Posté(e) le 15 juin 2022 Posté(e) le 15 juin 2022 (modifié) Coucou, On est bien d'accord que ton code est celui-ci (à la lettre près !) ? (defun c:p2c (/ ss n ent) (princ "\nSélectionnez les points à transformer ou [b]: ") (if (or (setq ss (ssget (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) (setq ss (ssget "_X" (list '(0 . "POINT") (cons 410 (getvar "CTAB"))))) ) (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n)))) (entmake (list '(0 . "CIRCLE") (assoc 10 (entget ent)) (cons 40 2.0) ; rayon du cercle ) ) (entdel ent) ) (princ "\nAucun point sélectionné.") ) (princ) ) La seule partie que tu peux modifier c'est le 2.0 (et uniquement ce nombre !) sur la ligne (cons 40 2.0) ; rayon du cercle correspondant à la longueur du rayon de ton cercle (en nombre d'unités). Bisous, Luna Modifié le 15 juin 2022 par Luna Message pas assez clair...
(gile) Posté(e) le 15 juin 2022 Posté(e) le 15 juin 2022 Ce code est vieux, il date d'une époque où on utilisait des bbcodes pour formater les message. Il en restait dans le code ([surligneur]). Le code est corrigé. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PhY62 Posté(e) le 15 juin 2022 Posté(e) le 15 juin 2022 Merci @gile ! J'ai corrigé et ça fonctionne Et oui @Luna, c'est le bon code 😉 Merci à vous 2 ! Utilisateur AutoCAD (intensif) depuis la version 11 sous DOSUtilisateur 3ds Max (occasionnel... dommage) depuis la version 2013 (version Design)
Luna Posté(e) le 15 juin 2022 Posté(e) le 15 juin 2022 A priori nan c'était pas le bon vu que je me suis contenté de supprimer les [surligneur] du code et c'est tout..... T_T Mais bon c'est pas grave.. Bisous, Luna
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