Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous, Aujourd'hui j'ai importé une présentation inventor vers autocad. Et dans un souci de respecté les préférences du client au niveau des calques, des styles de cote ou texte, je me dois de faire un peu de ménage.

 

Quand inventor converti une présentation vers autocad, les cotations sont toutes à la même taille, la seule chose qui peut me les différencier c'est l'échelle linéaire qui change lorsque l'échelle de la vue change (100 pour une vue au 100ème, 20 pour une vue au 20ème...)

 

Lorsque que je fais un (entget (car (entsel))) sur une de ces côtes, je ne trouve pas le paramètre (le code DXF) qui me dit que la côte est à l’échelle linéaire 100.

Comment puis je faire pour me faire un jeu de sélection (ssget) avec toutes les côtes qui ont la même échelle linéaire.

 

D'autre part, je souhaite importer des style de côte que j'ai sur d'autres plans. Existe t'il un moyen de les charger avec une commande lisp

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Je ne sais pas ce que c'est que l’échelle linéaire, mais en tous cas repère l'association dxf (entget (car(entsel))) qui te la renseigne (quelque chose comme (n . 100) n pour un nombre) et fais ceci:

(ssget '((n . 100)))

avec le n qui est le même que celui de (n . 100)

Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog

Posté(e)
  Le 19/07/2012 à 08:22, Carboleum a dit :

Je ne sais pas ce que c'est que l’échelle linéaire, mais en tous cas repère l'association dxf (entget (car(entsel))) qui te la renseigne (quelque chose comme (n . 100) n pour un nombre) et fais ceci:

(ssget '((n . 100)))

avec le n qui est le même que celui de (n . 100)

 

Coucou, merci de ta réponse.

 

C'est bien ce que j'ai fait.... mais il n'y a rien qui a comme valeur "100" dans les codes dxf. Du coup je n'arrive pas à faire mon jeu de sélection....

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

coucou

 

si tu mettais un fichier d'exemple en téléchargement

on comprendrait mieux ce que tu demandes.

 

dans ce fichier, mets un nota du style

ça je veux garder, ça je veux filtrer ...

 

change l'extension ou bien mets-le en zip pour le mettre sur le site

on n'a pas le droit de poser des DWG.

amicalement

Posté(e)

Bonjour,

 

Un équivalent en AutoLisp à la ligne de code donné par Bryce

(cdr (assoc 1040 (cdadr (assoc -3 (entget (car (entsel)) '("ACAD"))))))

 

 

Sur ce principe un code à tester qui devrai répondre à ton besoin

;; Sélectionne les cotations en fonction de leur échelle linéaire
(defun c:selCotEchLin (/ eref echlin i ss e)
 (cond ((and (setq eref (car (entsel "\nPointez une cotation en référence pour l'échelle linéaire :")))
             (setq eref (entget eref '("ACAD")))
             (= "DIMENSION" (cdr (assoc 0 eref)))
        )
        (setq echlin (cdr (assoc 1040 (cdadr (assoc -3 eref)))))
        (sssetfirst
          nil
          (repeat (setq i (sslength (setq ss (ssget "X" '((0 . "DIMENSION"))))))
            (if (equal echlin
                       (cdr (assoc 1040 (cdadr (assoc -3 (entget (setq e (ssname ss (setq i (1- i)))) '("ACAD"))))))
                       1.0e-9
                )
              ss
              (ssdel e ss)
            )
          )           
        )
       )
 )
 (princ)
)

A+

Apprendre => Prendre => Rendre

Posté(e)

Merci Bryce c'est exactement ce que je cherchais. Et c'est vrai qu'un peu de V-Lisp, c'est pas mal. C'est pas que ca me fait peur mais c'est que je ne sais pas ou chercher les commandes...

 

Merci à toi aussi VDH-Bruno, si ta commande n'était pas aussi longue j'aurai certainement recopié la tienne mais tu ne m'en voudra pas si je pique la syntaxe de Bryce.

 

En revanche je suis quand même curieux de savoir où tu trouves la correspondance des (assoc 1040) ou (assoc -3).

 

Qu'est ce qu'on trouve dans les Xdata, et comment on les parcoure..?

 

Merci à tous!

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Bonjour Arcasdk,

 

  Citation
En revanche je suis quand même curieux de savoir où tu trouves la correspondance des (assoc 1040) ou (assoc -3).

 

Qu'est ce qu'on trouve dans les Xdata, et comment on les parcoure..?

 

Bien que n’étant pas un grand spécialiste de la question je vais essayer de t’éclairer dans la mesure de mes moyens.

 

 

Les Xdata ou données étendues permettent d’attacher des données à des entités, données utilisée par Autodesk ou des applications spécifiques.

 

Sous AutoCAD on trouve par exemple des Xdata attaché aux fenêtres de l’EP (VIEWPORT) ou aux hachures (HATCH), les données étendues sont accessible avec la fonction entget, elles suivent les données de définitions de l’entité et sont précédées d’un code de groupe -3 et d’un nom d’applications (pour AutoCAD le nom d’application est "ACAD").

 

 

Pour que la fonction entget retourne les données étendues d’une entité, il faut spécifier son nom d’application, syntaxe (entget ename [applist])

 

 

Exemple d’une cotation dont on a modifié le paramètre d’échelle linéaire

  Citation
_$ (entget (car (entsel)) '("ACAD"))

((-1 . <Nom d'entité: 7e7da040>) (0 . "DIMENSION") (330 . <Nom d'entité: 7efadcf8>) (5 . "112BB0")

(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "IB00-cotations") (100 . "AcDbDimension")

(2 . "*D122") (10 35781.1 27894.2 0.0) (11 35473.1 27953.7 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "")

(71 . 5) (72 . 1) (41 . 1.0) (42 . 3080.0) (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(210 0.0 0.0 1.0) (3 . "IB-25-25") (100 . "AcDbAlignedDimension") (13 35165.1 27983.3 0.0)

(14 35781.1 27983.3 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 0.0)

(100 . "AcDbRotatedDimension") (-3 ("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 144) (1040 . 5.0) (1002 . "}"))))

 

Nota une astuce pour retourner les données étendues d’une entité quelques soit le nom d’application remplace "ACAD" par "*" :

(entget (car (entsel)) '("*"))

 

L’argument applist se conforment au motif de filtrage utilisé par la fonction wcmatch.

 

 

Pour ce qui est du code 1040 je te renvoie un peu à la réponse de Carboleum, il suffit de faire varier l’echelle linéaire de ta cotation est de rechercher dans la liste dxf des données étendue, le code dxf qui varie…

 

 

Pour sélectionner des entités en fonction de leur données étendues il suffit de spécifié leur nom d’applications exemple :

;; Sélectionne les cotations ayant des données étendues
(ssget  '((0 . "DIMENSION") (-3 ("ACAD"))))

Ou

;; Sélectionne toutes les entitées ayant des données étendues
(ssget "X" '((-3 ("*"))))

 

 

Pour en savoir plus sur le sujet, il y a le forum qui est très riche sur la question, a voir également les fonctions XDLIST & XDATA des outils Express (il y a je crois une version amélioré par (gile) sur le forum).

 

Il existe également une description des codes donnée dans le Manuel d’utilisation DXF rubrique Données étendues dans les Concepts DXF avancés

http://exchange.autodesk.com/autocadmep/fra/online-help/browse#WS1a9193826455f5ff18cb41610ec0a2e719-7943.htm

 

Et la rubrique Extended Data – xdata que l’on trouve dans l’aide AutoLISP Developer's Guide > Using the AutoLISP Language > Using AutoLISP to Manipulate AutoCAD Objects > Extended Data – xdata.

http://docs.autodesk.com/ACD/2011/ENU/filesALG/WS73099cc142f4875516d84be10ebc87a53f-7a08.htm

 

 

  Citation
… si ta commande n'était pas aussi longue j'aurai certainement recopié la tienne mais tu ne m'en voudra pas si je pique la syntaxe de Bryce.

 

Non pas du tout d’ailleurs je viens de m’apercevoir que ma ligne de code n’était pas si fiable, car il peut y avoir plusieurs code 1040 notamment si la taille des flèches a été modifié, pour bien faire il me semble qu’il faudrait également faire une vérification sur la valeur du code 1070 qui précède…

 

Du coup je comprends mieux maintenant la remarque de Bryce

  Citation
Elle est beaucoup plus facile à récupérer en Visual Lisp avec (vla-get-LinearScaleFactor).

 

 

Cordialement Bruno

Apprendre => Prendre => Rendre

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é