benoitlacroix Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 bonjour à tous tout est dans le titre.je cherche un petit programme qui m'aiderai à délier tout les fichier Xref et autre image que le plan chercherai à intégrer.Car je vais avoir une série importante de plan à purger et je ne voudrait pas y passer ma semaine .Je vous remercie par avance. @+ Le trlalala du nain - Moi c'que j'aime dans les cavernes - C'est qu'on peut allez piocher. - on peut extraire du minerais - Et des pierres pour les tailler
Tramber Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 Lance donc un Command avec "OUVRPARTIEL" ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
benoitlacroix Posté(e) le 18 septembre 2012 Auteur Posté(e) le 18 septembre 2012 merci pour ta réponse rapide par contre, deux chose: -1 - Y a t il la même chose en version LT? -2 - existe t il quelque chose de semblable mais pour "délier" plusieurs fichier en même temps? @+ Le trlalala du nain - Moi c'que j'aime dans les cavernes - C'est qu'on peut allez piocher. - on peut extraire du minerais - Et des pierres pour les tailler
Patrick_35 Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 Salut Avec celui-ci par exempleJ'ai aussi inclus pour ceux que cela peut intéresserUne sélection multiple de fichiersUne ouverture via ObjectDbx maintenant compatible A2013 (defun c:unx(/ Ouvrir_dessin_dbx GetMultFiles enlever_xref lst) (defun Ouvrir_dessin_dbx(dwg / dbx doc lan rel DLLRegister ProgID->ClassID DBX-Register Get-ObjectDBX) ; Calls REGSVR32 to Register a DLL silently (defun DLLRegister (dll) (startapp "regsvr32.exe" (strcat "/s \"" dll "\""))) ; Returns the ProgID for a given ClassID if found in registry (defun ProgID->ClassID (ProgID) (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))) ; Try to Register ObjectDBX if not done so already ; Returns the Class Name if already registered / sucessfully registered ; Else returns nil if failure (defun DBX-Register (classname filename / server acver) (cond ((not (and classname filename)) (DBX-Register (strcat "ObjectDBX.AxDbDocument." (itoa (setq acver (atoi (getvar 'ACadVer))))) (strcat "AxDb" (itoa acver) ".dll") ) ) ((ProgID->ClassID classname) classname) ((setq server (findfile filename)) (cond ((and (DLLRegister server) (ProgID->ClassID classname)) classname) (t nil) ) ) (t (DBX-Register "ObjectDBX.AxDbDocument" "AxDb.dll")) ) ) ; Try to reference ObjectDBX - returns the ActiveX object if sucessful ; Else returns nil if failure (defun Get-ObjectDBX (/ classname) (if (setq classname (DBX-Register nil nil)) (vla-getinterfaceobject (vlax-get-acad-object) classname) ) ) (and (setq dwg (findfile dwg)) (progn (vlax-for doc (vla-get-documents (vlax-get-acad-object)) (and (eq (strcase (vla-get-fullname doc)) (strcase dwg)) (setq dbx doc lan T) ) ) (and (not dbx) (setq dbx (Get-ObjectDBX)) (vla-open dbx dwg) ) ) ) (list dbx lan) ) (defun GetMultFiles (strTitle strFilter strInitDir / Maxfiles Flags WinDlg mFiles Catchit lst) (vl-load-com) (or (eq (vl-registry-read "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905") "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj") (vl-registry-write "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905" "" "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj") ) (if (setq WinDlg (vlax-create-object "MSComDlg.CommonDialog")) (progn (setq Maxfiles 32767 Flags (+ 4 512 524288 1048576 1024) ) (vlax-put-property WinDlg 'CancelError :vlax-false) (vlax-put-property WinDlg 'MaxFileSize Maxfiles) (vlax-put-property WinDlg 'Flags Flags) (vlax-put-property WinDlg 'DialogTitle strTitle) (vlax-put-property WinDlg 'Filter strFilter) (vlax-put-property WinDlg 'InitDir strInitDir) (setq Catchit (vl-catch-all-apply '(lambda () (vlax-invoke-method WinDlg 'ShowOpen) (setq mFiles (vlax-get WinDlg 'Filename)) ) ) ) (vlax-release-object WinDlg) (if (vl-catch-all-error-p Catchit) nil (progn (while (setq pos (vl-string-position (ascii "\000") mFiles)) (setq lst (cons (substr mFiles 1 pos) lst) mFiles (substr mFiles (+ pos 2)) ) ) (reverse (cons mFiles lst)) ) ) ) (progn (princ "\nErreur: Le pilote Comdlg.OCX du système d'exploitation n'est pas installé.") nil ) ) ) (defun enlever_xref(dessin / dbx ent esp lck) (princ (strcat "\n Travail sur " dessin))(princ) (and (car (setq dbx (Ouvrir_dessin_dbx dessin))) (progn (vlax-for esp (vla-get-blocks (car dbx)) (vlax-for ent esp (and (eq (vla-get-objectname ent) "AcDbBlockReference") (vlax-property-available-p ent 'path) (progn (setq lay (vla-item (vla-get-layers (car dbx)) (vla-get-layer ent))) (and (eq (setq lck (vla-get-lock lay)) :vlax-true) (vla-put-lock lay :vlax-false) ) (vla-delete ent) (and (setq lck :vlax-true) (vla-put-lock lay :vlax-true) ) ) ) ) ) (vla-saveas (car dbx) dessin) (or (cadr dbx) (vlax-release-object (car dbx))) ) ) ) (and (setq lst (GetMultFiles "Sélectionnez les dessins à traiter" "Dessin AutoCAD (*.dwg)|*.dwg|Fichier d’échange AutoCAD (*.dxf)|*.dxf|Tout (*.*)|*.*" (getvar "dwgprefix"))) (mapcar '(lambda(x) (enlever_xref (strcat (car lst) "\\" x))) (cdr lst)) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 -1 - Y a t il la même chose en version LT? A toi de voir. 2 - existe t il quelque chose de semblable mais pour "délier" plusieurs fichier en même temps Faut faire en script. Pour le lisp, l'instruction que je t'ai donné (il y a quelques remarques au sujet des scripts sur cette fontion dans l'aide, dont je ne doute pas que l'aies justement visitée) semble facile et celle de Patrick_35 qui a l'air adapté pour plusieurs fichiers.... On ne sait pas comment tu veux coder.... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
alala Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 Juste au passage, je ne l'ai pas sous la mains mais TrueView ne serait pas faire cela? (et en plus il purge) Sinon pour le coup un script tel quel :-xref T * -IMAGE D * fonctionnera à la perfection dans un automatiseur de script tel que scripteur ou superautoscript. Voila, c'est pas du lisp mais ça devrait fonctionner(et sous LT également si je ne me trompe pas). C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Tramber Posté(e) le 18 septembre 2012 Posté(e) le 18 septembre 2012 C'est une suggestion... mais ca devient un non-sens de tout charger pour décharger.Encore une fois je conseille l'ouverture partielle... ou TrueView s'il le fait, évidemment. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
GEGEMATIC Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 Salut Avec celui-ci par exempleJ'ai aussi inclus pour ceux que cela peut intéresserUne sélection multiple de fichiersUne ouverture via ObjectDbx maintenant compatible A2013 Salut Patrick,J'utilise depuis des années ta technique d'ouverture des dessin via ObjectDbx,et c'est vraiment pratique pour faire des tas de traitement silencieusement ... J'ai beaucoup bossé sur les mystères des xref, et notamment sur le fait qu'il n'y a rien pour changer le type, attacher ou niveau :Le lisp est la seule manière d'y arriver, il n'y a ni méthode ni propriété en com et .netIl me reste à adapter le code ci dessous à ObjectDbx, car les xref attachées sont la pire idée qu'Autodesk ai eu: L'ouverture de dessins avec des xref croisées peut prendre des plombes, et on ne maitrise plus la hiérarchie de la résolution des xrefs. **************************************************************************** ;;§/xref/change l'occurence de block en xref de type overlay /eInsert-oInsert (defun c:MakeXrefOverlay ( / nom blocks ) (setq eblockref (enam)) (setq oblock (pw_retoBlock eblockref)) (if (= :vlax-true (vla-get-isxref oblock)) (progn (setq eblock (pw_to_ename oblock)) (setq egBlock (entget eblock)) (setq Flags (cdr (assoc 70 egBlock))) (if (= (boole 1 Flags 8) 8) ; that means that this block in an overlay xref (prompt "\nAllready Overlay xref") (progn (setq flags (+ 8 flags)) (pw_entmodifi eblock 70 flags) (prompt "\nChanged to Overlay xref") ) ) ) (prompt "\nNot an xref") ) ) ; **************************************************************************** ;;§/xref/retourne le eblockdef si le bloc est une xref/ebloc (defun pw_IsXref ( ebloc / nom bdef flags) (setq nom (vla-get-EffectiveName (pw_to_object ebloc))) (setq bdef (tblsearch "block" nom)) (setq Flags (cdr (assoc 70 bdef))) (if (member 4 (pw_l_flag flags)) bdef nil ) ) ; **************************************************************************** ;;§/xref/retourne le oblock de l'occurence de block /eInsert-oInsert (defun pw_retoBlock ( ebloc / nom blocks ) (setq nom (vla-get-EffectiveName (pw_to_object ebloc))) (setq blocks (vla-get-blocks pw-acaddocument)) (vla-item blocks nom) ) ; ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
GEGEMATIC Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 Lance donc un Command avec "OUVRPARTIEL" !Salut,cette commande me reste obscure depuis des annéesSi tu peux nous éclairer sur son fonctionnement ?Pourquoi elle se fout de filledia ou cmddia ?comment je fais pour avoir accès à la Boîte de dialogue Ouverture partielle ? ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
Tramber Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 OUVRPARTIEL et -OUVRPARTIEL (a priori ce sont les mêmes qui sont enregistrées, je viens de tester) sont des commandes en ligne. On sait bien que pour la version normale, on fait un "OUVRIR" normal B) , les variables que tu évoques entrant alors en jeu. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
GEGEMATIC Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 ben je ne comprend pas pourquoi,et quand je fais ouvrir partiel depuis le dialogue ouvrir,conformément à l'aide Autocad,ouvertur partielleje n'obtiens rien de plus, si ce n'est parfois le choix d'une vue de départ,mais pas le dialogue promis:dialogue ouverture partielleDu coup c'est une commande que je n'ai jamais vraiment utilisé, parcequ'en fait, je ne la comprend pas. ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
Tramber Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 Ah tiens, sur 2010, je vois aussi que ca ne marche pas ! Aucun accès à la boite. Je ne l'avais pas utilisé depuis des lustres....Pas de réponse... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
GEGEMATIC Posté(e) le 3 octobre 2012 Posté(e) le 3 octobre 2012 Ah tiens, sur 2010, je vois aussi que ca ne marche pas ! Aucun accès à la boite. Je ne l'avais pas utilisé depuis des lustres....Pas de réponse...Bon , ça me rassure, je suis pas encore complètement gâteux ... ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
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