Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

j'utile ssf.lsp plutot de le filtre rapide,

 

question : si je choisi une entité ayant la couleur DuCalque, le programme

renvoie [surligneur] erreur: liste SSGET incorrecte[/surligneur], ce qui est normal car il n'a pas de code dxf 62, n'y a t'il pas un moyen d'y remédier, idem pour un bloc qui a la couleur DuBloc ?

 

Merci et A+

Posté(e)

Non, tu n'as pas fais une erreur, quand on fait un programme on peut faire des oublis, et je pense que les tests fait par d'autre permette à faire progresser les programmes.

 

un exemple : souvent, quant on fais un programme on le teste dans un dessin neuf, donc dans le SCG, et on oublie souvent que dans un dessin on est dans un SCU.

 

J'ai d'autres questions, mais c'est bientot le week end,

 

A+

Posté(e)

dans le zip que j'ai téléchargé,

 

est ce que le LSP (du 05-07-2007) est mis à jour par rapport au VLX (du 19-10-2007)

 

pourquoi, parce que dans l'ancienne version, javais rajouté

 

Style de texte

Valeur de texte

Hauteur de texte

 

et c'etait bien pratique

 

 

A+

 

Posté(e)

Salut,

 

sS le LISP s'appelle bien SSFilter.lsp et pas ssf.lsp, c'est bien le bon. Mon erreur ètait de m'être trompé de fichier quand j'ai fait la compilation et la mise en ligne.

 

Le nouveau VLX est fait avec SSFilter.lsp

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

Posté(e)

encore moi

 

j'ai essayé de rajouter dans le nouveau ssfilter (çà marchais dans l'autre version) :

 

  spacer;
 :toggle{
   label="Style du texte";
   key="sty";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Valeur du texte";
   key="val";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Hauteur du texte";
   key="ht";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }

 

dans le dcl

 

et

 

     (and (= \"1\" (get_tile \"sty\"))
     (setq lst (cons 7 lst))
   )
   (and (= \"1\" (get_tile \"val\"))
     (setq lst (cons 1 lst))
   )
   (and (= \"1\" (get_tile \"ht\"))
     (setq lst (cons 40 lst))
   )

 

dans le lsp

 

ces 3 commandes ne fonctionnent pas . . .

 

je ne sai pas pourquoi.

 

Bon WE et à +

Posté(e)

Salut,

 

tu n'as pa du les placer où il faut

 

le DCL

 

ssfilter_box:dialog{
 label="Propriétés";
 :toggle{
   label="Type d'entité";
   key="ent";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Calque";
   key="lay";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Couleur";
   key="col";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Type de ligne";
   key="typ";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
 spacer;
 :toggle{
   label="Epaisseur de ligne";
   key="wid";
   value="0";
   fixed_width=true;
   allow_accept=true;
 }
spacer;
:toggle{
label="Style du texte";
key="sty";
value="0";
fixed_width=true;
allow_accept=true;
}
spacer;
:toggle{
label="Valeur du texte";
key="val";
value="0";
fixed_width=true;
allow_accept=true;
}
spacer;
:toggle{
label="Hauteur du texte";
key="ht";
value="0";
fixed_width=true;
allow_accept=true;
}
 spacer;
 ok_cancel;
} 

 

le LISP (corrigé)

 

(defun ssfilter_box (/ dcl_id lst)
 (setq dcl_id (load_dialog "ssfilter.dcl"))
 (if (not (new_dialog "ssfilter_box" dcl_id))
   (exit)
 )
 (action_tile
   "accept"
   "(and (= \"1\" (get_tile \"wid\"))
     (setq lst (cons 370 lst))
   )
   (and	(= \"1\" (get_tile \"typ\"))
(setq lst (cons 6 lst))
   )
   (and (= \"1\" (get_tile \"col\"))
     (setq lst (cons 62 lst))
   )
   (and	(= \"1\" (get_tile \"lay\"))
     (setq lst (cons 8 lst))
   )
   (and (= \"1\" (get_tile \"ent\"))
     (setq lst (cons 0 lst))
   )
   (and (= \"1\" (get_tile \"sty\"))
     (setq lst (cons 7 lst))
   )
   (and (= \"1\" (get_tile \"val\"))
     (setq lst (cons 1 lst))
   )
   (and (= \"1\" (get_tile \"ht\"))
     (setq lst (cons 40 lst))
   )
   (done_dialog)"
 )
 (action_tile "cancel" "(setq lst nil)")
 (start_dialog)
 (unload_dialog dcl_id)
 lst
)


(defun c:ssf (/ ss ent lst flst n elst)
 (and
   (or
     (setq ss (cadr (ssgetfirst)))
     (setq ss (ssget))
   )
   (setq lst (ssfilter_box))
   (repeat (setq n (sslength ss))
     (setq elst (cons (entget (ssname ss (setq n (1- n)))) elst))
     )
   (setq flst
   (append
     (cons '(-4 . "[b]		   (apply 'append
		  (mapcar '(lambda (x)
			     (append (cons '(-4 . "[b]						   (mapcar '(lambda (y)
						      (assoc x y)
						    )
						   elst
					   )
				     )
				     (list '(-4 . "OR>"))
			     )
			   )
			  lst
		  )
	   )
     )
     (list '(-4 . "AND>"))
   )
   )
   (sssetfirst nil (ssget "_X" flst))
 )
 (princ)
) 

 

[Edité le 22/10/2007 par (gile)]

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

Posté(e)

Salut,

 

C'est CADxp qui interprète les

 

Attention, si tu utilises un filtre sur les propriétés spécifiques aux textes (style de texte, valeur ou hauteur) la sélection de base ne doit contenir que des textes, sinon tu auras un message d'erreur : liste SSGET incorrecte.

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

Posté(e)

Pour éviter l'erreur citée ci dessus, on peut évaluer le contenu de la sélection de base et "griser" les cases "texte" si la sélection ne contient pas que des textes (ou mtextes). Le DCL est inchangé.

 

(defun ssfilter_box (text / dcl_id lst)
 (setq dcl_id (load_dialog "ssfilter.dcl"))
 (if (not (new_dialog "ssfilter_box" dcl_id))
   (exit)
 )
 (if (not text)
   (foreach tile '("sty" "val" "ht")
     (mode_tile tile 1)
     )
   )
 (action_tile
   "accept"
   "(and (= \"1\" (get_tile \"wid\"))
(setq lst (cons 370 lst))
)
(and (= \"1\" (get_tile \"typ\"))
(setq lst (cons 6 lst))
)
(and (= \"1\" (get_tile \"col\"))
(setq lst (cons 62 lst))
)
(and (= \"1\" (get_tile \"lay\"))
(setq lst (cons 8 lst))
)
(and (= \"1\" (get_tile \"ent\"))
(setq lst (cons 0 lst))
)
(and (= \"1\" (get_tile \"sty\"))
(setq lst (cons 7 lst))
)
(and (= \"1\" (get_tile \"val\"))
(setq lst (cons 1 lst))
)
(and (= \"1\" (get_tile \"ht\"))
(setq lst (cons 40 lst))
)
(done_dialog)"
 )
 (action_tile "cancel" "(setq lst nil)")
 (start_dialog)
 (unload_dialog dcl_id)
 lst
)


(defun c:ssf (/ ss ent lst flst n elst)
 (and
   (or
     (setq ss (cadr (ssgetfirst)))
     (setq ss (ssget))
   )
   (repeat (setq n (sslength ss))
     (setq elst (cons (entget (ssname ss (setq n (1- n)))) elst))
   )
   (if	(vl-every '(lambda (x)
	     (wcmatch (cdr (assoc 0 x)) "*TEXT")
	   )
	  elst
)
     (setq lst (ssfilter_box T))
     (setq lst (ssfilter_box nil))
   )
   (setq flst
   (append
     (cons '(-4 . "[b]		   (apply 'append
		  (mapcar '(lambda (x)
			     (append (cons '(-4 . "[b]						   (mapcar '(lambda (y)
						      (assoc x y)
						    )
						   elst
					   )
				     )
				     (list '(-4 . "OR>"))
			     )
			   )
			  lst
		  )
	   )
     )
     (list '(-4 . "AND>"))
   )
   )
   (sssetfirst nil (ssget "_X" flst))
 )
 (princ)
) 

 

[Edité le 22/10/2007 par (gile)]

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

Posté(e)

Merci,

 

penses seulement à supprimer le 2 à [surligneur] "ssfilter2.dcl"[/surligneur] sinon on obtien ; erreur: quitter / sortir abandon si tu mets cette version à télécharger

 

A+

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é