Aller au contenu

ObjectDBX et les fichiers DXF


piergel

Messages recommandés

Bonjour à tous,

 

J'ai découvert il y peu la programmation ObjectDBX en Visual Lisp (notamment grace à CADxp - merci Patrick_35). J'ai fait quelques essais concluants de manipulation de DWG mais j'ai 3 questions :

 

1 - pas de problème avec les DWG (utilisation de la méthode Open sur l'objet ObjectDBX.AxDbDocument) mais j'ai maintenant besoin de traiter des DXF et la méthode en question semble ne pas fonctionner sur des DXF. J'ai tâtonné avec une méthode Import et sur d'autres objets mais sans succès. Comment ouvrir un fichier DXF en ObjectDBX ?

 

2 - Une question plus générale qui découle de la première : existe-t-il une documentation de référence sur ObjectDBX avec l'ensemble des objets accessibles, leurs méthodes et propriétés (site web, livres...) ? c'est très difficile de trouver de l'info à ce sujet sur internet !

 

3 - Autre question générale : ObjectDBX va-t-il continuer d'être proposé avec les prochaines version d'Autocad ? J'ai cru comprendre qu'il a été à la base de RealDWG depuis le support de l'environnement .net mais il continue à exister en temps que tel.

 

Merci d'avance pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

1) Un fichier dxf est un fichier texte. Donc il faut le traiter en tant que tel et se lancer à fond dans les codes dxf

 

2) Tu n'as pas besoin d'une doc spécifique ObjectDbx car on utilise (à peu de chose près) les mêmes méthodes, les mêmes objets que IAcadApplication

La différence se fait surtout sur la sélection des objets (possible uniquement sur le dessin courant)

 

3) Je ne pense pas que la pérennité d'objectdbx soit remise en cause, mais je ne suis pas dans le secret des dieux.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse,

 

1 - je sais que c'est un fichier texte et je connais bien le format et les codes. Je souhaite l'ouvrir en ObjectDbx car ça se prête très bien aux traitements que j'ai a faire derrière (calculs d'intersections de polylignes, recopie de certaines entités dans le dessin courant...).

2 - C'est justement le "peu de chose près" qui me pose problème, en l'occurence l'ouverture du DXF... Pour mes calculs d'intersections par exemple c'est nickel avec la méthode IntersectWith trouvée dans l'aide "ActiveX et VBA"

 

Ma question reste donc entière : comment ouvrir un fichier DXF en ObjectDbx.

 

Bonne journée

Lien vers le commentaire
Partager sur d’autres sites

Merci Olivier mais je n'arrive pas à implémenter cette méthode :(

 

(defun OuvrirDxfDbx(dxf / dbx)
;
; ouvre un fichier Dxf en ObjectDbx
;
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
	(setq dbx (vlax-create-object "ObjectDBX.AxDbDocument"))
	(setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2))))
)
(vla-dxfin dbx dxf)
dbx
)

 

erreur: no function definition: VLA-DXFIN

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

je n'y connais rien en ObjectDBX, j'ai trouvé sur un bouquin "La bible du développeur Vlisp" datant de 2004 et libre de droit (les versions suivantes sont payantes, 2€70 chez Amazon pour la version ebook de 2011) qui contient le chapitre 13 sur ObjectDBX.

 

A vue de nez la méthode DxfIn ne permet pas d'ouvrir un DXF, mais plutôt de l'insérer (importer) dans un document DWG précédemment ouvert. A essayer.

 

Sinon la conversion du DXF en DWG est surement la meilleure méthode.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Salut

Je vais avoir des milliers de DXF à traiter, j'aurais aimé ne pas avoir à les convertir avant.

Si ce n'est pas possible d'ouvrir un DXF en ObjectDBX, quelqu'un pourrait-il me le confirmer ?

Il me semble que tu as déjà eu ta réponse, patrick_35 est le spécialiste du DBX,

s'il te dit :

 

1) Un fichier dxf est un fichier texte. Donc il faut le traiter en tant que tel et se lancer à fond dans les codes dxf

 

c'est qu'il a du déjà essayer ...

 

je ne vois pas le problème de convertir des millier de dxf en dwg : tu lance ton traitement la nuit, ou sur un poste libre.

 

par contre, si vraiment tu tiens à ne pas passer par cette étape,tu peu ouvrir un dwg vide, utiliser dxfin, faire ton traitement, puis faire dxfout:

ça ne marchera pas s'il y a des xref, ou des maintiens.

 

l'interret de dbx est qu'il est plus rapide, car l'ouverture d'un dessin prend du temps, mais sinon, ne néglige pas la solution "script", très simple, mais effectivement un peu plus lente.

 

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Comme je l'ai dit, je connais très bien le format DXF (j'avais même écrit il y a quelques années un viewer alphanumérique de fichier DXF avec présentation des données en arborescence).

 

La fameuse méthode DxfIn est une piste que je vais creuser et si je n'y arrive pas, je devrai effectivement passer par une phase préliminaire de conversion de mes DXF en DWG. Je ne fais que lire mes fichiers DXF, je ne les modifie pas. Ça simplifie les choses.

 

J'ai bien sur pensé aussi au script mais ça n'est pas très pratique car dans chaque DXF je dois récupérer deux polylignes que je recopie dans le dessin courant qui au final va donc compiler des éléments provenant de chaque DXF.

 

Si je m'en sort avec DxfIn, je posterai un nouveau message avec un petit bout de code.

 

Je viens de m'inscrire sur CADxp et m’aperçois que c'est un forum dynamique et vivant. Je vais essayer d'y apporter ma contribution. Merci a vous tous.

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Tu n'es pas obligé d'utiliser ObjectDbx. Tu peux aussi travailler de cette manière.

C'est plus long et moins propre, mais cela fonctionne avec les dxf et évite les conversions.

(setq doc (vla-open (vla-get-documents (vlax-get-acad-object)) "Mon_fichier.dxf"))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Merci Patrick !

 

En fait j'étais persuadé qu'on ne pouvais pas gérer plusieurs fenêtres dessin en AutoLisp et qu'une session Autolisp était forcément restreinte à une seule fenêtre ! Mais effectivement ça fonctionne très bien. Du coup, je vais me rabattre là dessus car impossible de faire fonctionner la methode DxfIn (pourtant exposée avec un vlax-dump-object), même à partir d'un dessin vierge préalablement chargé.

 

Et si vraiment le temps de traitement est trop long, je reviendrai en ObjectDbx en convertissant au préalable mes DXF en DWG.

 

A +

Lien vers le commentaire
Partager sur d’autres sites

C'est encore moi !

 

Juste après avoir posté mon message précédent j'ai eu une idée : comme DxfIn n'est pas une méthode existant dans le modèle objet Autocad standard, je me suis dit que c'était pour cela que la fonction vla-dxfin ne fonctionnait pas. J'ai donc tenté un vlax-invoke-method et... Ca marche ! Même pas besoin d'ouvrir au préalable un dessin vierge !

 

(defun OuvrirDxfDbx(dxf / dbx)
;
; ouvre un fichier Dxf en ObjectDbx
;
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
	(setq dbx (vlax-create-object "ObjectDBX.AxDbDocument"))
	(setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2))))
)
(vlax-invoke-method dbx 'DxfIn dxf)
dbx
)

 

Merci encore à tous et à bientôt.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

au final, ton obstination a payée ...

et on apprend au passage qu'il est possible d'effectuer certaines opérations (en tout cas, de la consultation) en DBX directement sur des DXF, ce qui peut servir ...

a bientôt,

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

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é