LElemurien Posté(e) le 12 juin 2020 Posté(e) le 12 juin 2020 Bonjour, Je souhaiterai importer un style de vue en coupe et un style de vue de détail (élément qui se trouve dans des boîtes de dialogue avec les commandes _viewsectionstyle et _viewdetailstyle). Le but étant d'importer (d'un dwg ou dwt) ces styles de vue dans le dessin courant car j'aimerai au final faire un LISP puis un script pour pouvoir réaliser cette tâche sur tous les fichiers d'un dossier windows. J'utilise aussi un LISP de gile qui importe les propriétés personnalisées (d'un dwg ou dwt) dans le dessin courant voici le LISP de Gile : ;; IMPOROP (gile) ;; Importe dans le dessin courant les propriétés personnalisées d'un fichier (dwg ou dwt) (defun c:improp (/ target filename doc odbx source custList) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq target (vla-get-SummaryInfo *acdoc*)) (if (setq filename (getfiled "Choisir le fichier source" (getvar 'dwgprefix) "dwg;dwt" 0 ) ) (progn (if (not (and (setq doc (GetItem (vla-get-Documents (vlax-get-acad-object)) (strcat (vl-filename-base filename) ".dwg") ) ) (= filename (vla-get-FullName doc)) ) ) (setq doc (OpenDrawingDBX filename) odbx T ) ) (setq source (vla-get-SummaryInfo doc) n -1 ) (foreach p '(Author Comments HyperlinkBase KeyWords Subject Title) (if (/= "" (setq prop (vlax-get source p))) (vlax-put target p prop) ) ) (repeat (vla-NumCustomInfo source) (vla-GetCustomByIndex source (setq n (1+ n)) 'key 'val) (setq custList (cons (cons key val) custList)) ) (foreach p custList (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-GetCustomByKey (list target (car p) 'val) ) ) (vla-AddCustomInfo target (car p) (cdr p)) (vla-SetCustomByKey target (car p) (cdr p)) ) ) (and odbx (vlax-release-object doc)) ) ) (princ) ) ;;; Accéder à un dessin fermé (defun OpenDrawingDBX (filename / objdbx release) (setq objdbx (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (vla-open objdbx filename) objdbx ) ;;; GetItem (gile) ;;; Retourne le vla-object de l'item s'il est présent dans la collection ;;; ;;; Arguments ;;; col : la collection (vla-object) ;;; name : le nom de l'objet (string) ou son indice (entier) ;;; ;;; Retour : le vla-object ou nil (defun GetItem (col name / obj) (vl-catch-all-apply (function (lambda () (setq obj (vla-item col name)))) ) obj ) J'aimerai donc faire ce LISP un peu de la même manière que celui de Gile mais le problème c'est que je connais pas le Visualisp et je ne sais pas si cela est réalisable en LISP? Auriez vous des idées de savoir si cela est réalisable d'une part? Puis d'autre part est-ce faisable en LISP? Où trouver ces infos (style de vue en coupe et détail) dans un dessin en LISP car il n'y a pas ces infos dans une "table" comme pour les styles de cotation, lignes, texte etc...? Merci d'avance pour vos pistes de recherche Bon weekend!
Luna Posté(e) le 12 juin 2020 Posté(e) le 12 juin 2020 Salut, Je ne pourrais pas vraiment t'aider car ce n'est pas un domaine que je maîtrise mais de quoi as-tu besoin de récupérer ? La liste de toutes les vues de détails et de section, ou bien uniquement la vue courante ? Variable système CVIEWDETAILSTYLEVariable système CVIEWSECTIONSTYLE Sinon, à l'aide de cette commande, tu peux voir qu'il y a un dictionnaire pour les CVIEWDETAILSTYLE et CVIEWSECTIONSTYLE : (defun c:ListDictionaries ( / ed ed1) (prompt "\nDictionaries in current drawing: ") (foreach ed (entget (namedobjdict)) (progn (cond ((= (car ed) 3) (prompt (strcat "\n" (cdr ed)))) ((= (car ed) 350) (progn (foreach ed1 (entget (cdr ed)) (if (= (car ed1) 3) (prompt (strcat "\n " (cdr ed1))) ) ) )) ) ) ) (princ) ) AcDbVariableDictionary CANNOSCALE CETRANSPARENCY CMLEADERSTYLE CTABLESTYLE CVIEWDETAILSTYLE CVIEWSECTIONSTYLE DIMASSOC HIDETEXT HPINHERIT HPTRANSPARENCY LAYEREVAL LAYERNOTIFY Donc, la réponse est oui, c'est faisable en LISP, mais je n'ai pas les réponses malheureusement :3tu peux consulter ce topic sur les dictionnaires si tu veux : CADxp - Les dictionnairesSi (gile) passe dans le coin, il sera bien plus efficace et saura mieux t'orienter ! Bisous,Luna
(gile) Posté(e) le 12 juin 2020 Posté(e) le 12 juin 2020 Salut, À mon avis, ce n'est pas vraiment une tâche pour "Débuter en LISP".S'il n'y a pas des centaines de fichiers dans ton dossier, tu auras meilleur temps de le faire avec le Design Center. Sinon, les styles de vue en coupe et les styles de vue de détail sont stockés respectivement dans les dictionnaires ACAD_SECTIONVIEWSTYLE et ACAD_DETAILVIEWSTYLE qui se trouvent dans le dictionnaire des objets nommés. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LElemurien Posté(e) le 12 juin 2020 Auteur Posté(e) le 12 juin 2020 Merci pour les infos! Ce dont j'ai besoin c'est le "style" de vue en coupe et de détail. Je vais étudier tout ça, mais j'ai peut-être trouvé une autre solution pas très Ac a démique mais qui à l'air de fonctionner. (Etrange impossible d'écrire Ac a démique cela écrit Autocadémique) En fait j'ai créer un bloc dans un gabarit (gabarit qui contient le style de vue) et j'insère ce bloc dans le dessin et du coup cela importe aussi le style de vue dans le nouveau dessin. Et ensuite je supprime le bloc inutile dans le dessin. Clairement ce n'est pas très "programme" dans la structure mais si cela fonctionne cela reste plus dans mes capacités. Mais encore merci car je vais étudier ces infos et je vais certainement essayer de faire un programme plus "programmatique" . Bon weekend!
LElemurien Posté(e) le 12 juin 2020 Auteur Posté(e) le 12 juin 2020 Merci pour les infos (Gile) et oui cela semble complexe pour un débutant comme moi mais cela va me faire apprendre d'autre chose plus complexe! Merci et bon weekend!
LElemurien Posté(e) le 12 juin 2020 Auteur Posté(e) le 12 juin 2020 Bon cela fonctionne avec la bidouille du bloc c'est parfait pour le moment! Merci pour toutes les infos problème résolu! Bon weekend à tous!
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