LISP Rotation txt

LISP Rotation txt

f_vacque
Explorer Explorer
815 Visites
7 Réponses
Message 1 sur 8

LISP Rotation txt

f_vacque
Explorer
Explorer

Bonjour  tous,

Je souhaiterai créer un lisp qui me permette en sélectionnant un texte de le tourner en cliquant 2 points, en ayant activé l'accroche objet proche et qu'il se mette de la couleur "du calque" .

Est ce que quelqu'un pourrait m'aider ? 😃

J'ai ce lisp qui fonctionne sur autocad mais je voudrais qu'il fonctionne sur ZWCAD:

(Defun C:tz (/ *error*);Define new command line function
    ;DEBUT TRAPPE ERREUR (SORTIE ESCAPE)
    (defun *error* (msg)
      (if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))
          (princ (strcat "\nError: " msg))
      )
       (setvar "osmode" oldosmode)
       (princ)
    )
   ;FIN TRAPPE ERREUR
(setq oldosmode (getvar "osmode"))
 
(setq E null)
 
  (while (= E null)
  (command "-accrobj" "pro")
  (princ "\nSélectionnez un objet TEXTE")
(setq na (acet-ui-single-select '((-4 . "<OR")
                           (0 . "TEXT")
           (-4 . "<AND")
                            (0 . "POLYLINE")
                            (-4 . "<NOT")
                              (-4 . "&")
                              (70 . 112)
                            (-4 . "NOT>")
                           (-4 . "AND>")
                          (-4 . "OR>")
                                  )
                         T
         );acet-ui-single-select
);setq
(if na
  (progn
  
   (Command "changer" na "" pause "" "" pause "")
   (command "-accrobj" "")
   (command "deplacer" "p" "" "@" pause)
   (Command "changer" na  "" "p"  "co"  "ducalque" "")
   
   );progn
    );if
 
 (if (not na)
   (progn
     (setq E "fin")
     ;(command "-accrobj" "nod,int,ext")
     (setvar "osmode" oldosmode)
     );progn
   );if
 (princ)
 
       
    );while
 
 
);Defun
 
 
(Defun C:tzx (/ *error*);Define new command line function
    ;DEBUT TRAPPE ERREUR (SORTIE ESCAPE)
    (defun *error* (msg)
      (if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))
          (princ (strcat "\nError: " msg))
      )
       (setvar "osmode" oldosmode)
       (princ)
    )
   ;FIN TRAPPE ERREUR
(setq oldosmode (getvar "osmode"))
 
(setq E null)
 
  (while (= E null)
  (command "-accrobj" "pro")
  (princ "\nSélectionnez un objet TEXTE")
(setq na (acet-ui-single-select '((-4 . "<OR")
                           (0 . "TEXT")
           (-4 . "<AND")
                            (0 . "POLYLINE")
                            (-4 . "<NOT")
                              (-4 . "&")
                              (70 . 112)
                            (-4 . "NOT>")
                           (-4 . "AND>")
                          (-4 . "OR>")
                                  )
                         T
         );acet-ui-single-select
);setq
(if na
  (progn
    (command "copier" na "" "@" "@")
   (Command "changer" na "" pause "" "" pause "")
   (command "-accrobj" "")
    (command "deplacer" "p" "" "@" pause)
 
    );progn
    );if
 
 (if (not na)
   (progn
     (setq E "fin")
     ;(command "-accrobj" "nod,int,ext")
     (setvar "osmode" oldosmode)
     );progn
   );if
 (princ)
 
       
    );while
 
 
);Defun
 
Merci beaucoup pour votre aide!
 
0 J'aime
Solutions acceptées (1)
816 Visites
7 Réponses
Replies (7)
Message 2 sur 8

patrick.emin
Alumni
Alumni

Bonjour @f_vacque Zwcad n'est pas un logiciel Autodesk, nous ne pouvons pas vous répondre sur ce thème, mais si vous avez d'autres questions concernant votre LISP dans AutoCAD, nous vous répondrons avec plaisir.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime
Message 3 sur 8

f_vacque
Explorer
Explorer

Bonjour,

Merci quand même pour la réponse.

Bonne journée.

0 J'aime
Message 4 sur 8

CADaSchtroumpf
Advisor
Advisor

Bonjour,

Sans connaître Zwcad, je pense que c'est la fonction  (acet-ui-single-select .....) qui pose problème.

C'est une fonction qui fait partie d'une bibliothèque d'Autocad où les fonctions sont souvent interdépendantes. Si celles-ci ne sont pas chargées au démarrage cela va échoué...

 

Tu peux tenter de changer dans ton code (pour les 2 fonctions: TZ etTZX)

(setq na (acet-ui-single-select '((-4 . "<OR")
                           (0 . "TEXT")
           (-4 . "<AND")
                            (0 . "POLYLINE")
                            (-4 . "<NOT")
                              (-4 . "&")
                              (70 . 112)
                            (-4 . "NOT>")
                           (-4 . "AND>")
                          (-4 . "OR>")
                                  )
                         T
         );acet-ui-single-select
);setq

par

(setq na  (ssget "_+.:E:S" '((-4 . "<OR")
                           (0 . "TEXT")
           (-4 . "<AND")
                            (0 . "POLYLINE")
                            (-4 . "<NOT")
                              (-4 . "&")
                              (70 . 112)
                            (-4 . "NOT>")
                           (-4 . "AND>")
                          (-4 . "OR>")
                                  )
         )
);setq
0 J'aime
Message 5 sur 8

f_vacque
Explorer
Explorer
Bonjour,



Super merci beaucoup cela fonctionne.



Seul bémol lorsque j'oriente mon texte celui-ci se tourne d'environ 100 gr par rapport à la direction demandé.

De quoi cela peut-il venir ?



Ci-dessous le lisp mis à jour :



(Defun C:tz (/ *error*);Define new command line function

;DEBUT TRAPPE ERREUR (SORTIE ESCAPE)

(defun *error* (msg)

(if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))

(princ (strcat "\nError: " msg))

)

(setvar "osmode" oldosmode)

(princ)

)

;FIN TRAPPE ERREUR

(setq oldosmode (getvar "osmode"))



(setq E null)



(while (= E null)

(command "-accrobj" "pro")

(princ "\nSélectionnez un objet TEXTE")

(setq na (ssget "_+.:E:S" '((-4 . "
(0 . "TEXT")

(-4 . "
(0 . "POLYLINE")

(-4 . "
(-4 . "&")

(70 . 112)

(-4 . "NOT>")

(-4 . "AND>")

(-4 . "OR>")

)

)

);setq

(if na

(progn



(Command "changer" na "" pause "" "" pause "")

(command "-accrobj" "")

(command "deplacer" "p" "" "@" pause)

(Command "changer" na "" "p" "co" "ducalque" "")



);progn

);if



(if (not na)

(progn

(setq E "fin")

;(command "-accrobj" "nod,int,ext")

(setvar "osmode" oldosmode)

);progn

);if

(princ)





);while



);Defun





(Defun C:tzx (/ *error*);Define new command line function

;DEBUT TRAPPE ERREUR (SORTIE ESCAPE)

(defun *error* (msg)

(if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))

(princ (strcat "\nError: " msg))

)

(setvar "osmode" oldosmode)

(princ)

)

;FIN TRAPPE ERREUR

(setq oldosmode (getvar "osmode"))



(setq E null)



(while (= E null)

(command "-accrobj" "pro")

(princ "\nSélectionnez un objet TEXTE")

(setq na (ssget "_+.:E:S" '((-4 . "
(0 . "TEXT")

(-4 . "
(0 . "POLYLINE")

(-4 . "
(-4 . "&")

(70 . 112)

(-4 . "NOT>")

(-4 . "AND>")

(-4 . "OR>")

)

)

);setq

(if na

(progn

(command "copier" na "" "@" "@")

(Command "changer" na "" pause "" "" pause "")

(command "-accrobj" "")

(command "deplacer" "p" "" "@" pause)



);progn

);if



(if (not na)

(progn

(setq E "fin")

;(command "-accrobj" "nod,int,ext")

(setvar "osmode" oldosmode)

);progn

);if

(princ)





);while



);Defun


0 J'aime
Message 6 sur 8

CADaSchtroumpf
Advisor
Advisor
Solution acceptée

Essaye cette version (revue et internationalisée), voir si ça fonctionne mieux...

(Defun C:tz (/ *error* oldosmode na)
	(defun *error* (msg)
		(if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))
			(princ (strcat "\nError: " msg))
		)
		(setvar "osmode" oldosmode)
		(princ)
	)
	(setq oldosmode (getvar "osmode"))
	(princ "\nSélectionnez un objet TEXTE")
	(while
		(setq na
			(ssget "_+.:E:S"
				'(
					(-4 . "<OR")
						(0 . "TEXT")
						(-4 . "<AND")
							(0 . "POLYLINE")
							(-4 . "<NOT")
								(-4 . "&")
								(70 . 112)
							(-4 . "NOT>")
						(-4 . "AND>")
					(-4 . "OR>")
				)
			)
		);setq
		(setq na (ssname na 0))
		(setvar "osmode" 512)
		(Command "_.change" na "" pause "" "" pause "")
		(setvar "osmode" 0)
		(command "_.move" "_previous" "" "@" pause)
		(Command "_.change" na "" "_properties" "_color" "_bylayer" "")
		(princ "\nSélectionnez un objet TEXTE")
	)
	(setvar "osmode" oldosmode)
	(prin1)
)
(Defun C:tzx (/ *error* oldosmode na)
	(defun *error* (msg)
		(if (not (member msg '("console break" "Function cancelled" "quit / exit abord")))
			(princ (strcat "\nError: " msg))
		)
		(setvar "osmode" oldosmode)
		(princ)
	)
	(setq oldosmode (getvar "osmode"))
	(princ "\nSélectionnez un objet TEXTE")
	(while
		(setq na
			(ssget "_+.:E:S"
				'(
					(-4 . "<OR")
						(0 . "TEXT")
						(-4 . "<AND")
							(0 . "POLYLINE")
							(-4 . "<NOT")
								(-4 . "&")
								(70 . 112)
							(-4 . "NOT>")
						(-4 . "AND>")
					(-4 . "OR>")
				)
			)
		);setq
		(setq na (ssname na 0))
		(setvar "osmode" 512)
		(command "_.copy" na "" "@" "@")
		(Command "_.change" na "" pause "" "" pause "")
		(setvar "osmode" 0)
		(command "_.move" "_previous" "" "@" pause)
		(princ "\nSélectionnez un objet TEXTE")
	)
	(setvar "osmode" oldosmode)
	(prin1)
)

@f_vacque  a écrit :

Seul bémol lorsque j'oriente mon texte celui-ci se tourne d'environ 100 gr par rapport à la direction demandé.

De quoi cela peut-il venir ?

 

Le mode ORTHO est actif? Est ce que la version que je propose a encore ce défaut?

0 J'aime
Message 7 sur 8

f_vacque
Explorer
Explorer
Salut,



Merci pour ton retour.

Non le mode ORTHO n'est pas activer malheureusement ça vient pas de ça !



J'ai l'impression que quand je sélectionne le premier point, il ajoute d'office une rotation à 90 degré.



Concernant le nouveau programme envoyé, il ne fonctionne pas dès que je veux sélectionner un texte il ne le prend pas et me renvoi comme message : « incorrect type - nil »



Encore merci beaucoup pour ton aide.



Fabien


0 J'aime
Message 8 sur 8

patrick.emin
Alumni
Alumni

Bonjour @f_vacque 

La communauté a essayé de répondre à votre question. Si vous pensez qu'une ou plusieurs de ces réponses vous aident, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Si nos équipes de support technique ont pu vous apporter une solution ou contribuer significativement à vous aider en dehors de ce forum, pouvez vous partager ici la solution trouvée et cliquer sur le bouton  APPROUVER LA SOLUTION  de façon qu'elle bénéficie à la communauté?
Merci.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime