Aller au contenu

Modifier des blocs version 2


Messages recommandés

Posté(e)

J'ouvre un nouveau sujet qui fait suite à celui ci qui commençait à devenir fort long.

 

Voici la version 2.4 (17/07/06) de EDIT_BLOC (attention nouveaux fichiers DCL edit_bloc.dcl et alert_bloc.dcl)

 

http://img92.imageshack.us/img92/3361/eb3ho.png

 

Nouveautés

 

- Mise à jour de l'échelle des blocs composant les blocs imbriqués si l'unité d'insertion de leurs définitions a été changée.

 

- Ajout de la possibilité de mettre les entités en style de tracé DuBloc (demande de "LeCrabe" que j'avais "zappée" - je ne suis pas coutumier des styles de tracé nommés). Cette possibilité n'est accessible que si le dessin courant est en mode style de tracé nommés (STB).

 

- Ajout d'une boite de dialogue pour confirmation des changements d'échelle de blocs dynamiques. En cas d'infirmation, l'échelle du bloc n'est pas modifiée mais les autres modifications et les modification des autres blocs sont effectuées.

 

- Réparation d'un dysfonctionnement avec les sélections de certaines références de blocs dynamiques (blocs anonymes).

 

Le nouveau DCL à enregistrer sous edit_bloc.dcl dans un dossier de recherche des fichiers de support :

 

// Boite de dialogue du LISP EDIT_BLOC version 2.0
edit_bloc:dialog{
 label="Redéfinition de blocs";
 :boxed_row{
   label="Choix des blocs";
   :radio_column{
     :radio_button{
       label="Toute la collection";
       key="tbl";
       fixed_width=true;
       allow_accept=true;
     }
     :radio_button{
       label="Tous les blocs insérés";
       key="all";
       fixed_width=true;
       allow_accept=true;
     }
     :radio_button{
       label="Sélection";
       key="sel";
       value="1";
       fixed_width=true;
     }
   }
   :button{
     label="       key="ss";
     fixed_width=true;
     alignment=bottom;
     allow_accept=true;
   }
 }
 :boxed_column{
   label="Propriétés à modifier";
   :edit_box{
     label= "Échelle globale";
     key="fact";
     edit_width=8;
     value="1";
     allow_accept=true;
   }
   :popup_list{
     label="Unités ";
     key="unt";
     edit_width=16;
   }
   spacer;
   :toggle{
     label="Calque 0";
     key="lay";
     fixed_width=true;
     allow_accept=true;
   }
   :toggle{
     label="Couleur DuBloc";
     key="col";
     fixed_width=true;
     allow_accept=true;
   }
   :toggle{
     label="Type de ligne DuBloc";
     key="tl";
     fixed_width=true;
     allow_accept=true;
   }
   :toggle{
     label="Épaisseur de ligne DuBloc";
     key="el";
     fixed_width=true;
     allow_accept=true;
   }
   :toggle{
     label="Style de tracé DuBloc";
     key="plt";
     fixed_width=true;
     allow_accept=true;
   }
 }
 ok_cancel;
} 

 

Le DCL de la boite de confirmation à enregistrer sous alert_bloc.dcl dans un dossier de recherche des fichiers de support :

 

// Boite de dialogue Echelle des blocs dynamiques
alert_bloc:dialog{
 label="Échelle des blocs dynamiques";
 :paragraph{
   :text_part{
     value="Le changement d'échelle n'affecte pas";
   }
   :text_part{
     value="les paramètres des blocs dynamiques.";
   }
 }
 spacer;
 :boxed_column{
   label="Modifier l'échelle du bloc";
   :text{ 
     key="txt";
   }
   :radio_row{
     :radio_button{
       label="Oui";
       mnemonic="O";
       key="mod";
     }
     :radio_button{
       label="Non";
       mnemonic="N";
       key="anl";
       value="1";
     }
   }
 }
 ok_only;
} 

 

Le LISP :

 

;;; Edit_bloc - Gilles Chanteau - version 2.4 - 17/07/06
;;;
;;; Redéfinit les blocs après modification des propriétés de leurs composants.
;;;
;;; Les modification affectent :
;;; - soit tous les blocs de la collection (insérés ou non)
;;; - soit tous les blocs insérés
;;; - soit une sélection de blocs faite dans le dessin.
;;;
;;; Il est possible de :
;;; - modifier l'échelle globale
;;; - changer l'unité d'insertion (versions postérieures à 2005)
;;; - mettre les objets composant les blocs sur le calque 0
;;; - changer la couleur, le type de ligne, l'épaisseur de ligne
;;;   et le style de tracé (STB uniquement) des composants en DuBloc.
;;;
;;; Les blocs composant les blocs imbriqués sont traités.
;;; Les blocs insérés dans le dessin sont mis à jour en fonction
;;; des modifications effectuées.
;;;
;;; Les paramètres et propriétés des blocs dynamiques n'étant pas pris
;;; en compte par les changements d'échelle, une boite de dialogue demande
;;; confirmation ou infirmation pour les changements d'échelle du bloc.

(vl-load-com)

(defun c:edit_bloc (/
	    ;; Fonctions
	    e_b_err  edit_prop	       scl_upd	att_upd
	    sub_upd  edit_bl
	    ;; Variables
	    AcDoc    dcl_id   loop     u_lst	lay
	    col	     tl	      el       plt	fact
	    unt	     ss
	   )

;;;******************************************************************* ;;;

 ;; Redéfinition de *error*

 (defun e_b_err (msg)
   (if	(or
  (= msg "Fonction annulée")
  (= msg "quitter / sortir abandon")
)
     (princ)
     (princ (strcat "\nErreur: " msg))
   )
   (vla-endundomark
     (vla-get-ActiveDocument (vlax-get-acad-object))
   )
   (setq *error* m:err
  m:err	nil
   )
   (princ)
 )

;;;******************************************************************* ;;;

 (defun alert_bloc (name / dcl_id)
   (setq dcl_id (load_dialog "Alert_bloc.dcl"))
   (if	(not (new_dialog "alert_bloc" dcl_id))
     (exit)
   )
   (set_tile "txt" name)
   (action_tile
     "mod"
     (strcat
"(if (= \"1\" $value)"
"(setq e_scl T)"
"(setq e_scl nil))"
     )
   )
   (action_tile
     "anl"
     (strcat
"(if (= \"1\" $value)"
"(setq e_scl nil)"
"(setq e_scl T))"
     )
   )
   (action_tile "accept" "(done_dialog)")
   (start_dialog)
   (unload_dialog dcl_id)
 )

;;;******************************************************************* ;;;

 ;; Modification des propriétés des entités composant le bloc

 (defun edit_prop (ent)
   (if	(= lay "Oui")
     (vla-put-Layer ent "0")
   )
   (if	(= col "Oui")
     (vla-put-Color ent acByBlock)
   )
   (if	(= tl "Oui")
     (vla-put-LineType ent "ByBlock")
   )
   (if	(= el "Oui")
     (vla-put-LineWeight ent acLnWtByBlock)
   )
   (if	(= plt "Oui")
     (vla-put-PlotStyleName ent "ByBlock")
   )
 )

;;;******************************************************************* ;;;

 ;; Mise à jour des attributs

 (defun att_upd (obj)
   (if	(= :vlax-true (vla-get-HasAttributes obj))
     (if
(listp (setq att_lst (vl-catch-all-apply
		       'vlax-invoke
		       (list obj 'getAttributes)
		     )
       )
)
 (mapcar
   '(lambda (x)
      (if (/= fact 1.0)
	(vla-ScaleEntity
	  x
	  (vla-get-InsertionPoint obj)
	  fact
	)
      )
      (edit_prop x)
    )
   att_lst
 )
     )
   )
 )


;;;******************************************************************* ;;;

 ;; Mise à jour de l'échelle en cas de changement d'unité

 (defun scl_upd (obj)
   (if	(and unt
     (/= unt 0)
     (/= i_unt unt)
     (/= i_unt 0)
)
     (vla-ScaleEntity
obj
(vla-get-InsertionPoint obj)
(cvunit	1
	(nth unt u_lst)
	(nth i_unt u_lst)
)
     )
   )
 )

;;;******************************************************************* ;;;

 ;; Mise à jour des blocs composant les blocs imbriqués

 (defun sub_upd (obj blc / org ins)
   (if	(/= fact 1.0)
     (progn
(setq org (vlax-get blc 'origin)
      ins (vlax-get ent 'InsertionPoint)
)
(vla-put-InsertionPoint
  obj
  (vlax-3d-point
    (mapcar '+
	    org
	    (mapcar '(lambda (x)
		       (* x fact)
		     )
		    (mapcar '- ins org)
	    )
    )
  )
)
     )
   )
   (edit_prop obj)
   (att_upd obj)
 )

;;;******************************************************************* ;;;

 ;; Modification des blocs

 (defun edit_bl (/ n obj lst n_lst name bloc e_scl i_unt nb)
   ;; Dévérouillage de tous les calques
   (vlax-for clq (vla-get-Layers AcDoc)
     (if (= :vlax-true
     (vla-get-lock clq)
  )
(progn
  (vla-put-lock clq :vlax-false)
  (setq clq_lst (cons clq clq_lst))
)
     )
   )
   ;; Création de la liste des blocs à modifier
   (if	ss
     ;; Si "Sélection" ou "Tous les blocs insérés"
     (progn
(repeat	(setq n (sslength ss))
  (setq
    obj	(vlax-ename->vla-object (ssname ss (setq n (1- n))))
  )
  (if (vlax-property-available-p obj 'EffectiveName)
    (setq name (vla-get-EffectiveName obj))
    (setq name (vla-get-Name obj))
  )
  (if
    (and
      (not (member name lst))
      (= :vlax-false
	 (vla-get-isXref
	   (vla-item (vla-get-Blocks AcDoc) name)
	 )
      )
    )
     (setq lst (cons name lst))
  )
)
;; Ajout des blocs composant les blocs imbriqués à la liste
(setq n_lst 0)
(while (setq name (nth n_lst lst))
  (setq bloc (vla-item (vla-get-blocks acDoc) name))
  (vlax-for ent	bloc
    (if	(and (= (vla-get-ObjectName ent) "AcDbBlockReference")
	     (not (member (vla-get-name ent) lst))
	)
      (setq
	lst (reverse (cons (vla-get-Name ent) (reverse lst)))
      )
    )
  )
  (setq n_lst (1+ n_lst))
)
     )
     ;; Si "Toute la collection"
     (vlax-for	bl (vla-get-blocks AcDoc)
(if (and (= :vlax-false (vla-get-isLayout bl))
	 (= :vlax-false (vla-get-isXref bl))
    )
  (setq lst (cons (vla-get-name bl) lst))
)
     )
   )
   ;; Modification des blocs
   (mapcar
     '(lambda (name)
 (setq bloc (vla-item (vla-get-blocks AcDoc) name))
 (if (and (		  (= (vla-get-IsDynamicBlock bloc) :vlax-true)
	  (/= fact 1.0)
     )
   (progn
     (setq e_scl nil)
     (alert_bloc name)
   )
   (setq e_scl T)
 )
 (vlax-for ent bloc
   (if (/= (vla-get-ObjectName ent) "AcDbZombieEntity")
     (if (/= (vla-get-ObjectName ent) "AcDbBlockReference")
       (progn
	 (if (and (/= fact 1.0) e_scl) ;_ Echelle
	   (vla-ScaleEntity ent (vla-get-origin bloc) fact)
	 )
	 (edit_prop ent)
       )
       (sub_upd ent bloc)
     )
   )
 )
 (if (	   (if (/= (setq i_unt (vla-get-units bloc)) unt)
     (vla-put-Units bloc unt)
   )
 )
 ;; Mise à jour des blocs insérés (attributs et unités)
 (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 name))))
 (if ss
   (repeat (setq n (sslength ss))
     (setq obj (vlax-ename->vla-object
		 (ssname ss (setq n (1- n)))
	       )
     )
     (att_upd obj)
     (scl_upd obj)
   )
 )
      )
     lst
   )
   ;; Mise à jour des blocs composant les blocs imbriqués insérés non sélectionnés
   (setq ss
   (ssget "_X"
	  (cons	'(0 . "INSERT")
		(mapcar '(lambda (x) (cons 2 (strcat "~" x))) lst)
	  )
   )
   )
   (if	ss
     (repeat (setq nb (sslength ss))
(setq obj  (vlax-ename->vla-object (ssname ss (setq nb (1- nb))))
      name (vla-get-Name obj)
      bloc (vla-item (vla-get-blocks AcDoc) name)
)
(vlax-for ent bloc
  (if (and (= (vla-get-ObjectName ent) "AcDbBlockReference")
	   (member (vla-get-Name ent) lst)
      )
    (progn
      (sub_upd ent bloc)
      (scl_upd ent)
    )
  )
)
     )
   )
   ;; Revérouillage des calques vérouillés
   (if	clq_lst
     (mapcar '(lambda (x)
	 (vla-put-lock x :vlax-true)
       )
      clq_lst
     )
   )
   (vla-Regen AcDoc acAllViewports)
 )

;;;******************************************************************* ;;;

 ;; Boite de dialogue

 (setq	AcDoc	(vla-get-ActiveDocument (vlax-get-acad-object))
m:err	*error*
*error*	e_b_err
 )
 (vla-StartUndoMark AcDoc)
 (setq	dcl_id (load_dialog "Edit_bloc.dcl")
loop   2
u_lst  (list "Sans unités"     "Pouces"
	     "Pieds"	       "Miles"
	     "Millimètres"     "Centimètres"
	     "Mètres"	       "Kilomètres"
	     "Micropouces"     "Milles"
	     "Yards"	       "Angströms"
	     "Nanomètres"      "Microns"
	     "Décimètres"      "Décamètres"
	     "Hectomètres"     "Gigamètres"
	     "Unités astronomiques"
	     "Parsecs"
	    )
 )
 (while (    (if	(not (new_dialog "edit_bloc" dcl_id))
     (exit)
   )
   (start_list "unt")
   (mapcar 'add_list u_lst)
   (end_list)
   (cond
     ((       (mode_tile "unt" 0)
      (if (not unt)
 (setq unt (getvar "INSUNITS"))
      )
     )
     (T
      (mode_tile "unt" 1)
      (setq unt nil)
     )
   )
   (if	unt
     (set_tile "unt" (itoa unt))
     (set_tile "unt" (itoa (getvar "INSUNITS")))
   )
   (if	(not ss)
     (mode_tile "accept" 1)
   )
   (if	(zerop (getvar "PSTYLEMODE"))
     (mode_tile "plt" 0)
     (progn
(mode_tile "plt" 1)
(setq plt "Non")
     )
   )
   (if	fact
     (set_tile "fact" (rtos fact))
     (setq fact 1.0)
   )
   (if	(= lay "Oui")
     (set_tile "lay" "1")
   )
   (if	(= col "Oui")
     (set_tile "col" "1")
   )
   (if	(= tl "Oui")
     (set_tile "tl" "1")
   )
   (if	(= el "Oui")
     (set_tile "el" "1")
   )
   (if	(= plt "Oui")
     (set_tile "plt" "1")
   )
   (action_tile
     "tbl"
     (strcat
"(if (= \"1\" $value)"
"(progn (setq ss nil)"
"(mode_tile \"ss\" 1)"
"(mode_tile \"accept\" 0)))"
     )
   )
   (action_tile
     "all"
     (strcat
"(if (= \"1\" $value)"
"(progn"
"(setq ss (ssget \"_X\" '((0 . \"INSERT\"))))"
"(mode_tile \"ss\" 1)"
"(mode_tile \"accept\" 0)))"
      )
   )
   (action_tile
     "sel"
     (strcat
"(if (= \"1\" $value)"
"(progn (mode_tile \"ss\" 0)"
"(mode_tile \"ss\" 2)"
"(mode_tile \"accept\" 1))"
"(mode_tile \"accept\" 0))"
      )
   )
   (action_tile
     "ss"
     "(progn (done_dialog 3) (mode_tile \"accept\" 0))"
   )
   (action_tile
     "fact"
     (strcat
"(if (	"(setq fact (atof $value))"
"(progn (alert \"Entrée non valide\")"
"(mode_tile \"fact\" 2)))"
     )
   )
   (action_tile "unt" "(setq unt (atoi $value))")
   (action_tile
     "lay"
     (strcat
"(if (= \"1\" $value)"
"(setq lay \"Oui\")"
"(setq lay \"Non\"))"
     )
   )
   (action_tile
     "col"
     (strcat
"(if (= \"1\" $value)"
"(setq col \"Oui\")"
"(setq col \"Non\"))"
     )
   )
   (action_tile
     "tl"
     (strcat
"(if (= \"1\" $value)"
"(setq tl \"Oui\")"
"(setq tl \"Non\"))"
     )
   )
   (action_tile
     "el"
     (strcat
"(if (= \"1\" $value)"
"(setq el \"Oui\")"
"(setq el \"Non\"))"
     )
   )
   (action_tile
     "plt"
     (strcat
"(if (= \"1\" $value)"
"(setq plt \"Oui\")"
"(setq plt \"Non\"))"
     )
   )
   (action_tile "accept" "(done_dialog 1)")
   (setq loop (start_dialog))
   (cond
     ((= loop 3)
      (setq ss (ssget '((0 . "INSERT"))))
     )
     ((= loop 1)
      (edit_bl)
     )
   )
 )
 (unload_dialog dcl_id)
 (vla-endundomark AcDoc)
 (setq	*error*	m:err
m:err nil
 )
 (princ)
)

[Edité le 28/5/2006 par (gile)][Edité le 4/6/2006 par (gile)][Edité le 10/6/2006 par (gile)][Edité le 11/6/2006 par (gile)]

 

[Edité le 17/7/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bien qu'elle ne m'apporte rien de plus sous ma version ("style de tracé du bloc" grisé). Je confirme quand même qu'elle fonctionne toujours, du moins pour les tests rapides que j'ai pu faire.

 

Rassuré? ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci pour le retour ;)

 

Dans un dessin où le style de tracé serait "nommé" (.stb) la case ne serait pas grisée et la modification accessible.

 

[Edité le 27/5/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Déjà la version 2.1

 

Comme je n'arrive pas à faire suivre les paramètres et propriétés des blocs dynamiques en cas de changement d'échelle du bloc, j'ai ajouté une petite boite de dialogue qui demande confirmation pour les changements d'échelles de ce type de blocs.

 

J'ai aussi réparé un problème avec les noms de certains blocs dynamiques (blocs anonymes) en cas de sélection, j'espère que cette modification ne vas pas perturber le fonctionnementavec les version antérieures aux blocs dynamiques (2006).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Modification :

 

Pour éviter une erreur au cas ou des références du même bloc seraient insérées à la fois sur des calques vérouillés et des calques dévérouillés, le LISP dévérouille tous les calques pour effectuer les modifications, puis restaure l'état initial.

 

Version 2.2

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut thierryd,

 

C'est dans mon optique de mettre le programme en téléchargement.

 

Si j'ai préféré ne pas le faire tout de suite, c'est parcque toute modification dans un fichier en téléchargement ne peut se faire sans une intervention de notre cher webmaster.

 

La publication dans le forum m'a permis de faire, depuis la première version à une bonne quinzaine de modifs, pour répondre à des suggestions ou réparer des dysfonctionnements grace à l'aide des membres qui ont testé le programme.

 

J'attends encore un petit peu, si de nouveaux retours arrivaient, et je le proposerai en téléchargement sous format compilé .vlx et avec les fichiers source.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut Patrick_35

 

Je pensais mettre en téléchargement les fichiers LISP et DCL en clair et un VLX, le tout dans un dossier compressé (avec un petit readme).

Il n'est pas queston, bien sûr, de "cryptage", c'est juste pour qu'il soit possible de charger le programme avec un seul fichier, sans avoir à se préoccuper de ranger les DCL dans un dossier de recherche etc ...

 

C'est ce que j'avais fait pour "Helicoide" et oublié de faire pour "Res_hel",un seul fichier vlx (dans les téléchargements proposés par les membres).

À l'occasion, je demanderais à Patrick de changer ce dernier téléchargement pour y inclure les fichier LSP et DCL.

 

[Edité le 8/6/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Hello Gilles

 

Je m'incline "respectueusement" devant ton savoir

Oh Grand Maître Jedi du Lisp, VLisp & DCL :) :D :cool:

 

A mon avis, l'idéal c'est de fournir LSP+DCL & VLX ! ;)

 

Le Decapode "impressionné"

 

Autodesk Expert Elite Team

Posté(e)

Suite à un échange avec sergeluc et en m'inspirant largement de ce qu'il avait fait pour modifier tous les wblocs d'un répertoire, j'ai fait ce LISP pour utiliser "Edit_bloc" sur tous les fichiers DWG d'un répertoire (bibliothèque de wblocs).

 

NOTA : c'est avec ce LISP que j'ai remarqué l'oubli corrigé dans la version 2.3 (il faut donc charger cette nouvelle verion pour utiliser le LISP)

 

Version 1.1 (11/06/06)

 

;;; Pour lancer Edit_bloc sur tout un répertoire de wblocs
;;; À utiliser dans un dessin vierge (brouillon)
;;; Choisir l'option "Toute la collection"

(defun c:edit_bloc_rep (/ App AcDoc ModSp n lst file dir f_lst ss)
 (vl-load-com)
 (setq	App   (vlax-get-acad-object)
AcDoc (vla-get-ActiveDocument App)
ModSp (vla-get-ModelSpace acDoc)
 )

 ;; Teste la présence d'entités graphiques dans le dessin
 (if (ssget "_X")
   (progn
     (alert
"Le dessin contient des entités.
     \nCe programme doit être lancé à partir d'un dessin vierge."
     )
     (exit)
   )
 )

 ;; Teste la présence de définitions de blocs dans le dessin
 (repeat (setq n (vla-get-count (vla-get-blocks AcDoc)))
   (setq
     lst (cons	(vla-get-name
	  (vla-item (vla-get-blocks AcDoc) (setq n (1- n)))
	)
	lst
  )
   )
 )
 (if (vl-remove-if '(lambda (x) (wcmatch x "*Space*")) lst)
   (progn
     (alert
"Le dessin contient des définitions de blocs.
   \nCe programme doit être lancé à partir d'un dessin vierge."
     )
     (exit)
   )
 )

 (setq
   file (getfiled "Choisir un fichier dans le répertoire à modifier"
	   ""
	   "dwg"
	   0
 )
 )
 (if file
   (progn
     (setq dir	  (vl-filename-directory file)
    f_lst (vl-directory-files dir "*.dwg")
     )
     (mapcar '(lambda (x)
	 (setq bl (vla-InsertBlock
		    ModSp
		    (vlax-3d-point '(0 0 0))
		    x
		    1
		    1
		    1
		    0
		  )
	 )
	 (vla-erase bl)
       )
      (mapcar '(lambda (x) (strcat dir "\\" x)) f_lst)
     )
     (c:edit_bloc)
     (mapcar
'(lambda (x)
   (setq bl (vla-InsertBlock
	      ModSp
	      (vlax-3d-point '(0 0 0))
	      (vl-string-right-trim ".DWG" (strcase x))
	      1
	      1
	      1
	      0
	    )
   )
   (vla-ZoomExtents App)
   (vla-ZoomScaled App 0.9 1)
   (setq ss (vla-add (vla-get-SelectionSets AcDoc) "wbloc_ss"))
   (vla-addItems ss (vla-explode bl))
   (vla-wblock AcDoc (strcat dir "\\" x) ss)
   (vla-erase ss)
   (vla-delete ss)
   (vla-delete (vlax-ename->vla-object (entlast)))
 )
f_lst
     )
   )
 )
 (princ)
)

 

[Edité le 11/6/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonsoir Gilles

 

Il va falloir te "museler", tu es INTARISSABLE sur EDIT_BLOC ! :o

 

C'est à mon avis la 10ème version de ton programme ... :P

 

100 fois sur le métier ... ;)

 

Le Decapode "admiratif"

 

 

[Edité le 10/6/2006 par lecrabe]

Autodesk Expert Elite Team

Posté(e)

 

Bon Matin Gilles

 

Au fait la routine présentée est bien la version 2.3 du 10 Juin 2006 ? :casstet:

 

Je le pense car l'info de Mise à jour de ton message est datée du 10/06/2006 !

 

Mais tu as laissé version 2.2 en commentaire au début du code : pas grave ... :)

 

Le Decapode "DuBlocant"

 

Autodesk Expert Elite Team

Posté(e)

Suite aux remarques pertinentes de sergluc (message privé) concernant "Edit_bloc_rep" (le petit dernier), j'ai ajouté des tests pour éviter de lancer la procédure dans un fichier qui ne serait pas vierge (contenant des entités et/ou des définitions de blocs), et un zoom (étendu + échelle) avant de réenregistrer le wbloc (pour l'apparence des icones).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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

Edit_bloc (version 2.3) est désormais dans les Téléchargement proposés par les membres dans la rubrique "AutoCAD LISP et Visual LISP" sous forme d'un ZIP contenant un fichier compilé VLX, les fichiers source LISP et DCL ainsi qu'un petit fichier texte "Lisez_moi".

J'y ai adjoint Edit_bloc_rep pour modifier tous les wblocs d'un même répertoire.

 

Télécharger Edit_bloc.zip

 

Encore un grand merci à Patrick et à tous ceux qui ont aidé par leurs suggestions, remarques, tests ...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 4 semaines après...
Posté(e)

Suite à un échange avec Aviglémy, deux petits bugs ont été décelés et réparés :

 

- Si l'option "sans unités" était sélectionnée :

"Erreur: Le serveur ActiveX a renvoyé une erreur: Paramètre non facultatif"

Cette option est désormais filtrée lors de la "Mise à jour de l'échelle en cas de changement d'unité".

 

- Si les blocs contenaient des "AcDbZombieEntity" (?!):

"Erreur: Erreur Automation Fonction non permise pour cet objet externe"

Ces entités sont désormais écartées des modifications.

 

Le LISP (premier message du sujet) est modifié, pour la version dans lesTéléchargement proposés par les membres, un peu de patience, il faut que je recompile tout et que ce cher Patrick ait le temps de changer de version (Version 2.4).

 

Télécharger Edit_blod 2.4

 

[Edité le 20/7/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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

Merci pour cet outil !

je cherchais un remplacent à la commande "Civil" qui était dans Map 2006 et qui permettait de mettre les blocs à "zéro".

en plus je cherchais, hier, à attribuer d'un coup une unité d'insertion à des vieux blocs, donc oilà !

 

C'est Bred (un pote de lycée) qui m'a tuyauté sur ton lisp. Il ne dit que du bien de toi...

 

à plus Pierre

Formateur Autocad - Revit - Sketchup - Photoshop

Posté(e)

ah ui c'est toi qui me m'obstrue la vue sur mer sur la carte de France Frappr des membres de Cadxp !

Oui ça serait sympa ! Mais bon... je ne parle pas lisp couramment...

Formateur Autocad - Revit - Sketchup - Photoshop

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

Et moi si je parle pas Lisp je serai invité ?

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

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

Patrick_35,

 

Le problème vient, il me semble des mlines elles même.

Avant même d'en faire un bloc, il semble impossible de forcer la couleur d'une mline, si le code DXF change, l'objet reste de la couleur du calque sur lequel il est. :casstet:

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é