bseb67 Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Salut, Dans un dessin j'ai des blocs, avec des attributs, je souhaiterai redéfinir ces blocs en insérant la nouvelle version (à partir d'un fichier). Mais comme j'ai un traitement avant cela et après la maj à faire, et comme le fichier du bloc n'est pas toujours au même endroit, je souhaitais faire en lisp l'équivalent de inserer, mais le problème c'est que j''obtiens pas de boite de dialogue avec (command "inserer"), il attend un message console. J'ai regardé dans les variables *dia* mais cela donne rien.Merci bseb Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Salut,Comme beacoup de commande Autocad, pour ne pas avoir de boite de dialogue, il faut mettre un "-" devant la commande :-inserer Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 salut Bred, C'est l'inverse que je veux, en mode console =>Commande: inserer => affiche une boite de dialogue Mais moi je lance un lisp, à cause du pré-traitement et post-traitement, je dois faire (command "....")mais le "command "inserer") me donne l'équivalent de -inserer ou inserm Je vais voir en passant par un script pour l'insertion. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 Avec un petit script ca marche. dans la fonction lisp j'appel le script qui contient:(vla-sendcommand vlades "inserer ") vlades est un pointeur sur le dessin ouvert initialisé dans ma fonction lispPour rappel:(setq NomDessin (getvar "DWGNAME"))(setq vlades (vla-item (vla-get-documents (vlax-get-acad-object)) NomDessin)) Que le Lisp soit avec toi! bseb Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Tramber Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Non, ca ne changera rien en lisp, le "-" est necessaire en script.Ou alors éventuellement si il y a un chemin à spécifier (à vérifier). (command "inserer" nomdubloc point 1 1 0) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 J'avoue avoir du mal à comprendre :je souhaitais faire en lisp l'équivalent de inserer, mais le problème c'est que j''obtiens pas de boite de dialogue avec (command "inserer"), il attend un message consoleSi tu veux insérer un bloc en lisp sans boite de dialogue, c'est -inserer. je souhaiterai redéfinir ces blocs en insérant la nouvelle versionSi tu veux le mettre à jour, il faut mettre un "=" à la fin du nom du bloc. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Oups, je voulais juste répondre au message de Bred. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 ou vla-insertblock ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Non, ca ne changera rien en lisp, le "-" est necessaire en script.Ah oui, tiens...à force de faire du vlisp on en oublis l'autolisp...désolé !...j'ai vraiment répondu de travers ! :calim: Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 Je dois mal me faire comprendre :casstet: Je veux que la boite de dialogue s'affiche en étant dans le lisp. Pour le script ce n'est pas bon.Car mon lisp continu à s'exécuter lorsque je l'appelle. le code principal est celui-ci: ; sauvegarde des attributs (save_attrib) ; on insère la nouvelle version du bloc ; et c'est là mon problème: (command "inserer") ne lance pas la boite de dialogue ; et si je lance le script ici, il fait le attsync et load_attrib avant que j'insère le bloc ; et ce n'est pas ce que je veux :( :( :( :( ; on synchronise les attibuts (command "attsync" "" (entlast) "oui" ) ; on lance la chargement des attributs (load_attrib) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 Pu... de truc, ca ma bouffé le texte. Je veux en lisp ouvrir la boite de dialogue de "inserer", mon lisp se résume à cela: ; sauvegarde des attributs(save_attrib) ;insertion de la nouvelle version du bloc; c'est là que je cherche: (command "inserer") n'ouvre pas la boite de dialogue; et si je lance le script qui le fait, mon lisp exécute le attsync et load_attrib avant ;même que j'insère le nouvelle version du bloc ;synchro des attributs(command "attsync" "" (entlast) "oui" ) ;rechargement des attributs(load_attrib) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 c'est là que je cherche: (command "inserer") n'ouvre pas la boite de dialogueJe ne vois pas ce que tu veus faire avec la boite de dialogue que tu ne peux faire (si tu veux en automatique) avec la console....ou fait des pauses .... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 La boite de dialogue c'est pour chercher le fichier contenant le bloc. Comme mon lisp doit être exécutable sur n'importe quel dessin, avec n'importe quelle mise à jour de bloc. Je te remercie pour le temps d'aide. Sinon, j'ai une autre question, ca t'es déjà arrivé qu'autocad se ferme "tout seul", càd je lance autocad (2007) quelque soit la touche que je frappe ou le raccourci dans le menu que je clic avec la souris, autocad se ferme. Deux collègues ont déjà eu se problème, à part une réinstallation, j'ai rien trouvé. Le pire c'est que l'on ne sait pas d'où cela vient. car on a rien fait entre le moment où ca marchait et celui où ca marchai plus (a part dessiner) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bonuscad Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Utilises (getfiled) Ex:(setq blk (getfiled "Sélection d'un bloc externe" "" "dwg" 2))(command "_.-insert" blk "_none" '(0.0 0.0 0.0) 1.0 1.0 0.0) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Bred Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 La boite de dialogue c'est pour chercher le fichier contenant le bloc.J'ai l'impression qu'il y a un quiprocos : en fait tu ne veux pas inserer un bloc à partir d'une ibliothèque, tu veux aller chercher un bloc contenus dans un plan : ça, tu peux le faire avec le design-center...et ce n'est pas possible (que je sache) en passant par "inserer", sauf si tu n'as pas de bibliothèque, que tu veux inserer un fichier contenant ce bloc afin qu'il soit dans la collection du nouveau, effacer le fichier précédemet inserer, et inserer le bloc ... c'est tordus.... Pour ton problème de fermeture, ça ne m'est jamais arrivé.As-tu le SP2 ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bseb67 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 Je viens de résoudre mon premier problème, il faut bien que je passe par un script, saufque j'ai du coupée en deux ma fonction principale main en main et main1 et mettre dans le script ceci: (vla-sendcommand vlades "inserer (main1) ") :exclam: Oui, on a bien sp2 d'installé. Depuis 1 mois, chaque semaine il y a un autre bug chez quelqu'un dans la boite. Fermeture à cause d'un problème de licence, celle citée avant, problème de police qui font planté autocad,... A ce demandé si un truc pourri circule est flingue les autocad pour que l'on passe à la 2008 :casstet: Merci encore. Et je sais que par écris c'est pas tjs facile de se faire comprendre. bseb Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
(gile) Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Salut, pour forcer l'affichage des boites de dialogue avec les commandes : _ATTDEF, _ATTEXT, _BHATCH, _BLOCK, _COLOR, _IMAGE, _IMAGEADJUST, _INSERT, _LAYER, _LINETYPE, _MTEXT, _PLOT, _RENAME, _STYLE, _TOOLBAR, et _VIEW, il faut faire (initdia) juste avant le (command "_.insert") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bseb67 Posté(e) le 31 mai 2007 Auteur Posté(e) le 31 mai 2007 Merci gile pour l'info, je ne connaissais pas (initdia), mais ca marche. Cela ouvre bien la boite dialogue "insérer". Bonuscad, j'ai essayé ton (getfiled...), cette astuce serai mieux si la définition du bloc serai mis à jour. Son avantage par rapport à insérer, c'est que lisp fonctionne à 100%:Pour (command "inserer"), si on coche une des saisie à l'écran (position d'insertion, échelle ou rotation), la console autocad attend les saisies, pour l'instant ca va, mais le souci c'est que le lisp continue directement est balance alors la suite du code dans la console :( . Le (getfiled..) permet d'insérer par défaut à un point donné (au pire un dcl de saisie de coordonnées peut être fait), il suffit d'activer la boite de dialogue des attributs et le tour est joué. Maintenant il faudrai juste qu'autocad sache que je charge un fichier avec une nouvelle version du bloc. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Tramber Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Maintenant il faudrai juste qu'autocad sache que je charge un fichier avec une nouvelle version du bloc. TBLSEARCH ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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