Aller au contenu

justification de texte mtext par boite de dialogue


Messages recommandés

Posté(e)

bonsoir

 

j'ai un petit LISp qui me permet de justifier les textes mtext par une boite de dialogue

rapide avec des gros boutons

il est pas moi ca c'est sur

 

 

il marchait bien sous 2005 2006 mais ne fonctionne plus ou est le bug ???

 

;//Elise Moss

;//Moss Designs

;//12/30/98

;//18-04-2001 PBO

;//www.mossdesigns.com

;//

; *** JUSTIFY1.LSP ***

;

; Changes the justification of text to:-

; Left, Center, Right, Aligned, Middle, Fit,

; Bottom left, center or right,

; Middle left, center or right, OR

; Top left, center of right

;

(defun C:JU (/

;;; a a1 a2 a3 a4 t1 m n p1 p q n1 j j0 n2 j1 j2 q1 index dummy

)

(setvar "cmdecho" 0)

;;;(graphscr)

(prompt "\n * SELECTIONNER LE TEXTE POUR CHANGER LA JUSTIFICATION...")

(setq T1 (ssget))

(setq NUM (load_dialog "justify2.dcl"))

(new_dialog "justify" NUM)

(set_tile "L" "1")

(action_tile "accept" "(do_getent)(done_dialog)")

(start_dialog)

(DO_CHANGE)

)

 

(defun DO_GETENT ()

(if (= "1" (get_tile "L"))

(setq J1 "L")

)

(if (= "1" (get_tile "C"))

(setq J1 "C")

)

(if (= "1" (get_tile "R"))

(setq J1 "R")

)

(if (= "1" (get_tile "TL"))

(setq J1 "TL")

)

(if (= "1" (get_tile "TC"))

(setq J1 "TC")

)

(if (= "1" (get_tile "TR"))

(setq J1 "TR")

)

(if (= "1" (get_tile "ML"))

(setq J1 "ML")

)

(if (= "1" (get_tile "MC"))

(setq J1 "MC")

)

(if (= "1" (get_tile "MR"))

(setq J1 "MR")

)

(if (= "1" (get_tile "BL"))

(setq J1 "BL")

)

(if (= "1" (get_tile "BC"))

(setq J1 "BC")

)

(if (= "1" (get_tile "BR"))

(setq J1 "BR")

)

)

 

(defun DO_CHANGE ()

(setq M (sslength T1)

INDEX 0

)

(repeat M

(setq A (entget (ssname T1 INDEX))

P (cdr (assoc 0 A))

)

(if (= P "TEXT")

(progn (setq J (assoc 72 A)

J2 (assoc 73 A)

P (assoc 10 A)

Q (assoc 11 A)

J0 (cdr J)

)

(if (or (= J1 "L")

(= J1 "C")

(= J1 "R")

(= J1 "M")

(= J1 "BL")

(= J1 "BC")

(= J1 "BR")

(= J1 "ML")

(= J1 "MC")

(= J1 "MR")

(= J1 "TL")

(= J1 "TC")

(= J1 "TR")

)

(if (= J0 0)

(progn (setq P1 (cdr P)

Q1 (cons (car Q) P1)

N1 (subst Q1 Q A)

)

)

(progn (setq Q1 (cdr Q)

P1 (cons (car P) Q1)

N1 (subst P1 P A)

)

)

)

)

(cond ((= J1 "L") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "C") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "R") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "BL") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "BC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "BR") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "MC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "ML") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "MR") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "TL") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 3) J2 N)))

((= J1 "TC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 3) J2 N)))

((= J1 "TR") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 3) J2 N)))

)

(entmod N)

)

)

(if (= P "MTEXT")

(progn (setq J (assoc 71 A))

(cond ((= J1 "BL") (setq N (subst '(71 . 7) J A)))

((= J1 "BC") (setq N (subst '(71 . 8) J A)))

((= J1 "BR") (setq N (subst '(71 . 9) J A)))

((= J1 "ML") (setq N (subst '(71 . 6) J A)))

((= J1 "MC") (setq N (subst '(71 . 5) J A)))

((= J1 "MR") (setq N (subst '(71 . 4) J A)))

((= J1 "TL") (setq N (subst '(71 . 1) J A)))

((= J1 "TC") (setq N (subst '(71 . 2) J A)))

((= J1 "TR") (setq N (subst '(71 . 3) J A)))

)

(entmod N)

)

)

(if (= P "ATTDEF")

(progn (setq J (assoc 72 A)

J2 (assoc 73 A)

P (assoc 10 A)

Q (assoc 11 A)

J0 (cdr J)

)

(if (or (= J1 "L")

(= J1 "C")

(= J1 "R")

(= J1 "M")

(= J1 "BL")

(= J1 "BC")

(= J1 "BR")

(= J1 "ML")

(= J1 "MC")

(= J1 "MR")

(= J1 "TL")

(= J1 "TC")

(= J1 "TR")

)

(if (= J0 0)

(progn (setq P1 (cdr P)

Q1 (cons (car Q) P1)

N1 (subst Q1 Q A)

)

)

(progn (setq Q1 (cdr Q)

P1 (cons (car P) Q1)

N1 (subst P1 P A)

)

)

)

)

(cond ((= J1 "L") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "C") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "R") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 0) J2 N)))

((= J1 "BL") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "BC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "BR") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 1) J2 N)))

((= J1 "MC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "ML") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "MR") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 2) J2 N)))

((= J1 "TL") (setq N (subst '(72 . 0) J N1)) (setq N (subst '(73 . 3) J2 N)))

((= J1 "TC") (setq N (subst '(72 . 1) J N1)) (setq N (subst '(73 . 3) J2 N)))

((= J1 "TR") (setq N (subst '(72 . 2) J N1)) (setq N (subst '(73 . 3) J2 N)))

)

(entmod N)

)

)

(setq INDEX (+ INDEX 1))

)

(prin1)

(princ " Changed ")

(princ INDEX)

(princ " text lines.")

(princ)

)

 

 

boite de dialogue si les boutons pouvait etre sur 4 lignes au lieux de 12 et sans avoir besoin du bouton ok

 

 

// JUSTIFY2.DCL

 

// AutoLISP Dialog Box Program Menu

 

justify : dialog {

label = "JUSTIFICATION DU TEXTE";

: boxed_radio_column {

label = "Please Select Menu Item....";

width = 70;

: button {

alignment = left;

fixed_width = true;

label = "HAUT GAUCHE";

key = "TL";

}

: button {

alignment = centered;

fixed_width = true;

label = "HAUT CENTRE";

key = "TC";

}

: button {

alignment = right;

fixed_width = true;

label = "HAUT DROITE";

key = "TR";

}

: button {

alignment = left;

fixed_width = true;

label = "MILIEU GAUCHE";

key = "MR";

}

: button {

alignment = centered;

fixed_width = true;

label = "MILIEU CENTRE";

key = "MC";

}

: button {

alignment = right;

fixed_width = true;

label = "MILIEU DROITE";

key = "ML";

}

: button {

alignment = left;

fixed_width = true;

label = "GAUCHE";

key = "L";

}

: button {

alignment = centered;

fixed_width = true;

label = "CENTRE";

key = "C";

}

: button {

alignment = right;

fixed_width = true;

label = "DROITE";

key = "R";

}

: button {

alignment = left;

fixed_width = true;

label = "BAS GAUCHE";

key = "BL";

}

: button {

alignment = centered;

fixed_width = true;

label = "BAS CENTRE";

key = "BC";

}

: button {

alignment = right;

fixed_width = true;

label = "BAS DROITE";

key = "BR";

}

// : boxed_column {

// label = "POINT D'INSERTION";

// key = "BR";

// }

 

}

spacer;

ok_cancel;

}

 

[Edité le 12/11/2007 par PHILPHIL]

 

[Edité le 12/11/2007 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

Je suis très étonné que ce LISP ait pu marcher en l'état.

Il est prévu pour fonctionner avec des boutons radio et dans la boite de dialogue, à l'intérieur d'une boxed_radio_column on trouve des button au lieu de radio_button, ce qui ne retourne pas la même chose en cas d'activation.

 

Bref, j'ai remis dans la boite des radio_button, et un peu "nettoyé" le LISP (ajout d'un unload_dialog absent, suppression de lignes inutiles ou redondantes, déclaration des variables)

 

Ça semble fonctionner (pas testé en profondeur)

 

Le LISP

 

					;//Elise Moss
				;//Moss Designs
				;//12/30/98
				;//18-04-2001 PBO
				;//www.mossdesigns.com
				;//
				; *** JUSTIFY1.LSP ***
				;
				; Changes the justification of text to:-
				; Left, Center, Right, Aligned, Middle, Fit,
				; Bottom left, center or right,
				; Middle left, center or right, OR
				; Top left, center of right
				;
(defun c:ju (/ dcl_ig j1)
 (prompt
   "\n * SELECTIONNER LE TEXTE POUR CHANGER LA JUSTIFICATION..."
 )
 (if (setq T1 (ssget '((0 . "*TEXT,ATTDEF"))))
   (progn
     (setq dcl_id (load_dialog "justify3.dcl"))
     (if (not (new_dialog "justify" dcl_id))
(exit)
     )
     (mode_tile "accept" 1)
     (foreach k '("L" "C" "R" "TL" "TC" "TR" "ML" "MC" "MR" "BL" "BC" "BR")
(action_tile
  k
  (strcat "(setq j1 "
	  (vl-prin1-to-string k)
	  ")(done_dialog)"
  )
)
     )
     ;(action_tile "accept" "(done_dialog)")
     (action_tile "cancel" "(setq j1 nil)")
     (start_dialog)
     (unload_dialog dcl_id)
     (and j1 (do_change t1 j1))
   )
 )
)

(defun DO_CHANGE (T1 J1 / M INDEX A P J J2 Q J0 P1 Q1 N1)
 (setq	M     (sslength T1)
INDEX 0
 )
 (repeat M
   (setq A (entget (ssname T1 INDEX))
  P (cdr (assoc 0 A))
   )
   (if (= P "MTEXT")
     (progn
(setq J (assoc 71 A))
(cond
  ((= J1 "BL") (setq N (subst '(71 . 7) J A)))
  ((= J1 "BC") (setq N (subst '(71 . 8) J A)))
  ((= J1 "BR") (setq N (subst '(71 . 9) J A)))
  ((= J1 "ML") (setq N (subst '(71 . 4) J A)))
  ((= J1 "MC") (setq N (subst '(71 . 5) J A)))
  ((= J1 "MR") (setq N (subst '(71 . 6) J A)))
  ((= J1 "TL") (setq N (subst '(71 . 1) J A)))
  ((= J1 "TC") (setq N (subst '(71 . 2) J A)))
  ((= J1 "TR") (setq N (subst '(71 . 3) J A)))
)
     )
     (progn
(if (= P "TEXT")
  (setq F 73)
  (setq F 74)
  )
(setq J	 (assoc 72 A)
      J2 (assoc F A)
      P	 (assoc 10 A)
      Q	 (assoc 11 A)
      J0 (cdr J)
)
(if (= (cdr J) (cdr J2) 0)
  (setq	P1 (cdr P)
	Q1 (cons (car Q) P1)
	N1 (subst Q1 Q A)
  )
  (setq	Q1 (cdr Q)
	P1 (cons (car P) Q1)
	N1 (subst P1 P A)
  )
)
(cond
  ((= J1 "L")
   (setq N (subst (cons F 0) J2 (subst '(72 . 0) J N1)))
  )
  ((= J1 "C")
   (setq N (subst (cons F 0) J2 (subst '(72 . 1) J N1)))
  )
  ((= J1 "R")
   (setq N (subst (cons F 0) J2 (subst '(72 . 2) J N1)))
  )
  ((= J1 "BL")
   (setq N (subst (cons F 1) J2 (subst '(72 . 0) J N1)))
  )
  ((= J1 "BC")
   (setq N (subst (cons F 1) J2 (subst '(72 . 1) J N1)))
  )
  ((= J1 "BR")
   (setq N (subst (cons F 1) J2 (subst '(72 . 2) J N1)))
  )
  ((= J1 "ML")
   (setq N (subst (cons F 2) J2 (subst '(72 . 0) J N1)))
  )
  ((= J1 "MC")
   (setq N (subst (cons F 2) J2 (subst '(72 . 1) J N1)))
  )
  ((= J1 "MR")
   (setq N (subst (cons F 2) J2 (subst '(72 . 2) J N1)))
  )
  ((= J1 "TL")
   (setq N (subst (cons F 3) J2 (subst '(72 . 0) J N1)))
  )
  ((= J1 "TC")
   (setq N (subst (cons F 3) J2 (subst '(72 . 1) J N1)))
  )
  ((= J1 "TR")
   (setq N (subst (cons F 3) J2 (subst '(72 . 2) J N1)))
  )
)
     )
   )
(entmod N)
   (setq INDEX (+ INDEX 1))
 )
 (prin1)
 (princ " Changed ")
 (princ INDEX)
 (princ " text lines.")
) 

 

Le DCL, à enregistrer sous Justify3.dcl

 

 // JUSTIFY3.DCL

// AutoLISP Dialog Box Program Menu
justify : dialog {
label = "JUSTIFICATION DU TEXTE";
: boxed_row {
key = "JUST";
:column{
: button {
width = 12;
label = "HAUT GAUCHE";
key = "TL";
allow_accept=true;
}
: button {
width = 12;
label = "MILIEU GAUCHE";
key = "ML";
allow_accept=true;
}
: button {
width = 12;
label = "GAUCHE";
key = "L";
allow_accept=true;
}
: button {
width = 12;
label = "BAS GAUCHE";
key = "BL";
allow_accept=true;
}
}
:column{
: button {
width = 12;
label = "HAUT CENTRE";
key = "TC";
allow_accept=true;
}
: button {
width = 12;
label = "MILIEU CENTRE";
key = "MC";
allow_accept=true;
}
: button {
width = 12;
label = "CENTRE";
key = "C";
allow_accept=true;
}
: button {
width = 12;
label = "BAS CENTRE";
key = "BC";
allow_accept=true;
}
}
:column{
: button {
width = 12;
label = "HAUT DROITE";
key = "TR";
allow_accept=true;
}
: button {
width = 12;
label = "MILIEU DROITE";
key = "MR";
allow_accept=true;
}
: button {
width = 12;
label = "DROITE";
key = "R";
allow_accept=true;
}
: button {
width = 12;
label = "BAS DROITE";
key = "BR";
allow_accept=true;
}
}
}
spacer;
cancel_button;
} 

 

[Edité le 13/11/2007 par (gile)]

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

Posté(e)

SALUT GILE

 

merci

 

je viens de tester

petit soucis

le fait de changer la justification du texte ou mtext

change la position du texte ou mtxt

 

contrairement a la fonction"justifiertexte"

est un parametre autocad a changer ??

 

mais il y a peut etre une piste a suivre certains voudront peut etre

bouger le texte en fonction de la justification

et d'autre seulement changer la justification du texte sans le bouger

 

ca a son importance une fois que le "mtext" a un ou des "leader"

 

avec les "radio_button" dans le DCL il y a un truc bizarre

on peut cocher trois boutons a la fois un par collone

 

repasser avec de "button" serait plus simple et pratique et plus rapide

un seul clic sur le bon bouton sans passer par le bouton "ok"

 

bonne journée

 

phil

 

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

le fait de changer la justification du texte ou mtext

change la position du texte ou mtxt

 

Je n'ai rien modifié (juste nettoyé) dans le LISP qui modifie la justification, ça devait déjà fonctionner come ça avant, non ?

 

repasser avec de "button" serait plus simple et pratique et plus rapide

 

Comme dit plus haut, les boutons et radio boutons n'ont pas le même effet : les premiers déclencent une action, les seconds retourne "1" ou "0" selon qu'ils sont cochés ou non.

Revenir à des boutons supposerait reprendre le LISP en conséquence, je verrais si j'ai le temps.

 

En attendant, la fenêtre des Propriétés le fait bien, non ? ;)

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

Posté(e)

loll ouiiiii la fenetre de propriete le fait

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Re,

 

J'ai modifié le code, : remplacé les boutons radio par des boutons et corrigé quelques erreurs, ça semble bien fonctionner maintenant.

 

Il faut tout recharger LISP et DCL.

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

Posté(e)

SALUT GILE

 

ca marche tres bien

 

c'est la fonction des express tools "TJUST" qui permet de rejustifier les "texte" "mtext"

sans qu'ils ne bougent

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

J'ai finalement ré-écrit le LISP à ma façon, je pense qu'il correspond maintenant à ta demande, j'ai rajouté une case à cocher (toggle) pour choisir si le point d'insertion est fixe ou non (auquel cas c'est le texte qui ne bouge pas).

 

Ça semble fonctionner quelque soit la rotation et le SCO de l'objet.

 

Je reste étonné que le code que tu donnes au début du sujet ait pu marcher dans une quelconque version.

 

Le LISP

 

(defun c:ju (/ ss dcl_ig just ins)
(if (setq ss (ssget '((0 . "*TEXT,ATTDEF"))))
   (progn
     (or (getenv "PointInsertionFixe")
  (setenv "PointInsertionFixe" "1")
  )
     (setq dcl_id (load_dialog "justify.dcl"))
     (if (not (new_dialog "justify" dcl_id))
(exit)
     )
     (set_tile "ins" (getenv "PointInsertionFixe"))
     (foreach k '("G" "C" "D" "HG" "HC" "HD" "MG" "MC" "MD" "BG" "BC" "BD")
(action_tile
  k
  (strcat "(setq just "
	  (vl-prin1-to-string k)
	  ")(if (= \"1\" (get_tile \"ins\"))
	  (setq ins T) (setq ins nil)) (done_dialog)"
  )
)
     )
     (action_tile "cancel" "(setq just nil)")
     (start_dialog)
     (unload_dialog dcl_id)
     (if ins
(setenv "PointInsertionFixe" "1")
(setenv "PointInsertionFixe" "0")
)
  (and just (justify ss just ins))
   )
 )
 (princ)
)

(defun justify (ss just ins / n elst org pos oj nj x y ang mat dep vert)
 (repeat (setq n (sslength ss))
   (setq elst (entget (ssname ss (setq n (1- n))))
  org  (cdr (assoc 10 elst))
   )
   (if	(= (cdr (assoc 0 elst)) "MTEXT")
     (progn
(setq oj   (cdr (assoc 71 elst))
      pos  (vl-position
	     just
	     '("HG" "HC" "HD" "MG" "MC" "MD" "BG" "BC" "BD")
	   )
      elst (subst (cons 71 (1+ pos)) (assoc 71 elst) elst)
)
(entmod elst)
(if (not ins)
  (progn
    (setq elst (entget (cdr (assoc -1 elst)))
	  nj   (cdr (assoc 71 elst))
	  y    (cond
		 ((member oj '(1 2 3))
		  (cond
		    ((			    ((			    (T (- (cdr (assoc 43 elst))))
		  )
		 )
		 ((member oj '(4 5 6))
		  (cond
		    ((			    ((			    (T (/ (cdr (assoc 43 elst)) -2.))
		  )
		 )
		 ((member oj '(7 8 9))
		  (cond
		    ((			    ((			    (T 0)
		  )
		 )
	       )
	  x    (cond
		 ((member oj '(1 4 7))
		  (cond
		    ((member nj '(1 4 7)) 0)
		    ((member nj '(2 5 8)) (/ (cdr (assoc 42 elst)) 2.))
		    (T (cdr (assoc 42 elst)))
		  )
		 )
		 ((member oj '(2 5 8))
		  (cond
		    ((member nj '(1 4 7)) (/ (cdr (assoc 42 elst)) -2.))
		    ((member nj '(2 5 8)) 0)
		    (T (/ (cdr (assoc 42 elst)) 2.))
		  )
		 )
		 ((member oj '(3 6 9))
		  (cond
		    ((member nj '(1 4 7)) (- (cdr (assoc 42 elst))))
		    ((member nj '(2 5 8)) (/ (cdr (assoc 42 elst)) -2.))
		    (T 0)
		  )
		 )
	       )
    )
    (setq ang (angle '(0 0 0)
		     (trans (cdr (assoc 11 elst)) 0 (cdr (assoc 210 elst)))
	      )
	  mat (mxm (mapcar (function (lambda (v)
				       (trans v 0 (cdr (assoc 210 elst)))
				     )
			   )
			   '((1 0 0) (0 1 0) (0 0 1))
		   )
		   (list (list (cos ang) (- (sin ang)) 0)
			 (list (sin ang) (cos ang) 0)
			 '(0 0 1)
		   )
	      )
	  dep (mxv mat (list x y 0.0))
    )
    (entmod
      (subst (cons 10
		   (mapcar '+ (cdr (assoc 10 elst)) dep)
	     )
	     (assoc 10 elst)
	     elst
      )
    )
  )
)
     )
     (progn
(if (= (cdr (assoc 0 elst)) "TEXT")
  (setq vert 73)
  (setq vert 74)
)
(if (= (cdr (assoc 72 elst)) (cdr (assoc vert elst)) 0)
  (setq
    elst (subst (cons 11 org) (assoc 11 elst) elst)
  )
  (setq
    elst (subst (cons 10 (cdr (assoc 11 elst))) (assoc 10 elst) elst)
  )
)
(setq elst
       (subst (cons vert
		    (cond
		      ((wcmatch just "B*") 1)
		      ((wcmatch just "M*") 2)
		      ((wcmatch just "H*") 3)
		      (T 0)
		    )
	      )
	      (assoc vert elst)
	      (subst (cons 72
			   (cond
			     ((wcmatch just "*G") 0)
			     ((wcmatch just "*C") 1)
			     ((wcmatch just "*D") 2)
			   )
		     )
		     (assoc 72 elst)
		     elst
	      )
       )
)
(entmod elst)
(if (not ins)
  (progn
    (setq elst (entget (cdr (assoc -1 elst))))
    (if	(= (cdr (assoc 72 elst)) (cdr (assoc vert elst)) 0)
      (entmod (subst (cons 10 org) (assoc 10 elst) elst))
      (progn
	(setq dep (mapcar '- org (cdr (assoc 10 elst))))
	(entmod	(subst (cons 11 (mapcar '+ (cdr (assoc 11 elst)) dep))
		       (assoc 11 elst)
		       elst
		)
	)
      )
    )
  )
)
     )
   )
 )
)

;; transpose une matrice (Doug Wilson)
(defun trp (m)
 (apply 'mapcar (cons 'list m))
)

;; Applique une matrice de transformation à un vecteur (Vladimir Nesterovsky)
(defun mxv (m v)
 (mapcar (function (lambda (r) (apply '+ (mapcar '* r v))))
  m
 )
)

;; Multiplie deux matrices (Vladimir Nesterovsky)
(defun mxm (m q)
 (mapcar (function (lambda (r) (mxv (trp q) r))) m)
) 

 

Le DCL renommé justify.dcl

 

 // Justify.dcl

justify : dialog {
label = "Justification des textes";
: boxed_row {
:column{
: button {
width = 12;
label = "Haut Gauche";
key = "HG";
allow_accept=true;
}
: button {
width = 12;
label = "Milieu Gauche";
key = "MG";
allow_accept=true;
}
: button {
width = 12;
label = "Gauche";
key = "G";
allow_accept=true;
}
: button {
width = 12;
label = "Bas Gauche";
key = "BG";
allow_accept=true;
}
}
:column{
: button {
width = 12;
label = "Haut Centre";
key = "HC";
allow_accept=true;
}
: button {
width = 12;
label = "Milieu Centre";
key = "MC";
allow_accept=true;
}
: button {
width = 12;
label = "Centre";
key = "C";
allow_accept=true;
}
: button {
width = 12;
label = "Bas Centre";
key = "BC";
allow_accept=true;
}
}
:column{
: button {
width = 12;
label = "Haut Droite";
key = "HD";
allow_accept=true;
}
: button {
width = 12;
label = "Milieu Droite";
key = "MD";
allow_accept=true;
}
: button {
width = 12;
label = "Droite";
key = "D";
allow_accept=true;
}
: button {
width = 12;
label = "Bas Droite";
key = "BD";
allow_accept=true;
}
}
}
spacer;
:toggle{
label = "Point d'insertion fixe";
key = "ins";
}
spacer;
cancel_button;
} 

 

[Edité le 14/11/2007 par (gile)]

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

Posté(e)

ok merci

 

ca marche

 

avec tous les LISp que tu as fait a droite a guauche suivant les demande tu peux completer ta propre liste sur ta page non ???

 

ca doit en interesser d'autres

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

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é