Aller au contenu

Créer une entité complexe avec entmake


Messages recommandés

Posté(e)

Comment utiliser (entmake) pour les entités complexes?

Pour créer une entité complexe avec (entmake), faites appel plusieurs fois de suite à la fonction entmake, par exemple, comme ceci pour créer une polyligne:

 

(defun C:CR_2DP ()

(entmake '((0 . "POLYLINE")(67 . 0) (8 . "PL")(66 . 1)

(10 0.0 0.0 0.0) (70 . 0) (40 . 0.0) (41 . 0.0)

(210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0)

(75 . 0))

)

((entmake '((0 . "VERTEX")(67 . 0) (8 . "PL")

(10 1.0 1.0 0.0) (40 . 0.0) (41 . 0.0)

(42 . 0.0) (70 . 0) (50 . 0.0))

)

((entmake '((0 . "VERTEX")(67 . 0) (8 . "PL")

(10 2.0 2.0 0.0) (40 . 0.0) (41 . 0.0)

(42 . 0.0) (70 . 0) (50 . 0.0))

)

((entmake '((0 . "VERTEX")(67 . 0) (8 . "PL")

(10 3.0 1.0 0.0) (40 . 0.0) (41 . 0.0)

(42 . 0.0) (70 . 0) (50 . 0.0))

)

((entmake '((0 . "SEQEND")(67 . 0) (8 . "PL"))

)

((princ)

)

 

  • 6 ans après...
Posté(e)

Salut,

 

Il y a des parenthèse ouvrante en trop (devant les 4 derniers entmake et le princ)

 

(defun C:CR_2DP ()
 (entmake '((0 . "POLYLINE")
            (67 . 0)
            (8 . "PL")
            (66 . 1)
            (10 0.0 0.0 0.0)
            (70 . 0)
            (40 . 0.0)
            (41 . 0.0)
            (210 0.0 0.0 1.0)
            (71 . 0)
            (72 . 0)
            (73 . 0)
            (74 . 0)
            (75 . 0)
           )
 )
 (entmake '((0 . "VERTEX")
            (67 . 0)
            (8 . "PL")
            (10 1.0 1.0 0.0)
            (40 . 0.0)
            (41 . 0.0)
            (42 . 0.0)
            (70 . 0)
            (50 . 0.0)
           )
 )
 (entmake '((0 . "VERTEX")
            (67 . 0)
            (8 . "PL")
            (10 2.0 2.0 0.0)
            (40 . 0.0)
            (41 . 0.0)
            (42 . 0.0)
            (70 . 0)
            (50 . 0.0)
           )
 )
 (entmake '((0 . "VERTEX")
            (67 . 0)
            (8 . "PL")
            (10 3.0 1.0 0.0)
            (40 . 0.0)
            (41 . 0.0)
            (42 . 0.0)
            (70 . 0)
            (50 . 0.0)
           )
 )
 (entmake '((0 . "SEQEND") (67 . 0) (8 . "PL")))
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

salut

 

en essayant le code, je suis toujours en polyligne et non en entité (propriété de l'objet)

Il y a peut être quelque chose qui m'échappe. Je demande à voir

 

@+

 

Posté(e)

On t'a pas dit ? C'est pour les anciennes polylignes pas pour les LWPOLYLINES !

Les vertex et les Sequend sont un peu dépassés, si on veut. Eventuellement, ce type de code peut t'aider pour les polylignes 3D, par exemple ou pour définir des blocs à "l'ancienne".

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
  • 4 ans après...
Posté(e)

Oula vieux sujet que je vais relancer !

 

Pourquoi ceci fonctionne ?

 

- Instruction:

(entget (tblobjname "ltype" "discontinu"))

 

- Resultat:

((-1 . <Nom d'entité: 7ffffb07f30>) (0 . "LTYPE") (330 . <Nom d'entité: 7ffffb03850>) (5 . "35B") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLinetypeTableRecord") (2 . "DISCONTINU") (70 . 0) (3 . "__ __") (72 . 65) (73 . 2) (40 . 9.6) (49 . 6.4) (74 . 0) (49 . -3.2) (74 . 0))

 

- Modifier pour lisp:

(entmake '((0 . "LTYPE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLinetypeTableRecord")(2 . "DISCONTINU")(70 . 0)(3 . "__ __")(72 . 65)(73 . 2)(40 . 9.6)(49 . 6.4)(74 . 0)(49 . -3.2)(74 . 0)))

 

 

Alors que ceci ne fonctionne pas ?

 

- Instruction:

(entget (tblobjname "ltype" "depose"))

 

- Resultat:

((-1 . <Nom d'entité: 7ffffb05890>) (0 . "LTYPE") (330 . <Nom d'entité: 7ffffb03850>) (5 . "2F1") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLinetypeTableRecord") (2 . "DEPOSE") (70 . 0) (3 . "---x---") (72 . 65) (73 . 3) (40 . 6.4) (49 . 6.0) (74 . 0) (49 . -0.1) (74 . 2) (75 . 0) (340 . <Nom d'entité: 7ffffb05840>) (46 . 3.0) (50 . 0.0) (44 . -0.8) (45 . -1.05) (9 . "x") (49 . -0.3) (74 . 0))

 

- Modifier pour lisp:

(entmake '((0 . "LTYPE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLinetypeTableRecord")(2 . "DEPOSE")(70 . 0)(3 . "---x---")(72 . 65)(73 . 3)(40 . 6.4)(49 . 6.0)(74 . 0)(49 . -0.1)(74 . 2)(75 . 0)(46 . 3.0)(50 . 0.0)(44 . -0.8)(45 . -1.05)(9 . "x")(49 . -0.3)(74 . 0)))

 

Je sais que c'est un type de ligne ayant un objet texte a l'interieur (X en l'occurence)

 

Doit on séparer la création du graphisme et du texte, et ensuite les lier ?

 

J'ai beau écumer les code dxf je trouve pas la solution !!!

 

 

 

PS: C'est bon trouvé, la premiere instruction (74 . 0) juste apres (49 . 6.0), doit etre declarer (74 . 2) contrairement au resultat du "entget"

 

Pour 74 : 2 = L'élément incorporé est une chaîne de caractères

 

- Resultat, Modifier pour lisp:

(entmake '((0 . "LTYPE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLinetypeTableRecord")(2 . "DEPOSE")(70 . 0)(3 . "---x---")(72 . 65)(73 . 3)(40 . 6.4)(49 . 6.0)(74 . 2)(49 . -0.1)(74 . 2)(75 . 0)(46 . 3.0)(50 . 0.0)(44 . -0.8)(45 . -1.05)(9 . "x")(49 . -0.3)(74 . 0)))

Posté(e)

Merci beaucoup document super instructif.

 

Mais je n'arrive pas a comprendre pourquoi "entget" me retourne le (74 . 0), alors que pour creer il faut que ce soit parametré (74 . 2).

 

Je cherche.... ;)

Posté(e)

Ca m'enerve hier soir cela fonctionné et ce matin ca ne marche plus, AAAAAAAAAAAAAAAAAAAAA

 

Voila mon code de base de ma ligne:

*DEPOSE,---x---

A,6,-.1,["x",iso,S=3,R=0.0,X=-.8,Y=-1.05],-.3

Posté(e)

Salut,

 

c'est surprenant car chez moi, le entget retourne bien le code dxf avec sa valeur associée (0,2 ou 4).

 

Peut tu mettre ton fichier a dispo pour regarder ?

PIRO Charles

Developpeur Revit, RV/RA - Formateur Revit

PIRO CIE

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é