stephan35 Posté(e) le 15 février 2007 Posté(e) le 15 février 2007 Après mon échec en dbx, j'attaque en vla voilà mon code qui plante (setvar "SDI" 0) (setq vla(vla-open (vla-get-documents (vlax-get-acad-object)) (strcat $rep "\\" (Odcl_Control_GetText Boites_Open_EFIC)))) (vla-zoomextents vla) (vla-close vla) (setvar "SDI" 1) Le serveur ActiveX a renvoyé l'erreur: nom inconnu: ZoomExtents :casstet: Un petit coup de pouce ??? Merci [Edité le 16/2/2007 par stephan35]
(gile) Posté(e) le 15 février 2007 Posté(e) le 15 février 2007 Salut, Je ne suis pas sûr que tu puisse utiliser (vla-ZoomExtents ...) ailleurs que dans le document actif.L'argument à passer à la fonction est l'application soit : (vla-ZoomExtents (vlax-get-acad-object)) et le zoom étendu est fait dans la fenêtre active du document actif, à savoir celui depuis lequel tu lance le LISP. Pour la documentation sur les fonctions vla-*, il faut regarder dans l'Aide aux développeurs > ActiveX and VBA Reference puis choisir la section Events, Methods, Properties ou Objects.Tu peux aussi utiliser la méthode décrite ici Tu peux aussi, après avoir fait :(setq vla (vla-open (vla-get-documents (vlax-get-acad-object)) (strcat $rep "\\" (Odcl_Control_GetText Boites_Open_EFIC)))) Faire :(vlax-dump-object vla T) qui retourne la liste des propriétés et des méthodes applicables à l'objet. [Edité le 15/2/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 16 février 2007 Auteur Posté(e) le 16 février 2007 Faire : (vlax-dump-object vla T) qui retourne la liste des propriétés et des méthodes applicables à l'objet. Bonjour, j'ai comme réponse : Objet vla :#; IAcadDocument: An AutoCAD drawing; Valeurs de propriétés:; Active (RO) = 0; ActiveDimStyle = #; ActiveLayer = #; ActiveLayout = #; ActiveLinetype = #; ActivePViewport = AutoCAD: Aucune fenêtre active dans l'espace papier; ActiveSelectionSet (RO) = #; ActiveSpace = 1; ActiveTextStyle = #; ActiveUCS = AutoCAD: Identificateur d’objet nul; ActiveViewport = #; Application (RO) = #; Blocks (RO) = #; Database (RO) = #; Dictionaries (RO) = #; DimStyles (RO) = #; ElevationModelSpace = 0.0; ElevationPaperSpace = 0.0; FileDependencies (RO) = #; FullName (RO) = "D:\\TR46\\A\\TR46A002.DWG"; Groups (RO) = #; Height = 853; HWND (RO) = 524774; Layers (RO) = #; Layouts (RO) = #; Limits = (0.0 0.0 420.0 297.0); Linetypes (RO) = #; ModelSpace (RO) = #; MSpace = AutoCAD: Mode incorrect; Name (RO) = "TR46A002.DWG"; ObjectSnapMode = 0; PaperSpace (RO) = #; Path (RO) = "D:\\TR46\\A"; PickfirstSelectionSet (RO) = #; Plot (RO) = #; PlotConfigurations (RO) = #; Preferences (RO) = #; ReadOnly (RO) = 0; RegisteredApplications (RO) = #16c4c084>; Saved (RO) = -1; SelectionSets (RO) = #; SummaryInfo (RO) = #; TextStyles (RO) = #; UserCoordinateSystems (RO) = #; Utility (RO) = #; Viewports (RO) = #; Views (RO) = #; Width = 1246; WindowState = 1; WindowTitle (RO) = "D:\\TR46\\A\\TR46A002.DWG"; Méthodes prises en charge:; Activate (); AuditInfo (1); Close (2); CopyObjects (3); EndUndoMark (); Export (3); GetVariable (1); HandleToObject (1); Import (3); LoadShapeFile (1); New (1); ObjectIdToObject (1); Open (2); PurgeAll (); Regen (1); Save (); SaveAs (3); SendCommand (1); SetVariable (2); StartUndoMark (); Wblock (2) Le zoomExtents n'en fait effectivement pas partie !dois-je faire un activate ? pour m'autoriser à faire un sendcommand ? Merci ...
stephan35 Posté(e) le 16 février 2007 Auteur Posté(e) le 16 février 2007 Plus fort ! erreur: Erreur Automation à chaque tentative : (vla-activate vla) (vla-sendcommand vla "_zoom _e") (vla-save vla) Au secours ........ !!!!!!! :casstet: :casstet: :casstet: :casstet: Merci !
Patrick_35 Posté(e) le 16 février 2007 Posté(e) le 16 février 2007 SalutLe zoom ne fonctionne que sur le dessin courant (vla-zoomall (vlax-get-acad-object)) Le problème avec (vla-activate vla), c'est que le lisp ne suit plus :( Un vla-sendcommand est utile pour lancer une commande autocad sur un dessin autre que celui qui est courant et on retrouve le même problème qu'avec le vla-activate Peut-être qu'avec les variables, c'est faisable @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 16 février 2007 Posté(e) le 16 février 2007 Salut, (setq vla (vla-get-activedocument (vlax-get-acad-object))) (vla-sendcommand vla "_zoom _e ") Fonctionne : attention, j'ai été obligé de rajoter un espace après _e. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 16 février 2007 Posté(e) le 16 février 2007 Oui, mais tu restes dans le dessin courant La variable vla vient de (vla-open (vla-get-documents (vlax-get-acad-object)) "Un_dessin.dwg") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 16 février 2007 Auteur Posté(e) le 16 février 2007 Salut, Fonctionne : attention, j'ai été obligé de rajoter un espace après _e. (setvar "SDI" 0) (setq vla(vla-open (vla-get-documents (vlax-get-acad-object)) (strcat $rep "\\" (Odcl_Control_GetText Boites_Open_EFIC)))) (prompt "\nObjet vla :")(print vla) (vlax-dump-object vla T) (prompt "\nSuite ") (vla-sendcommand vla "_zoom _e ") (vla-save vla) (vla-close vla) (setvar "SDI" 1) Salut, ça plante systématiquement ! (avec ou sans save): erreur: Erreur Automation il ne me manquerait pas un arx ? tu peux me donner la liste de tes arx chargé ? Merci bred
stephan35 Posté(e) le 16 février 2007 Auteur Posté(e) le 16 février 2007 Voici l'écran texte de la deuxieme cession : Ouverture d'un fichier au format AutoCAD 2004.Régénération du modèle. AutoCAD Express Tools Copyright © 2002-2004 Autodesk, Inc.La variable SDI ne peut être redéfinie que si un seul dessin est ouvert.; erreur: paramètre de la variable AutoCAD rejeté: "SDI" 1 Voici l'écran texte de la première cession : Suite ; erreur: Erreur Automation On dirait qu'il ignore le vla-sendcommand ! Est-ce que ça fonctionne chez quelq'un ??? :casstet: Merci les gars !
stephan35 Posté(e) le 16 février 2007 Auteur Posté(e) le 16 février 2007 Le moral revient .......... :D Le code : (setvar "SDI" 0) (setq vla(vla-open (vla-get-documents (vlax-get-acad-object)) (strcat $rep "\\" (Odcl_Control_GetText Boites_Open_EFIC)) nil)) (detail vla "vla-open") (setq ms (vla-get-ModelSpace vla)) (detail ms "vla-get-ModelSpace") (setq app (vla-get-application vla)) (detail app "vla-get-application") (vla-zoomall app) ;(vla-saveas vla (strcat $rep "\\" (Odcl_Control_GetText Boites_Open_EFIC)) "acNative") (vla-save vla) (vla-close vla) Bon voilà ce qui se passe :Par défaut il ouvre le dwg en lecture seule ! c'est bête hein ! ;) il faut mettre nil (j'ai trouvé tout seul !) dans vla-openPar contre le vla-saveas provoque un méchant blocage ! Le zoom ne s'applique que sur ma cession de départ ... il faudrait peut-être pouvoir forcer temporairement la cession active , mais comment ? Je continue .... :casstet:
stephan35 Posté(e) le 26 avril 2007 Auteur Posté(e) le 26 avril 2007 Enfin la suite ... Voici mon astuce : Mon lanceur, qui déclenche l'ouverture d'un autre DWG : (setvar "SDI" 0) (vl-load-com) (setcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")) (strcat $drive "SCRIPT\\#Zoom#Save#Export.Lsp")) (setq vla(vla-open (vla-get-documents (vlax-get-acad-object)) (strcat (Odcl_Control_GetCaption Boites_Open_EREP) "\\" (Odcl_Control_GetText Boites_Open_EFIC))nil)) (setq ms (vla-get-ModelSpace vla)) (setq app (vla-get-application vla)) (vla-close vla T) ; T pour ignorer la sauvegarde ? (vlax-release-object vla) (vlax-release-object ms) (vlax-release-object app) (setvar "SDI" 1) Je définie une cle "AppData/BHZ/Config/Lisp/" qui, lorsqu'elle est initialisée déclenchera l'ouverutre d'un lisp dans le chargeur acadxxx.lsp ! ACAD2006DOC.lsp ; Déclenchement de lisp à l'ouverture d'un folio dans ce repertoire (if (or (= nil (getcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")))) (= "" (getcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")))) ) (setcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")) "") (getcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX"))) ) ... ... ... .. ; Lanceur programme lisp à l'ouverture d'un folio (if (/= "" (getcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX"))))(load (getcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX"))))) Mon #Zoom#Save#Export.Lsp (alert "ooooo") ; zoom etendu (command "_zoom" "_e") ; Sauvegarde (command "_qsave") ; Exporte la base de donnée (load (strcat $drive "GESTION_data_exporte.lsp")) ; Reinitialise le lanceur (setcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")) "") A adapter suivant utilisation ....Attention au controle des variables SDI et ACADLSPASDOC qui peuvent poser problèmes... Ouf !
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