Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 20/05/2024 dans toutes les zones

  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é