Aller au contenu

(command \"_open\" \"c:\\\\test.dwg\")


Messages recommandés

Posté(e)

(command "_open" "c:\\test.dwg")

 

Ce code ne fonctionne que si la variable SDI = 1

Que faire si l'on souhaite ouvrir un dessin en mode SDI = 0 ?

 

Merci.

L56

Posté(e)

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."

Posté(e)

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.

 

 

Posté(e)

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."

Posté(e)

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."

Posté(e)

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]

Posté(e)

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."

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

ça ma planté AutoCAD

:o

J'ai testé sur mon poste et ça fonctionne correctement

Si la variable SDI = 0 et qu'il y a plusieurs dessins d'ouvert, sdi ne pourra pas changer de valeur

Pour 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
(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."

Posté(e)

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.

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é