Aller au contenu

[RESOLU] - Nom des entités vues de dessin


LElemurien

Messages recommandés

Bonjour,

 

Je suis débutant en LISP et grâce à l'aide de Didier que je remercie j'ai commencé à apprendre quelque base.

 

Toujours grâce à son aide j'ai essayer de faire une routine pour pouvoir sélectionner toutes les entités "cotation" d'un dessin pour pouvoir les mettre dans le calque

 

MD_Annotation. Didier m'a donc fourni cette routine suivante:

 

 

(defun c:FDPlanv (/ jeusel ent defent posent new)

(setq posent 0

newlayer "MD_Annotation"

) ;_ Fin de setq

(setq jeusel (ssget "x" '((0 . "DIMENSION"))))

(repeat (sslength jeusel)

(setq ent (ssname jeusel posent))

(setq defent (entget ent))

(setq calqueactuel (cdr (assoc 8 defent)))

(if (/= newlayer calqueactuel)

(progn

(setq new (subst (cons 8 newlayer) (cons 8 calqueactuel) defent))

(entmod new)

) ;_ Fin de progn

) ;_ Fin de if

(setq posent (1+ posent))

) ;_ Fin de repeat

(princ)

 

Donc cette routine fonctionne parfaitement bien.

 

Maintenant je voulais faire la même chose, donc avec la même structure de routine, mais à la place des entités cotation je voulais le faire avec les entités vues de dessin.

 

Donc je pensais juste changer le nom de l'entité "DIMENSION" par le nom de l'entité vue de dessin, mais le problème c'est que je n'arrive pas à trouver le nom des entités

 

de vue de dessin qu'il faut mettre j'ai essayer avec plusieurs chose sans succès comme par exemple : "DRAWINGVIEW" et "AcDbPlotSettings" et aussi "ACDBVIEWREPBLOCKREFERENCE"

 

Donc ma question est de savoir quelle est le nom des entités vue de dessin qu'il faudrait mettre?

 

J'espère avoir été clair dans mes explications et d'avoir utilisé les bons termes.

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

concernant la fonction ssget, il faut fournir le code dxf qui correspond à ce qu'on cherche. Si on ne le connait pas et qu'on ne trouve pas son bonheur dans la documentation, on peut consulter directement le contenu dxf d'une entité existante en la sélectionnant par un (setq e (car (entsel))). Puis un (entget e) nous donnera tout le contenu dxf de l'entité en question. Il suffira de copier la ou les paires qui sont intéressantes, notamment la paire (0 . "....")

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

concernant la fonction ssget, il faut fournir le code dxf qui correspond à ce qu'on cherche. Si on ne le connait pas et qu'on ne trouve pas son bonheur dans la documentation, on peut consulter directement le contenu dxf d'une entité existante en la sélectionnant par un (setq e (car (entsel))). Puis un (entget e) nous donnera tout le contenu dxf de l'entité en question. Il suffira de copier la ou les paires qui sont intéressantes, notamment la paire (0 . "....")

 

Amicalement

Vincent

 

Merci pour la réponse.

Et c'est bien ce que j'ai essayer de faire pour trouver le nom de l'entité.

Voici le résultat de entget : Mon lien

 

Et le souci c'est que dans la paire pointée je trouve (0 . "DRAWINGVIEW") malheureusement cela ne fonctionne pas.

Comme je suis pas un expert il doit y avoir une chose que je comprends pas.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

As-tu essayé avec des guillemets ?

(0 . "DRAWINGVIEW")

 

Par curiosité, quel AutoCAD utilises-tu ? Je ne connaissais pas ces entités DRAWINGVIEW.

 

Bonjour et merci pour la réponse

 

oui j'ai mis les guillemets (à la place de "DIMENSION" j'ai mis "DRAWINGVIEW"

j'utilise Autocad 2016. Ces entités en fait ce font automatiquement dans la présentation c'est une élévation d'un objet 3D qui est fait avec la fonction VUEBASE.

J'ai l'impression que peu de personne utilise cette fonction qui est pourtant très pratique pour faire des élévations d'un objet 3D, on peut ensuite faire des coupes et vue de détail à partir de cette élévation.

Lien vers le commentaire
Partager sur d’autres sites

D'accord merci.

 

J'ai bien utilisé ces fonctionnalités (issues d'Inventor sur lequel elles existent depuis longtemps), mais je n'avais jamais eu besoin de leur nom DXF.

 

Ceci-dit, ton problème soulève une bizarrerie,(ssget "_X" '((0 . "DRAWINGVIEW"))) entré en ligne commande fonctionne bien, mais ne fonctionne pas quand il est appelé depuis une routine LISP.

De plus, la fonction entmod semble ne pas fonctionner avec ce type d'entité (comme elle ne fonctionne pas avec les entités VIEWPORT).

Je te propose donc une façon différente qui parcourt toutes les entités du dessin avec entnext et qui utilise getpropertyvalue pour changer le calque.

 

(defun c:DWGVIEWLAYER (/ layerId ent)
 (setq layerId (cond ((tblobjname "layer" "MD_Annotation"))
                     ((entmakex '((0 . "LAYER")
                                  (100 . "AcDbSymbolTableRecord")
                                  (100 . "AcDbLayerTableRecord")
                                  (2 . "MD_Annotation")
                                  (70 . 0)
                                 )
                      )
                     )
               )
       ent     (entnext)
 )
 (while ent
   (if (= (cdr (assoc 0 (entget ent))) "DRAWINGVIEW")
     (setpropertyvalue ent "LayerId" layerId)
   )
   (setq ent (entnext ent))
 )
 (princ)
)

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

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Alors qq souvenirs 3D que j espère corrects ?!

- Cette fonctionnalités de générer des vues 2D depuis un modele 3D est apparue avec la version 2012 ?!

- En principe cela ne fonctionne que avec la 3D volumique ?!

- Malheureusement il y a des bugs non corrigés: bug avec les blocs 3D ayant des facteurs d échelle XYZ NON uniformes, bug avec les blocs 3D imbriqués, etc ?!

 

Bye, lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

@ Gile, Merci c'est tout simplement parfait cela fonctionne !

 

@ Lecrabe, je ne sais plus si cela est depuis 2012 ou 2014 mais c'est vrai que ce n'est pas si vieux que cela,

je me souviens qu'avant on utilisait la fonction soldraw et solview me semble-t-il mais qui n'était nettement moins bien adapté.

Et oui cela sert pour des projets dessinés en 3D (en propriété solide 3D pour ma part), ce que j'utilise depuis le début que je travaille sur Autocad (environ 12 ans).

Et oui aussi il est possible d'avoir des bugs avec les blocs 3D mais j'en utilise très peu dans mes projets.

 

Encore merci Gile pour la routine et bonne journée à tous!

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

YES j'ai un peu utilise cette nouvelle fonctionnalite de la 2012 avec la 2012/2013/2014 ...

 

Mais APRES j'ai arrete a cause des bugs lies aux multiples Blocs 3D que j'utilisais pour faire des assemblages 3D !

C etait mon epoque 3D avec des "Legos" ...

 

La 2012 est d'ailleurs la derniere a avoir eu des nouveautes en 3D avec ces Vues de Dessins 3D Solid

La 2012 a aussi apporte le NOUVEAU Reseau Associatif 2D/3D en Trajectoire

et les Reseaux 2D/3D rectangulaires et polaires/circulaires Associatifs ...

 

Pour moi, la 2012 etait une BONNE version et RAPIDE !!!

J'ai plusieurs PCs x64 sous Win 7 Pro avec AutoCAD MAP 2012

et le VIEUX Plugin Google Earth d'Autodesk ...

 

Si Autodesk avait corrige les Bugs et eventuellement etendu cette fonctionnalite aux objets 3D Surfaciques,

cela aurait ete Tip-Top !!

 

Bon Dimanche, Bye, lecrabe

Autodesk Expert Elite Team

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é