Aller au contenu

Erreur Automation Etendus incorrects


LUDWIG

Messages recommandés

Bonjour,

 

J'ai ( parfois) un message d'erreur autocad quand j'utilise GetBoundingBox.

[surligneur] Erreur Automation Etendus incorrects[/surligneur]

 

 

 (setq bloc_prop (tblnext "block" T))
(setq constituant_id (cdr (assoc -2 bloc_prop)))

;je définis les X,Y, et Z mini et maxi de la 1ère entité du bloc
(vla-GetBoundingBox (vlax-ename->vla-object constituant_id) 'mini 'maxi)
(setq maxi (vlax-safearray->list maxi))
(setq mini (vlax-safearray->list mini))
(setq Xmini (car mini))
(setq Ymini (cadr mini))
(setq Zmini (caddr mini))
(setq Xmaxi (car maxi))
(setq Ymaxi (cadr maxi))
(setq Zmaxi (caddr maxi))
 
;si les autres constituants ont un X, Y, Z plus grand ou plus petit que ceux précedement défini, je les enregistre
(while constituant_id
(vla-GetBoundingBox (vlax-ename->vla-object constituant_id) 'mini 'maxi)
(setq maxi (vlax-safearray->list maxi))
(setq mini (vlax-safearray->list mini))
(if (< (car mini) Xmini )(setq Xmini (car mini)))
(if (< (cadr mini) Ymini )(setq Ymini (cadr mini)))
(if (< (caddr mini) Zmini )(setq Zmini (caddr mini)))
(if (> (car maxi) Xmaxi )(setq Xmaxi (car maxi)))
(if (> (cadr maxi) Ymaxi )(setq Ymaxi (cadr maxi)))
(if (> (caddr maxi) Zmaxi )(setq Zmaxi (caddr maxi)))
(setq constituant_id (entnext constituant_id))
)

...

 

Je crois que ça le fait à chaque fois quand un bloc contient un attribut.

Mais ça le fait aussi parfois quand il est composé d'entités "simples".

 

Quelqu'un pourrait-il m'en dire plus ?

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

C'est parce que chaque type d'entité ne possède par forcement un getboundingbox. Par exemple si la première entité du bloc est une ligne, le vla-getboundingbox fonctionne mais n'existe pas en réalité. Il prend les valeurs de startpoint et de endpoint

 

@+

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

donc, il faut que je fasse un filtre. Si l'entité a une GetBounding, alors j'utilise cette méthode, sinon, j'en utilise une autre.

 

- polylignes, arc, cercle : getbounding box

- lignes : startpoint, endpoint

- bloc, attribut : point d'insertion (???)

...

 

[surligneur] Question : quels autres méthodes pour quels objets ?[/surligneur]

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Sur quels objets va marcher vla-GetBoundingBox ?

Sur quels objets ne va pas marcher vla-GetBoundingBox ? Si vla-GetBoundingBox ne fonctionne pas sur ces objets, comment récupérer les points "extrêmes" de ces objets ?

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Je lance VBA (alt+F11)

Je lance l'explorateur d'objets (F2)

Je filtre sur Autocad

Je regarde depuis les classes, les membres dans AutoCAD....

Pour retrouver tes petits, tu ajoutes toujours AutoCAD devant le type d'entité que tu cherches.

Par exemple pour un arc de cercle, c'est dans AcadArc, un bloc dans AcadBlock, dans le dessin dans AcadDocument, etc...

 

@+

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

C'est vrai que cet outil est super, mais tout le monde ne l'a pas. Quand Autodesk nous l'intégrera t-il ou améliora son DCL ? :casstet:

 

Vlisp ou Vba http://www.clicksmilies.com/s0105/spezial/Fool/duel.gif

 

Je pense que c'est selon la fibre de chacun, et je trouve que vlisp est plus adapté quand il s'agit de faire un dévelopement et de manipuler des objets d'Autocad.

 

@+

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

J'en reviens à mon pb de départ. J'essaye de faire un getboundingbox et j'obtiens une erreur quand l'objet n'a pas de getboundingbox (comme une DROITE par exemple).

 

Est-il possible de dire en lisp :

 

"si l'objet n'a pas de getboundingbox alors..."

ou

"si on obtient une Erreur Automation Etendus incorrects alors..."

 

???

Autocad 2021 - Revit 2022 - Windows 10

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é