LUDWIG Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 Bonjour à tous ! Je me suis créé une bibliothèque d'élément de cuisine en blocs dynamiques. Je ne souhaite pas que les archi, BE et autres corps d'état puissent récupérer cette bibliothèque lorsque je leur transmet mes fichiers. Pour cela, j'utilisais jusqu'à présent e-transmit en enregistrant en version 2000. Je me disais que les blocs dynamiques allaient devenir "statiques" et de type anonyme (*U12, etc). Or en rouvrant un fichier enregistré en version 2000 avec autocad 2007, je m'aperçois que mes blocs sont toujours dynamiques ! Horreur ! Comment puis-je procédé pour transmettre des fichiers sans ma bibliothèque (à part en décomposant et purgeant avant l'e-transmit) ? Merci d'avance ! Autocad 2021 - Revit 2022 - Windows 10
BIM G CO Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 J'ai pas vraiment de solution :mais seulement un piège : (defun MINE_ANTI_PIRATE () (entmake (list '(0 . "ATTDEF") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "0") '(62 . 250) '(6 . "ByBlock") '(370 . -2) '(100 . "AcDbText") (cons 10 (list -5249.43 -5956.53 0.0)) '(40 . 1000.0) '(1 . "") '(50 . 0.785398) '(41 . 0.8) '(51 . 0.0) '(7 . "Standard") '(71 . 0) '(72 . 1) (cons 11 (list 0.0 0.0 0.0)) (cons 210 (list 0.0 0.0 1.0)) '(100 . "AcDbAttributeDefinition") '(3 . "") '(2 . "PROPRIETE_DE_MAXIMILIEN_ALORS_PAS_TOUCHE") '(70 . 11) '(73 . 0) '(74 . 2) ) ) ) j'effectue cette opération dans un lisp qui me met au norme le bloc (couleur DUBLOC etc.. ) que tu avais si gentiment participé ici Cela crée un attrib constant invisible injurieux! ceux qui pirate téléphone et je n'ai plus qu'à les ajouter dans une liste permettant de savoir que la prochaine fois j'explose les blocs avant d'envoyer! C'est pas mal de se servir de la bêtise humaine à ses propres fins! seul ceux qui connaissent assez AutoCAD ne réagissent pas. Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
ASTERIXII Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 A ma connaissance les bloc dynamique n'exite pas sous 2000alors essai de faire ouvrire tes blocs par une version 2000
LUDWIG Posté(e) le 16 novembre 2006 Auteur Posté(e) le 16 novembre 2006 ASTERIXII : oui je sais que les blocs dynamiques n'existent pas sur 2000, c'est la raison pour laquelle j'enregistre en version 2000. J'ai fait un test :- J'enregistre en version 2000- J'ouvre avec autocad LT 2002 : mes blocs ne sont pas dynamiques, ils sont même anonymes- J'enregistre avec autocad LT 2002 en version 2000- J'ouvre le fichier avec autocad 2007 : mes blocs dynamiques sont de retour... Maximilien : je ne comprends pas trop à quel moment l'attribut "injurieux" apparaît... Je trouve cette méthode de sélection un peu compliquée (e-transmit est si simple !!!). Et exploser les blocs ne me convient pas : je perds mes informations de couleurs, type de ligne, etc... Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 16 novembre 2006 Auteur Posté(e) le 16 novembre 2006 Ou alors il me faudrait un lisp qui, pour chaque bloc dynamique, explose le bloc et recompose un bloc "non-dynamique" à partir des éléments du précédent... Si quelqu'un a quelque chose qui pourrait correspondre ? Ou une meilleure proposition... Autocad 2021 - Revit 2022 - Windows 10
Tramber Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 JE pense que ton idée est faisable : exploser et recomposer en mode normal. Mais sinon, j'ai regardé les propriétés AtciveX. ET il ne semble pas possible de jouer sur le caractère Dynamique d'un bloc. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 (defun c:test (/) (defun injecto (j / i element elementGet) (setq i 0) (while ( (setq element (ssname j i)) (setq elementGet (entget element)) (setq i (1+ i)) (entmake elementGet))) (defun FAITBLO (nom jeu oudonc / ea eb) (setq ea (list (cons 0 "block") (CONS 2 nom) (cons 10 oudonc) (cons 70 64))) (setq eb (list (cons 0 "endblk")) index 0) (entmake ea) (injecto jeu) (entmake eb) (repeat(sslength jeu)(entdel (ssname jeu index))(setq index (1+ index))) ) (defun refait(ent / );(setq ent(ssname ss n)) (setq gtent(entget ent)) (setq donne (vlax-invoke (vlax-ename->vla-object ent) 'explode)) (setq sblo(ssadd)) (foreach p donne(setq sblo(ssadd(vlax-vla-object->ename p)sblo))) (faitblo(cdr(assoc 2 gtent))sblo(cdr(assoc 10 gtent))) (command "_insert" (cdr(assoc 2 gtent))(cdr(assoc 10 gtent))1 1 0) ) (setq ss (ssget '((0 . "INSERT")))) (repeat (setq n (sslength ss)) (setq ref (vlax-ename->vla-object (ssname ss (setq n (1- n))))) (if (= (vla-get-IsDynamicBlock ref) :vlax-true) (refait(ssname ss n)) ) ) ) Je suis sur le C.. !!!Je viens de tenter un code qui consiste à réécrire le bloc avec des ENTMAKE tout à fait classique. Dingue, ca ne marche pas, le bloc revient en dynamique. Incroyable.Pour qui veut se pencher un peu sur le lisp, le résultat est surprenant. [Edité le 16/11/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 Tiens, un code beaucoup plus simple : (defun c:test (/) (defun refait(ent / );(setq ent(ssname ss n)) (setq gtent(entget ent)) (setq donne (vlax-invoke (vlax-ename->vla-object ent) 'explode)) (setq sblo(ssadd)) (foreach p donne(setq sblo(ssadd(vlax-vla-object->ename p)sblo))) (command "-bloc" (cdr(assoc 2 gtent)) "Oui" (cdr(assoc 10 gtent))sblo "") (entdel(entlast)) (command "_insert" (cdr(assoc 2 gtent))(cdr(assoc 10 gtent))1 1 0) ) (setq ss (ssget '((0 . "INSERT")))) (repeat (setq n (sslength ss)) (setq ref (vlax-ename->vla-object (ssname ss (setq n (1- n))))) (if (= (vla-get-IsDynamicBlock ref) :vlax-true) (refait(ssname ss n)) ) ) ) Ca marche ! Mais attention, c'est uniquement dans le SCG, en selectionnant à la souris UN exmplaire de chaque. Et c'est vite fait avant de me mettre à table ! Bon ap' ! [Edité le 16/11/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 16 novembre 2006 Posté(e) le 16 novembre 2006 Salut, Une autre façon, Tous les blocs dynamiques sont traités, ils sont renommés avec un sufixe incrémenté pour éviter les duplications de nom (MonBloc -> MonBloc_1).Il faut ensuite purger les blocs dynamiques, bien sûr. Pour tout purger avec le LISP, enlever les points-virgules devant (vla-PurgeAll). (defun c:dyn2stat (/ n ss) (setq n 0) (if (setq ss (ssget "_X" '((0 . "INSERT")))) (foreach bl (mapcar 'cadr (ssnamex ss)) (setq bl (vlax-ename->vla-object bl)) (if (= (vla-get-IsDynamicBlock bl) :vlax-true) (vla-ConvertToStaticBlock bl (strcat (vla-get-EffectiveName bl) "_" (itoa (setq n (1+ n))) ) ) ) ) ) ;;(vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))) (princ) ) [Edité le 16/11/2006 par (gile)][Edité le 16/11/2006 par (gile)] Edit : corrigé l'oubli signalé par LUDWIG pour vla-PurgeAll. [Edité le 17/11/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 17 novembre 2006 Posté(e) le 17 novembre 2006 vla-ConvertToStaticBlock Evidemment ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 17 novembre 2006 Auteur Posté(e) le 17 novembre 2006 Merci à vous de vous pencher sur ce problème ! Je viens de tenter un code qui consiste à réécrire le bloc avec des ENTMAKE tout à fait classique. Dingue, ca ne marche pas, le bloc revient en dynamique. Incroyable.Sans doute parce que les paramètres et actions existent toujours après la décomposition et son inclus dans le jeu de sélection du nouveau bloc ? vla-ConvertToStaticBlockEvidemment ! Mais il fallait le savoir ! Je teste donc ça ! Merci ! --> Ca marche nickel. Je l'intègre d'ore et déjà à ma procédure de transmission de plan... dyn2stat --> e-transmit EDIT : il semble qu'il manque un argument pour le vla-purgeall [Edité le 17/11/2006 par LUDWIG] Autocad 2021 - Revit 2022 - Windows 10
(gile) Posté(e) le 17 novembre 2006 Posté(e) le 17 novembre 2006 il semble qu'il manque un argument pour le vla-purgeall Exact, autant pour moi, c'est : (vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 17 novembre 2006 Posté(e) le 17 novembre 2006 Sans doute parce que les paramètres et actions existent toujours après la décomposition et son inclus dans le jeu de sélection du nouveau bloc ? On pourrait le croire mais je confirme, dans le jeu de selection créé par ma 1ère routine, il n'y avait que des objets graphiques classiques.Amusant et intriguant. Merci à Gile pour le tuyau, ca évitera mon code un peu vieille génération (mais qui marchera sur des versions antérieures). Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
BIM G CO Posté(e) le 20 février 2007 Posté(e) le 20 février 2007 Préalable dans la base de registre : Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.0\ACAD-5001:40C\ETransmit\setups\Standard] "Name"="Standard" "PackageType"=dword:00000000 "SaveDrawingFormat"=dword:00000002 "DestFileAction"=dword:00000001 "DestFolder"="C:\\Export AutoCAD\\Etransmit" "DestFile"="" "FilePathOption"=dword:00000001 "RootFolder"="" "IncludeFont"=dword:00000000 "IncludeMaterialTextures"=dword:00000000 "SendMail"=dword:00000000 "SetPlotterNone"=dword:00000000 "BindXref"=dword:00000000 "UsePassword"=dword:00000000 "IncludeSSFiles"=dword:00000001 "Description"="" Le fichier lisp ;;; Rend statique les bloc dynamique pour éviter leur écrasement ;;; cette fonction fait une sauvegarde du fichier annoté "Etranmit" ;;; effectue la transformation et effectue le Etransmit ;;; cette fonction vient de l'aide précieuse de (gile) ;;; sur CADXP (url=http://www.cadxp.com/sujetXForum-12666)CADxp(/url) (defun c:dyn2stat (/ n ss PRIVE_OldName) (setq n 0) (setq PRIVE_OLDNAME (strcat (getvar "DWGPREFIX") (vl-filename-base (getvar "DWGNAME")))) (vl-file-delete (strcat PRIVE_OldName "- Etranmit.dwg")) (command "_SAVEAS" "2004" (strcat PRIVE_OldName "- Etranmit.dwg")) (if (setq ss (ssget "_X" '((0 . "INSERT")))) (foreach bl (mapcar 'cadr (ssnamex ss)) (setq bl (vlax-ename->vla-object bl)) (if (= (vla-get-IsDynamicBlock bl) :vlax-true) (vla-ConvertToStaticBlock bl (strcat (vla-get-EffectiveName bl) "_" (itoa (setq n (1+ n))) ) ) ) ) ) (vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))) (command "_-etransmit" "" "_choose" "Standard" "_create") (command "_close" "_no") (command "_open" (strcat PRIVE_OLDNAME ".dwg")) (princ) ) le fichier MNU .... ***POP1 ID_MNB0000EF [Transfère DYN2STAT]^C^C(c:DYN2STAT)(princ); .... ***HELPSTRINGS ID_MNB0000EF [Transforme tous les blocs dynamiques en bloc statique en créant un fichier suffixé "-Etransmit" puis effectue uh e-Transmit de celui-ci et ferme le fichier] ... Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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