Aller au contenu

Remplacer des points par des cercles ....possible ?


esbe

Messages recommandés

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 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

 

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

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Je viens de retester, pas de pb chez moi !

 

Extrait ligne de commandes =>

 

Commande: PNT2BLK

Choix 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 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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

 

:)

Lien vers le commentaire
Partager sur d’autres sites

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 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

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

  • Downvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 12 ans après...
  • 10 mois après...
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 DOS

Utilisateur 3ds Max (occasionnel... dommage) depuis la version 2013 (version Design)

Lien vers le commentaire
Partager sur d’autres sites

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é par Luna
Message pas assez clair...
Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é