Aller au contenu

Un simple zoom ? en Vla-open


Messages recommandés

Posté(e)

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]

Posté(e)

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

Posté(e)

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

Posté(e)

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 !

Posté(e)

Salut

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

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

Joseph Joubert, 1754-1824

Posté(e)

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

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

 

Posté(e)

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 !

Posté(e)

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-open

Par 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:

  • 2 mois après...
Posté(e)

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 !

 

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é