kclement Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 Bonjour, J'ai chargé sur le forum le lisp CPSCU.LSP écrit par Patrick_35 qui copie des SCU d'un fichier à l'autre. Ca fonctionne parfaitement et je l'utilise souvent ! Seulement je me demandais s'il était possible de faire la même chose pour les vues ? Merci d'avance de vos réponses qui, je n'en doute pas, seront rapides et pédagogiques (un peu de pommade ça fait pas de mal !!! ;) ) Kclement
fabcad Posté(e) le 15 septembre 2009 Posté(e) le 15 septembre 2009 Bonjour kclement, Voici une fonction que j'avais trouvé et modifiée,à Tester pour voir les compatibilités v2009 et 2010 : ;;; viewsIO.lsp ;;; ;;; Export and import views ;;; ;;; c:ExportViews ;;; c:ImportViews ;;; c:-ExportViews ;;; c:-ImportViews ;;; ;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved ;;; Website: www.jtbworld.com ;;; E-mail: info@jtbworld.com ;;; ;;; 2000-06-27 ;;; ;;; Tested on AutoCAD 2000 ;;; To do: support for views with saved ucs (defun c:ExportViews (/ fn) (if (setq fn (getfiled "Export views to" (strcat (vl-filename-base (getvar "dwgname")) ".txt") "txt" 1 ) ) (ExportViews fn) ) (princ) ) (defun c:ImportViews (/ fn) (if (setq fn (getfiled "Import views to" (strcat (vl-filename-base (getvar "dwgname")) ".txt") "txt" 8 ) ) (ImportViews fn) ) (princ) ) (defun c:-ExportViews (/ fn x) (setq fn (strcat (vl-filename-base (getvar "dwgname")) ".txt")) (if (setq fn (findfile (if (= "" (setq nn (getstring T (strcat "Enter filename <" fn ">: " ) ) ) ) fn nn ) ) ) (progn (initget "Yes No") (setq x (getkword "\nFile exists. Overwrite? [Yes/No] : ")) (if (= x "Yes") (ExportViews fn) ) ) (princ "\nFile not found.") ) (princ) ) (defun c:-ImportViews (/ fn) (setq fn (strcat (vl-filename-base (getvar "dwgname")) ".txt")) (if (setq fn (findfile (if (= "" (setq nn (getstring T (strcat "Enter filename <" fn ">: " ) ) ) ) fn nn ) ) ) (ImportViews fn) (princ "\nFile not found.") ) (princ) ) (defun ExportViews (fn / e tl f ed) (while (setq e (tblnext "VIEW" (null e))) (setq tl (cons (cdr (assoc 2 e)) tl)) ) (setq f (open fn "w")) (if f (progn (princ "Following views exported:\n") (foreach view tl (setq ed (entget (tblobjname "view" view))) (foreach n '(-1 102 360 102 330 5) (setq ed (vl-remove-if-not '(lambda (x) (/= (car x) n)) ed)) ) (prin1 ed f) (princ "\n" f) (prin1 view) (terpri) ) (close f) ) ) ) (defun ImportViews (fn / tl f) (setq f (open fn "r")) (if f (progn (princ "Following views imported:\n") (while (setq tl (read-line f)) (setq tl (read tl)) (entmake tl) (print (cdr (assoc 2 tl))) ) (close f) ) ) ) ;;;------------------------------------------------------------------------ (prompt "\n Pour lancer Tapez : ExportViews ou ImportViews") (princ) [Edité le 15/9/2009 par fabcad]
kclement Posté(e) le 21 septembre 2009 Auteur Posté(e) le 21 septembre 2009 Bonjour fabcab, J'ai testé et ça n'a pas marché, je m'explique : J'ai d'abord exporté depuis mon fichier où dse trouvent les vues que je veux récupérer. Il me crée un fichier texte, ensuite je retourne dans mon fichier où je veux récupérer mes vues, et là j'importe le fichier texte. Il m'écrit : Following views imported:cdrs supplémentaire dans la paire pointée en entrée Mais je n'ai rien dans ma liste de vues...
kclement Posté(e) le 22 septembre 2009 Auteur Posté(e) le 22 septembre 2009 Bonjour, Ci-dessous le code du lisp : ;;;================================================================= ;;; ;;; CPSCU.LSP V1.00 ;;; ;;; Importer des Scu ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun c:cpscu(/ dbx dcl dcl_id doc fic lay lst n msgbox Ouvrir_dessin_dbx res sty) ;;;--------------------------------------------------------------- ;;; ;;; Message ;;; ;;;--------------------------------------------------------------- (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (vl-load-com) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) ;;;--------------------------------------------------------------- ;;; ;;; Accéder a un fichier dessin ;;; ;;;--------------------------------------------------------------- (defun Ouvrir_dessin_dbx(dwg / dbx) (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg))) nil dbx ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;--------------------------------------------------------------- (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq dcl (findfile "Copier SCU.dcl")) (if (setq fic (getfiled "Sélectionnez le dessin source" (getvar "dwgprefix") "dwg" 16)) (if (setq dbx (Ouvrir_dessin_dbx fic)) (progn (setq dcl_id (load_dialog dcl) pos "0" doc (vla-get-usercoordinatesystems (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for sty (vla-get-usercoordinatesystems dbx) (setq lst (append lst (list (vla-get-name sty)))) ) (if lst (progn (new_dialog "cpscu" dcl_id "") (start_list "cpscu") (mapcar 'add_list lst) (end_list) (set_tile "titre" "Importer des SCU V1.00") (set_tile "cpscu" pos) (mode_tile "cancel" 2) (action_tile "cpscu" "(setq pos $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq res (start_dialog)) (if (eq res 1) (progn (while (not (eq pos "")) (setq n (read pos) lay (append lay (list (vla-item (vla-get-usercoordinatesystems dbx) (nth n lst)))) pos (substr pos (+ 2 (strlen (itoa n))) (strlen pos)) ) ) (vla-CopyObjects Dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length lay)))) lay ) doc) (msgbox "CPSCU" 48 "Importation des scu terminé.") ) ) (vlax-release-object dbx) ) (msgbox "CPSCU" 16 "Pas de SCU à importer.") ) ) (msgbox "CPSCU" 16 (strcat "Impossible d'ouvrir le fichier\n" fic)) ) ) (msgbox "CPSCU" 16 "Fichier Copier SCU.DCL introuvable.") ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) (princ "\nCopier SCU.LSP chargé. Tapez CPSCU pour l'exécuter") (princ) et le code du DCL : // ================================================================= // // CPSCU.DCL V1.00 // // Copyright (C) Patrick_35 // // ================================================================= cpscu : dialog { key = "titre"; fixed_width = true; alignment = centered; is_cancel = true; width = 60; : list_box {label= "SCU"; key = "cpscu"; height = 20; multiple_select=true;} spacer; ok_cancel; } Peut-être que ça vous éclairera...
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