l56 Posté(e) le 27 septembre 2007 Posté(e) le 27 septembre 2007 (command "_open" "c:\\test.dwg") Ce code ne fonctionne que si la variable SDI = 1Que faire si l'on souhaite ouvrir un dessin en mode SDI = 0 ? Merci.L56
Matt666 Posté(e) le 27 septembre 2007 Posté(e) le 27 septembre 2007 C'est pas la variable SDI qu'il faut changer, c'est FILEDIA...Que faire si l'on souhaite ouvrir un dessin en mode SDI = 0 ?Il faut enregistrer la variable et la mettre à le 1 le temps d'ouvrir le dessin. Ensuite tu restaures la variable à son état initial...(progn (setq filedia (getvar "filedia")) (setvar "filedia" 0) (command "_open" "c:\\test.dwg") (setvar "filedia" filedia) ) Mais si tu veux rester avec ta variable SDI, remplace tous les filedia par SDI... A bientôt..Matt. PS : J'ai mis un progn au cas où tu essaies cette routine directement. Si tu inclues ce bout de code dans ta routine, pas forcément besoin de progn ;) [Edité le 27/9/2007 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
l56 Posté(e) le 27 septembre 2007 Auteur Posté(e) le 27 septembre 2007 Merci Matt666, mais il y a un probleme: Tu ne peux mettre la variable SDI à 1 que si il n'y a qu'un seul dessin d'ouvert.S'il y en a plusieurs ouverts, je ne peut pas décider, à la place de l'utilisateur, de fermer tous les autres dessins. Il me faudrait une autre solution, peut-etre en VLISP, mais je n'y connais rien.
Matt666 Posté(e) le 27 septembre 2007 Posté(e) le 27 septembre 2007 Attends... Tu veux faire fonctionner le bout de code que tu as donné au début, nan ? C'est pas ça que tu veux ? En fait je me dis que dans ton cas, la variable SDI, on s'en fout !! :) Si tu veux ouvrir ton dessin avec ta commande, il faut d'abord mettre à zéro la variable FILEDIA, qui annule les boîtes de dialogue...Je vois ce que je vois, c'est tout ! Si tu as une bonne raison d'utiliser la varialbe SDI, dis moi ! Chez moi ça fonctionne, j'ai un fichier "test.dwg" à la racine du C, je lance la routine et le plan s'ouvre sans problèmes... En outre, Faut savoir que la var SDI est en lecture seule... Impossible de la modifier !J'attends de tes news pour éclaircir un peu ton problème... A bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
lovecraft Posté(e) le 27 septembre 2007 Posté(e) le 27 septembre 2007 bonjour,Chez moi cela ne fonctionne pas ?Pourquoi Commande: (command "_open" "c:\\test.dwg") Commande inconnue "C:\TEST.DWG". Appuyez sur F1 pour obtenir de l'aide. nil @plus http://www.youtube.com/user/CADMINATOR?feature=mhee
Matt666 Posté(e) le 27 septembre 2007 Posté(e) le 27 septembre 2007 C'est vrai que c'est bizarre... J'ai essayé sur AutoCAD, et ça ne fonctionne pas du tout... j'ai cherché un peu sur le net, il j'ai trouvé ça :(defun OpenDrawing (strBlockName); blkname should include the file type (if (findfile strBlockName) (command "vbastmt" (strcat "AcadApplication.Documents.Open \"" strBlockName "\"")) (princ "\nFile not found: ") ) (princ) ) ex : (openDrawing "c:/test.dwg") Sinon avec un script (setq filename "direct.dwg") (command "_script" "open.scr")De le fichier script open.scr :_open !filename Il faut une entrée à la fin..._open < espace > !filename < espace > Si qqn est au courant de ce pb, ce serait bien urbain ( :P ) de nous en faire part ! [Edité le 27/9/2007 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
l56 Posté(e) le 27 septembre 2007 Auteur Posté(e) le 27 septembre 2007 Merci matt666, OpenDrawing, ça marche bien ! Et maintenant, essaie donc de faire ça(command "_close" "_y") Il refuse de fermer sans sauvegarder. Et c'est excactement ce que je souhaite faire !! Si tu as une petite idée ... a+ [Edité le 27/9/2007 par l56]
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Tente ça peut être... Je suis totalement novice en VBA, donc bon...(command "vbastmt" "ActiveDocument.Save" "vbastmt" "ActiveDocument.Close") A bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
Patrick_35 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 Salut (command "_.open" "c:\\test.dwg")Fonctionne si la variable SDI > 0. Sinon, on peut utiliser (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) "c:\\testdwg")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
l56 Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 Y'a un truc qui cloche ! ça ma planté AutoCAD Merci quand même, Je vais demande dans le forum Visual. a+
Patrick_35 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 ça ma planté AutoCAD :o J'ai testé sur mon poste et ça fonctionne correctementSi la variable SDI = 0 et qu'il y a plusieurs dessins d'ouvert, sdi ne pourra pas changer de valeurPour tester la variale, tu peux faire(vl-catch-all-error-p (vl-catch-all-apply 'setvar (list "sdi" 1))) Je vais demande dans le forum Visual.J'ai donné une réponse visual @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Matt666 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) "c:\\testdwg"))C'est peut-être qu'il manque un point entre test et dwg?? "Chacun compte pour un, et nul ne compte pour plus d'un."
l56 Posté(e) le 28 septembre 2007 Auteur Posté(e) le 28 septembre 2007 Salut Patrick_35 Ma réponse de 13h01 s'adressait à Matt666 pas à toi. je crois que l'on à poster au même moment ou presque. Ce que tu mas donné pour ouvrir un fichier, c'est nickel !Comment tu fait pour fermé ce même fichier avec options de sauvegarde ou non. Merci encore.
Patrick_35 Posté(e) le 28 septembre 2007 Posté(e) le 28 septembre 2007 On ouvre le dessin(setq dessin (vla-open (vla-get-documents (vlax-get-acad-object)) "c:\\test.dwg")) On ferme le dessin(vla-close dessin :vlax-false) ; Ne pas sauvegarder (vla-close dessin :vlax-true) ; sauvegarder (si dbmod <> 0) Pour connaitre la valeur de dbmod dans le dessin test(vlax-variant-value (vla-getvariable dessin "dbmod")) Tu as aussi une autre manière de faire avec Objectdbx @+ 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