Patrick_35 Posté(e) le 23 février 2005 Posté(e) le 23 février 2005 Bonjour à tous.Je n'arrive pas à importer un bloc qui n'existe pas dans les tables mais qui se trouve sur mon disque dans autocad en vlisp sans passer par la commande _insert :casstet: J'arrive bien à pointer sur les blocs par ce biais(vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))Et un (vla-add a (vlax-3d-point '(0.0 0.0 0.0)) "MON_BLOC") me permet bien de créer mon_bloc, mais un (vla-add a (vlax-3d-point '(0.0 0.0 0.0)) "c:/rep1/rep2/MON_BLOC.dwg") ne fonctionne pas :mad: J’ai pensé au début que ça ne créé que le nom et qu’ensuite il fallait lui ajouter les éléments, mais je n’arrive pas à importer un bloc :( Merci d'avance et en espérant avoir été clair @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BIM G CO Posté(e) le 25 février 2005 Posté(e) le 25 février 2005 Je crois qu'il va rester mort! :mad: malgré le nombre de visite personne n'as de solution à apporter.pour l'instant j'exporte mes blocs de première nécéssité en DXF que je met dans un fichier bibliothèque j'ai la syntaxe à mofifier quelque peu (dotted List "(" en "[", "." en ":" et ")" en "]"). mais bon ca fait lourd au delà de la dizaine de bloc. Pourl'instatn pas encore trouvé de solution aussi simple que celle que tu cite. Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Patrick_35 Posté(e) le 25 février 2005 Auteur Posté(e) le 25 février 2005 Merci pour ton aide, mais je garde espoir. Je vois passer certaines personnes qui ont un très bon niveau en autolisp ainsi qu’en visual lisp. Ce qui ne m’empêche pas de continuer à chercher au cas ou…Accéder aux tables d’autocad n’est pas si simple que cela. J’avais déjà fait une manip sur les styles de traits et j’avais trouvé un vla-load dans LineTypes d’ActiveDocument d’AcadObject mais rien sur ce coup là. :casstet: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Serge Posté(e) le 25 février 2005 Posté(e) le 25 février 2005 Patrick_35, Et quel fromage amèreras-tu ? ;;; my-vla-Insert;;; Permet d'insérer un fichier de dessin via les méthodes vla.;;;;;; Compatibilité: AutoCAD 2000 et plus;;;;;; Instructions:;;; 1) Charger ce fichier;;; 2) Taper la commande TEST;;;;;; Par Serge Camiré, CadNovation, 2005/02/25;;; http://www.cadnovation.com/fr;;; ;;; my-vla-Insert;;; Permet d'insérer un fichier;;; Reçoit:;;; blockName: 'STR, le nom du fichier avec chemin complet ou relatif, avec ou sans extension;;; et insensible à la casse.;;; insPt: 'LIST, Point2D ou Poin3D (contenant des entiers ou des réels);;; x, y, z: 'REAL, les échelles non nulles;;; ang: 'REAL, angle en radians(defun my-vla-Insert ( blockName insPt x y z ang / ) (if (and ;; assertion blockName (= (type blockName) 'STR) (/= "*" (substr blockName 1 1)) insPt (= (type insPt) 'LIST) (member (length insPt) '(2 3)) (and (mapcar 'numberp insPt)) (and (mapcar 'numberp (list x y z ang))) (not (member t (mapcar 'zerop (list x y z)))) ) (progn (if (= (length insPt) 2) (setq insPt (reverse (cons 0.0 (reverse insPt))))) (setq insPt (mapcar '* insPt '(1.0 1.0 1.0))) (my-vla-Insert-validated blockName insPt x y z ang) ))) ;;; my-vla-Insert-validated;;; Insère le bloc. Doit obligatoirement être appellé par my-vla-Insert;;; Les paramètres sont les mêmes.(defun my-vla-Insert-validated ( blockName insPt x y z ang / blocksTable definedBlockName found ucBlockName vlathisDrawing vlaCurrentSpace ) (vl-load-com) (setq ucBlockName (strcase blockName)) ; Upper case ;; Nous n'utiliserons pas (tblsearch "block" blockName) (setq vlathisDrawing (vla-get-activedocument (vlax-get-acad-object))) (setq vlaCurrentSpace (if (= acModelSpace (vla-get-ActiveSpace vlathisDrawing)) (vla-get-ModelSpace vlathisDrawing) (vla-get-PaperSpace vlathisDrawing) )) (setq blocksTable (vla-get-blocks vlathisDrawing)) (setq found nil) (vlax-for block blocksTable (setq definedBlockName (strcase (vla-get-name block))) (if (= definedBlockName ucBlockName) (setq found t)) ) (if (not found) (progn (cond ((setq filename (findfile blockName)) nil) ((setq filename (findfile (strcat blockName ".dwg"))) nil) (t (setq filename nil)) ) (if filename (vla-InsertBlock vlaCurrentSpace (PointToVariant insPt) fileName x y z ang)) ) (progn (vla-InsertBlock vlaCurrentSpace (PointToVariant insPt) blockName x y z ang) )) nil) ;;; PointToVariant;;; Conversion de Point2D ou Point3D en variant(defun PointToVariant ( point / arraySpace sArray ) (setq arraySpace (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length point))))) (setq sArray (vlax-safearray-fill arraySpace point)) (vlax-make-variant sArray)) (defun c:test () ; Insérer un des dessins dans le répertoire Sample (my-vla-Insert "sample/colorwh" '(0 0) 1 1 1 0) (princ))(princ "\nTapez TEST pour tester avec le fichier \"Sample/Colorwh.dwg\".")(princ) Serge
Patrick_35 Posté(e) le 25 février 2005 Auteur Posté(e) le 25 février 2005 Eureka.........J'ai trouvé...... Ah, Serge tu viens de me couper l'herbe sous le pied. Bon je vais regarder de plus prés ton lisp et merci beaucoup Voici quand même ce que je cherchais (vl-load-com) (vla-delete (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point '(0.0 0.0 0.0)) (findfile "MON_BLOC.DWG") 1 1 1 0)) ps : je ne fonctionne pas au fromage, mais au cidre, voir du chouchenne ;) Et puisque que tu es de retour parmis nous en ce moment ,je n'ai pas eu de réponse sur ce lien @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Serge Posté(e) le 25 février 2005 Posté(e) le 25 février 2005 Patrick_35, On peux faire comme Astérix et Obélix dans le livre du tour de Gaule (et si Bernard Flavignard vient, il va nous en faire un en vélo). Serge
Patrick_35 Posté(e) le 28 février 2005 Auteur Posté(e) le 28 février 2005 Du moment que ça ne se transforme pas en douze travaux.C’est quand tu veux que tu passes dans ma région, et je me ferai un plaisir de t’indiquer les coins à visiter @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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