Aller au contenu

Créer bloc avec attribut X Y et Z


Messages recommandés

Posté(e)

Bonjour,

 

Je cherche une fonction ou lisp permettant de réaliser cette tâche :

 

Pour chaque point d'un semi de points, créer un bloc avec des attributs X, Y et Z correspondant aux coordonnées de ce point.

 

 

Merci.

Posté(e)

Les deux...

 

Fichier de travail, avec déjà des points, sur lequel je dois ajouter d'autres points sous format .txt

Je pensais créer un .scr avec la liste de points .txt puis générer ces points dans le fichier de travail et ensuite...

 

[Edité le 25/1/2011 par gillespj]

Posté(e)

Hello

 

Voici une routine P2B.lsp (Point to Block) qui est un bon point de depart !

 

Il suffit d'extraire de la variable PT les 3 coordonnees X Y Z

pour les injecter dans 3 attributs nommes sans doute : X Y Z

 

Bonne continuation, Le Decapode

 

 

;;; 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)
) 

 

 

 

 

Autodesk Expert Elite Team

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é