Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

Les objets MPOLYGON sont des objets MAP qui réunissent en un seul objet des contours (cercles, polylignes) et des hachures.

 

Quand on les importe dans AutoCAD standard (Vanilla), il deviennent des PROXY_OBJECTS à moins que AcMPolygonObj17.dbx (dans le répertoire d'installation : C:\Program Files\AutoCAD 20XX) soit chargé.

 

On arrive même à créer ce type d'objet dans AutoCAD en LISP avec entmake, c'est un peu fastidieux parceque les données sont semblables à celles des objets hachure.

 

Un exemple :

 

(defun c:makeMPolygon (/ filename)
 (setq filename (strcat "acmpolygonobj" (substr (getvar "ACADVER") 1 2) ".dbx"))
 (or (member filename (arx))
     (arxload filename)
 )
 (entmake '((0 . "MPOLYGON")
     (100 . "AcDbEntity")
     (100 . "AcDbMPolygon")
     (70 . 1)
     (10 0.0 0.0 0.0)
     (210 0.0 0.0 1.0)
     (2 . "ANSI31")
     (71 . 0)
     (91 . 2)
     (92 . 2)
     (73 . 0)
     (72 . 0)
     (93 . 5)
     (10 62.6859 18.6225 0.0)
     (10 120.0 60.2636 0.0)
     (10 177.314 18.6225 0.0)
     (10 155.422 -48.7543 0.0)
     (10 84.5779 -48.7543 0.0)
     (92 . 2)
     (73 . 0)
     (72 . 0)
     (93 . 4)
     (10 20.0 100.0 0.0)
     (10 20.0 -100.0 0.0)
     (10 220.0 -100.0 0.0)
     (10 220.0 100.0 0.0)
     (76 . 1)
     (52 . 0.0)
     (41 . 2.0)
     (77 . 0)
     (78 . 1)
     (53 . 0.785398)
     (43 . 0.0)
     (44 . 0.0)
     (45 . -4.49013)
     (46 . 4.49013)
     (79 . 0)
     (11 0.0 0.0 0.0)
     (99 . 0)
     (450 . 0)
     (451 . 0)
     (460 . 0.0)
     (461 . 0.0)
     (452 . 0)
     (462 . 0.0)
     (453 . 0)
     (470 . "")
    )
 )
 (princ)
)

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

Posté(e)

hello gile

 

C'est un peu comme les polygones AEC dans aa2010 aa2009 aa2008

on peut aussi avoir une epaisseur de ligne definit et rajouter enlever des points

par contre ca prend de la place dans le fichier DWG

 

 

et parti comme tu es gile tu vas trouver un LISP pour rajouter des points ou en enlever au MPOLYGONE

 

suivant votre version autocad il faut changer dans le LISp "acmpolygonobj18.dbx" le passer en "18" pour la version 2010

 

acmpolygonobj17.dbx pour la version 2009 je suppose

 

a+ bon week

 

phil

 

 

[Edité le 12/6/2009 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

suivant votre version autocad il faut changer dans le LISp "acmpolygonobj18.dbx" le passer en "18" pour la version 2010

 

Merci PHILPHIL, c'est un peu ce que je voulais savoir, je vais modifier le code pour qu'il fasse ça automatiquement.

 

et parti comme tu es gile tu vas trouver un LISP pour rajouter des points ou en enlever au MPOLYGONE

Je ne suis pas sûr d'aller beaucoup plus loin en LISP avec les MPOLYGON, les données DXF de ces objets, comme celles des hachures sont un calvaire à manipuler.

 

Par contre avec dotNET ces objets sont plus faciles à manipuler et possèdent des propriétés très intéressantes.

 

À suivre...

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

Posté(e)

Salut,

 

Pour le fun, une commande pour AutoCAD (de base) qui permet de transformer des objets (polylignes, polylignes2d, cercles) en MPOLYGON.

 

EDIT : nouvelle DLL

 

Procédure :

- Télécharger VanillaMPoly.dll

- Charger la DLL dans AutoCAD avec la commande NETLOAD,

- Lancer la commande PL2MPG

- Sélectionner des objets.

- Entrez un nom de motif de hachure (ou un point pour aucun).

 

http://img132.imageshack.us/img132/3578/mpolygon.png

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

Posté(e)

hello

 

a fond dans la programmation ce week end gile ??

 

les *.DLL que tu créer , c'est ca que tu appelles le "dotnet"

 

phil[Edité le 13/6/2009 par PHILPHIL]

 

[Edité le 13/6/2009 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Est-ce qu'il faut recharger cette ".dll" à chaque ouverture de AutoCAD ?

 

Si tu veux t'en servir à chaque fois, oui. Le chargement vaut pour toute la session, comme (vl-load-com). Tu pourrais faire un fichier AutoCAD.lsp dans lequel tu mets :

(command "_netload" "AcadMPolygon.dll ")

 

C'est vraiment un MPolygon MAP ?

Oui, mais sans les données objet (Object Datas).

 

les *.DLL que tu créer , c'est ca que tu appelles le "dotnet"

Pas tout à fait, dotNET est une plateforme de développement basée sur le Framework.NET qui permet l'utilisation de plusieurs langages (C#, VB.net, C++, J#, F#, IronPython...).

Les programmes .NET sont compilés en assemblies qui peuvent être des fichiers .exe ou .dll (uniquement dll en ce qui concerne AutoCAD).

J'en dis un peu plus long ici.

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

Posté(e)

quelles sont les différences fondamentales entre un fichier "acad.lsp" et "acaddoc.lsp" ?

 

Par défaut variable système ACADLSPASDOC à 0), acad.lsp n'est chargé qu'une fois au démarrage d'AutoCAD et acaddoc.lsp à l'ouverture de chaque document. Si ACADLSPASDOC est à 1 AutoCAD.lsp aura le même comportement que acaddoc.lsp.

 

Les fichiers DLL ou ARX chargés au démarrage n'ont pas besoin d'être rechargés à chaque document, on peut donc utiliser le fichier AutoCAD.lsp pour lancer ces chargements.

Ce fichier peut aussi contenir la célèbre expression (vl-load-com) qui, elle non plus, n'a pas besoin d'être relancée à l'ouverture de chaque document.

 

Pour les DLL et ARX, on peut aussi créer une clé dans la base de registre qui provoquera le chargement automatique de ces fichiers.

Pour chaque fichier, il faut créer une nouvelle clé dans :

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.0\ACAD-5001:40C\Applications

 

La fonction LISP ci-dessous : DllAutoLoad s'occupe d'écrire tout ça.

Elle requiert 3 arguments :

- le nom de la nouvelle clé

- une description

- le nom du fichier DLL (ou le chemin complet s'il n'est pas dans les chemins de recherche)

 

Exemple :

(DllAutoLoad "Mpolygon" "Commande PL2MPG pour créer des MPolygons" "AcadMpolygon.dll")

 

    ;;; DllAutoLoad
   ;;; Inscrire une DLL dans la base de registre pour qu'elle se charge automatiquement
   ;;;
   ;;; Arguments
   ;;; key : (string) la clé dans la base de registre
   ;;; descr : (string) description
   ;;; filename : (string) nom ou chemin complet du fichier .dll
    
   ;; (DllAutoLoad "GetFileLisp" "Charger GetFileLisp.dll" "GetFileLisp.dll")
    
   (defun DllAutoLoad (key descr filename / fullname)
     (vl-load-com)
     (if (setq fullname (findfile filename))
       (mapcar
         '(lambda (k v)
            (vl-registry-write
              (strcat "HKEY_CURRENT_USER\\"
                      (vlax-product-key)
                      "\\Applications\\"
                      key
              )
              k
              v
            )
          )
         '("DESCRIPTION" "LOADCTRLS" "LOADER" "MANAGED")
         (list descr 2 fullname 1)
       )
       (princ
         (strcat "\nLe fichier \"" filename "\" est introuvable.")
       )
     )
   )

 

Et qu'est-ce que les Object Datas ?

 

Je ne saurais trop te dire je ne connais pas MAP, lecrabe pourrait certainement t'en dire plus (voir ici).

D'après ce que j'ai compris, ce sont des données liées aux objets Mpolygon un peu comme des Xdatas mais je n'arrive pas à y accéder avec AutoCAD standard.

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

Posté(e)

Bonjour à toutes et tous,

 

 

Salut Gilles,

 

Merci, :D

 

PS: En reprenant tes notes de cours, je me suis rendu compte que j'avais la réponse à la première question,... Désolé de te faire répéter, ... En espérant que cette question puisse servir à d'autres,...

 

J'ai l'impression que cces histoires de fichiers de démarrage ne séduisent pas les foules,...

 

Et pourtant, sacré intérêt,... :P

 

@+,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

J'ai l'impression que cces histoires de fichiers de démarrage ne séduisent pas les foules,...

 

Et pourtant, sacré intérêt,...

 

C'est normal, comme tu as pu le voir, ce n'est pas très simple et ça demande beaucoup de rigueur.

De plus, ça n'a pas beaucoup d'intérêt tant qu'on a pas beaucoup de grosses applications à charger.

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

Posté(e)

Re,

 

De plus, ça n'a pas beaucoup d'intérêt tant qu'on a pas beaucoup de grosses applications à charger.

 

C'est un peu mon cas,

 

Mais j'imagine vite l'intérêt dans une entreprise,....

 

A mon tout petit niveau, je ferai un test au lycée sur quelques routines simple en Topo,...

 

PS: Je pense commencer mon premier lisp par la création de places de parking automatique,...

 

Pas un énorme intérêt si ce n'est de pratiquer le lisp pendant que la formation est encore chaude ,...

 

J'espère m'y mettre à partir de mi-juillet,...

 

Merci encore Gilles,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Salut,

 

Nouvelle version de la DLL, un peu plus évoluée.

Il reste un problème que je n'arrive pas à résoudre l'échelle des hachures est bien prise en compte dans les propriétés du MPolygon mais, à la création, il s'affiche toujours à l'échelle 1.0 :casstet:

 

Il est toujours possible de modifier l'échelle le motif etc. depuis la palette de propriétés

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

Posté(e)

Bonjour à toutes et tous,

 

Salut Gilles,

 

mais, à la création, il s'affiche toujours à l'échelle 1.0

 

comment ça ?

 

http://free0.hiboox.com/images/2509/2fc3d04cb516af3197404586abe15a6e.jpg

 

Pas de pb chez moi,...

 

Ou alors, j'ai pas bien compris,...

 

Sur l'image, j'ai relancé une seconde fois la fonction pour voir si il gardait en mémoire le choix précédent.

 

Vrai pour le motif de hachures et l'échelle,...

 

Beau travail,

 

Merci encore de ce partage, :P

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Salut,

 

Essaye de faire uu MPolygon avec les hachure à l'échelle 1 et un autre avec les hachures à l'échelle 5. Les affichent les hachures à l'échelle 1 alors que dans la fenêtre des propriétés les échelles sont bien 1 et 5.

J'ai le même problème avec l'angle du motif : les propriétés sont prisent en compte mais l'objet ne se met pas à jour...

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

Posté(e)

 

Hello

 

Les Object Data (ou Donnees d'Objet) de MAP sont un peu l'equivalent des XDATAs d'AutoCAD !

 

Avec MAP ou CIVIL, on peut creer N tables de donnes d'Objets avec N champs de type (Integer, Reel Flottant, Caractere et Point)

 

Sur n'importe quel objet graphique AutoCAD (ligne, arc, cercle, polyligne, MPolygon, bloc, point, texte, etc) on peut affecter UNE (ou N mais c rare) table(s) de donnees d'objet et mettre 1 (ou N mais c tres rare) enregistrement(s)

 

MAP et CIVIL sont capables de creer / modifier / consulter et associer/dissocier les tables de donnees d'objet sur les entites graphiques

 

A ma connaissance un AutoCAD simple ne peut rien en faire car il n'a pas le module pour decrypter les donnees d'objet. Eh oui elles sont cryptees !

 

Le Decapode

 

 

Autodesk Expert Elite Team

  • 1 an après...
Posté(e)

Bonsoir,

 

Je me permet de réveiller ce post car j'utilise à la maison ta fonction de conversion, le seul inconvénient c'est que la fonction ne permet pas de faire une conversion de plusieurs polylignes en plusieurs mpolygones.

 

Car quand tu lances la conversion de plusieurs polylignes cela crée un mpolygone unique, un petit choix de traitement serai le bienvenu.

 

Voilà voilà,

 

Merci,

Posté(e)

 

Hello Fab

 

Si tu as un MAP (ou un CIVIL), il faut utiliser la commande :

 

_MPOLYGON : pour Créer un MPolygon manuellement puis Clic-Clic-Clic puis Fermer

ou SINON voir l’option S qui est très intéressante pour convertir N polylignes closes

en UN SEUL MPOLYGON

 

_MAPPOLYLINETOPOLYGON : pour Convertir N Polylignes en N MPolygons

 

Par contre je pense que la fonction de Gilles ne dispose pas de cetet subtilite !?

A verifier ???

 

Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

Salut,

 

La commande PL2MPG fonctionne ainsi parce qu'il est possible de créer un seul Mpolygon à partir de plusieurs polylignes (personnellement, je vois là un intérêt majeur des Mpolygons).

 

Mais il est tout à fait possible d'utiliser cette commande dans un LISP avec la fonction command, les commandes définies en .NET sont en tout point semblables aux commande natives (définies en ObjectARX/C++)

 

Exemple pour faire un Mpolygon par polyligne (hachures ANSI31 à l'échelle 10 et conservation des objets source)

Pour des Mpolygons sans hachures et suppression des objets source, remplacer :

(command "pl2mpg" ent "" "ANSI31" 10.0 "Non")

par :

(command "pl2mpg" ent "" "." "Oui")

 

(defun c:toto (/ n ss ent)
 (if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1))))
   (repeat (setq n (sslength ss))
     (setq ent	(ssname ss (setq n (1- n))))
     (command "pl2mpg" ent "" "ANSI31" 10.0 "Non")
   )
 )
 (princ)
)

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

Posté(e)

Merci Gile pour tes infos,

 

C'est dans le but d'avoir des batiments remplis et uniques dans un fichier cadastre.

 

Y'a plus qu'à copier coller ton bout de code.

 

Bonne soirée

 

Fabrice

 

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é