Aller au contenu

convertir MTXT en bloc avec attribut


philsogood

Messages recommandés

hello

j'ai un fichier qui comprend 51 MTXT et je souhaiterai savoir comment faire pour :

- transformer ces textes en bloc avec un attribut (qui aura pour valeur le contenu du MTXT)

comment vous y prendriez vous? dans un monde parfait je souhaiterai que le bloc porte tout le temps le même nom.

Phil

ensemble_tag.dwg

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

Comme le dit JPhil voici le code ressemblant adapté à ton dessin exemple

((lambda ( / js n dxf_ent pt txt)
  (if (not (tblsearch "STYLE" "ROMANS"))
    (entmake
      '(
        (0 . "STYLE")
        (100 . "AcDbSymbolTableRecord")
        (100 . "AcDbTextStyleTableRecord")
        (2 . "ROMANS")
        (70 . 0)
        (40 . 0.0)
        (41 . 0.8)
        (50 . 0.0)
        (71 . 0)
        (42 . 0.0945)
        (3 . "romans.shx")
        (4 . "")
      )
    )
  )
  (if (not (tblsearch "BLOCK" "MTX2BLK"))
    (progn
      (entmake
        '(
          (0 . "BLOCK")
          (100 . "AcDbEntity")
          (8 . "0")
          (2 . "MTX2BLK")
          (70 . 2)
          (4 . "")
          (8 . "0")
          (62 . 0)
          (6 . "ByBlock")
          (370 . -2)
          (10 0.0 0.0 0.0)
        )
      )
      (entmake
        '(
          (0 . "ATTDEF")
          (100 . "AcDbEntity")
          (67 . 0)
          (410 . "Model")
          (8 . "0")
          (62 . 0)
          (6 . "ByBlock")
          (370 . -2)
          (100 . "AcDbText")
          (10 -0.2034 -0.04725 0.0)
          (40 . 0.0945)
          (1 . "")
          (50 . 0.0)
          (41 . 0.8)
          (51 . 0.0)
          (7 . "ROMANS")
          (71 . 0)
          (72 . 1)
          (11 0.0 0.0 0.0)
          (210 0.0 0.0 1.0)
          (100 . "AcDbAttributeDefinition")
          (280 . 0)
          (3 . "Texte vers Attribut")
          (2 . "VALEUR")
          (70 . 0)
          (73 . 0)
          (74 . 2)
          (280 . 1)
        )
      )
      (entmake
        '(
          (0 . "LWPOLYLINE")
          (100 . "AcDbEntity")
          (67 . 0)
          (410 . "Model")
          (8 . "0")
          (62 . 0)
          (6 . "ByBlock")
          (370 . -2)
          (100 . "AcDbPolyline")
          (90 . 4)
          (70 . 1)
          (43 . 0.0)
          (38 . 0.0)
          (39 . 0.0)
          (10 -0.61349 0.100763)
          (40 . 0.0)
          (41 . 0.0)
          (42 . 0.0)
          (91 . 0)
          (10 -0.61349 -0.100763)
          (40 . 0.0)
          (41 . 0.0)
          (42 . 0.0)
          (91 . 0)
          (10 0.624823 -0.100763)
          (40 . 0.0)
          (41 . 0.0)
          (42 . 0.0)
          (91 . 0)
          (10 0.624823 0.100763)
          (40 . 0.0)
          (41 . 0.0)
          (42 . 0.0)
          (91 . 0)
          (210 0.0 0.0 1.0)
        )
      )
      (entmake '((0 . "ENDBLK") (100 . "AcDbEntity") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2)))
    )
  )
  (setq js (ssget "_X" '((0 . "MTEXT") (67 . 0) (410 . "Model") (8 . "Repere"))))
  (cond
    (js
      (repeat (setq n (sslength js))
        (setq
          ent (ssname js (setq n (1- n)))
          dxf_ent (entget ent)
          pt (cdr (assoc 10 dxf_ent))
          txt (cdr (assoc 1 dxf_ent))
        )
        (entmake
          (list
            '(0 . "INSERT")
            '(100 . "AcDbEntity")
            '(67 . 0)
            '(410 . "Model")
            '(8 . "Repere")
            '(100 . "AcDbBlockReference")
            '(66 . 1)
            (cons 2 "MTX2BLK")
            (cons 10 pt)
            '(41 . 1.0)
            '(42 . 1.0)
            '(43 . 1.0)
            '(50 . 0.0)
            '(70 . 0)
            '(71 . 0)
            '(44 . 0.0)
            '(45 . 0.0)
            '(210 0.0 0.0 1.0)
          )
        )
        (entmake
          (list
            '(0 . "ATTRIB")
            '(100 . "AcDbEntity")
            '(67 . 0)
            '(410 . "Model")
            '(8 . "0")
            '(62 . 0)
            '(6 . "ByBlock")
            '(370 . -2)
            '(100 . "AcDbText")
            (cons 10 pt)
            '(40 . 0.0945)
            (cons 1 txt)
            '(50 . 0.0)
            '(41 . 1.0)
            '(51 . 0.0)
            '(7 . "ROMANS")
            '(71 . 0)
            '(72 . 1)
            (cons 11 pt)
            '(210 0.0 0.0 1.0)
            '(100 . "AcDbAttribute")
            '(280 . 0)
            '(2 . "VALEUR")
            '(70 . 0)
            '(73 . 0)
            '(74 . 2)
            '(280 . 1)
          )
        )
        (entmake (list '(0 . "SEQEND") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "Repere")))
        (entdel ent)
      )
    )
  )
  (prin1)
))

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é