LUDWIG Posté(e) le 12 avril 2005 Posté(e) le 12 avril 2005 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
Patrick_35 Posté(e) le 12 avril 2005 Posté(e) le 12 avril 2005 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 12 avril 2005 Auteur Posté(e) le 12 avril 2005 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
Patrick_35 Posté(e) le 12 avril 2005 Posté(e) le 12 avril 2005 [surligneur]Question : quels autres méthodes pour quels objets ?[/surligneur] ???? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 13 avril 2005 Auteur Posté(e) le 13 avril 2005 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
Patrick_35 Posté(e) le 13 avril 2005 Posté(e) le 13 avril 2005 Je lance VBA (alt+F11)Je lance l'explorateur d'objets (F2)Je filtre sur AutocadJe 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 14 avril 2005 Auteur Posté(e) le 14 avril 2005 Ah oui, ça c'est super comme méthode ! Il faudrait que je me lance dans le vba par la même occasion. Merci beaucoup Patrick_35 ! Autocad 2021 - Revit 2022 - Windows 10
Tramber Posté(e) le 14 avril 2005 Posté(e) le 14 avril 2005 Il faudrait que je me lance dans le vba par la même occasion. Mais nan, c'est les propriétés qui sont tout aussi accessibles en VLISP Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 15 avril 2005 Auteur Posté(e) le 15 avril 2005 oui je sais, mais je me dis que ce language et tout son environnement (graphique notamment) sont plus conviviales... Aïe ! Aïe ! Non, je ne suis pas unlâcheur. Aïe. Autocad 2021 - Revit 2022 - Windows 10
Tramber Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Vouais, je sais. Mais j'ai basculé sur Objectdcl. Et toc ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 15 avril 2005 Auteur Posté(e) le 15 avril 2005 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant