Aller au contenu

[Résolu] Points 3d


speedy

Messages recommandés

Bonjour à toutes et tous j'ai reçu un plan avec un semi de points "3d" sans info de la lecture de ce point,je suis à la recherche d'un lisp qui insère un bloc tcpoint et qui inscrive l'altitude du point Z à l'étiquette de l'attribut "alt". je voulais éviter d'exporter les points 3d en texte et ensuite refaire une insertion de bloc avec cette liste. merci de votre aide. Michel a

Lien vers le commentaire
Partager sur d’autres sites

Salut Didier

Je bricole en lisp, voici le code

;Insérer un bloc avec attribut sur les points 3d et affecte l'alti à l'attribut ALT (défini dans le dessin)
(defun c:BlK2PTZ (/ ss ct len e eb bname pt attreqhold echohold nb1 nb ent ptz attAlt)
 
 (setq echohold (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 
 (setq attreqhold (getvar "ATTREQ"))
 (setvar "ATTREQ" 0)
 
 (setq bname (getstring "\nEntrez le nom du bloc: "))
 (if (tblsearch "block" bname)
   (progn
     
     (princ "\nSelectionnez les points:")
     (if (setq ss (ssget '((0 . "POINT"))))
       (progn
         (setq len (sslength ss))
         
         (setq ct 0)
         (while (< ct len)
           
           (setq e (ssname ss ct))
           
           (setq ct (+ ct 1))
           (setq eb (entget e))
           (setq pt (cdr (assoc 10 eb)))
           
           ;;;insertion du bloc
           (command "_insert" bname pt "" "" "")
         )
       )
       (princ "\nPas de points sélectionnés.")
     )
   )
   (princ "\nbloc non défini dans le dessin.")
 )
 
(setq blocs (ssget "x" (list (cons 2 "TCPOINT"))))
 (if (= blocs nil) (exit))
 (setq nb (sslength blocs))
  (setq nb1 0)
  (while (< nb1 nb)
     (setq ent (ssname blocs nb1))
     (setq pt (cdr (assoc 10 (entget ent))))
     (setq ptz (rtos (caddr pt) 2 2))
     (setq attAlt (entget (entnext (entnext ent))))
     (entmod (subst (cons 1 ptz) (assoc 1 attAlt) attAlt))
     (setq nb1 (+ nb1 1))
   )
)
 
 ;;;Restoration des variables
 (setvar "CMDECHO" echohold)
 (setvar "ATTREQ" 0)
 (princ)
)

Ce code que j'ai adapté vient en partie du forum, il fonctionne pour ce besoin là mais..

 

Merci

 

Michel a

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é