Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 20/05/2024 dans Messages

  1. Bonjour, Un petit challenge. Voici une solution qui en traite 13004. On peut ajouter des positions relatives dans la liste aux milieux du code. (vl-load-com) ; txt2z, Eleve un bloc selon le texte situé à une position relative au bloc. ; Le dessin ne doit contenir que les textes et les blocs concernés. (defun c:txt2Z ( / acobj acdc model ltext pt ld ind pos z cpt d pr) (prompt "\n Traitement en cours ...") (setq acobj (vlax-get-acad-object) acdc (vla-get-activedocument acobj) model (vla-get-modelspace acdc) ltext '() cpt 0) ; Création de la liste d'association ltext '((position_relative . z) ...) (vlax-for obj model (if (= (vla-get-ObjectName obj) "AcDbText") (setq pos (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj))) ltext (append ltext (list (cons (strcat (rtos (car pos)) "," (rtos (cadr pos))); Position plus pratique en texte. (vla-get-textstring obj))))); Z ) ) ; Pour chaque bloc on cherche si il a une association avec la liste ltext. (vlax-for obj model (if (= (vla-get-ObjectName obj) "AcDbBlockReference") (progn (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj))) ; Liste des positions observées. ld '((0.5 0.15) (0.501 0.15) (0.5 0.151) (0.501 0.151) (0.499 0.15) (0.5 0.149) (0.499 0.149) (0.497 0.101) (0.496 0.105) ) ind 0 z nil) ; Tant qu'une position ne soit trouvée ou aucune. (while (not z) (setq d (nth ind ld) pr (strcat (rtos (+ (car pt) (car d))) "," (rtos (+ (cadr pt) (cadr d))))) (if (setq z (cdr (assoc pr ltext))) (progn ; Elévation du bloc (vla-put-InsertionPoint obj (vlax-3d-point (list (car pt) (cadr pt) (atof z)))) ; Suppression de la position dans la liste. (vl-remove pr ltext) (setq cpt (1+ cpt)) ) ) (setq ind (1+ ind)) (if (= ind (length ld)) (setq z T)) ) ) ) ) (princ (strcat "\n Nombre de blocs traités -> " (itoa cpt))) ) Taper txt2z attendre un peux ...
    2 points
×
×
  • 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é