Aller au contenu

Affectation de styles de tracés suivant calques


fabcad

Messages recommandés

Bonjour,

 

J'ai créé une routine pour affecter un style de tracé d'une table STB vers son calque éponyme.

 

Elle fonctionne mais je souhaiterais l'améliorer en évitant la création de Listes de mots-clés et les Cond.

 

Peut-on accéder aux tables de styles de tracé via Autolisp ou Vlisp ?

 

D'avance merci,

 

Fabcad le Rennais Métropolitain

Affecter-Styles_de_Trace.lsp

Lien vers le commentaire
Partager sur d’autres sites

salut,

de mémoire, c'est un casse tête, car la liste des styles de tracés "utilisables" dépends de la table liée.

Je te passe une série d'exemples qui datent de 2000, donc de mes débuts avec Visual-Lisp et les dictionnaires, donc c'est pas du 100%

De mémoire, c'est aussi chiant que les styles de hachures, qui dépendent des fichiers pat situés dans le path d'Autocad.

Pour quelque chose de plus clean, il faudrait peut être voir du coté de .Net

 

 

pour avoir la liste des styles:

;***************************************************************************
;§/dxf/liste les style  présent dans un dictionnaire/ndic
; ** si ndic = MLINE_STYLE alors retourne style de multiligne
;;           = "ACAD_PLOTSTYLENAME" retourne styles de tracé
;;
(defun pw_l_dic ( ndic / dic res l )
(setq dic (dictsearch (namedobjdict) ndic ))
(setq res nil)
(foreach l dic 
 (if (= 3 (car l))
  (setq res (cons (strcase (cdr l)) res))
 )
)
(setq res res)
)

 

A utiliser de cette manière (compléter):

(setq pw-l-pstyle
	      (append '("DUCALQUE" "DUBLOC" "0" "1")
		      (pw_l_dic "ACAD_PLOTSTYLENAME")
	      )
       )

 

Pour sélectionner un style de tracé avec la liberté de changer de table, j'utilise un dialogue Autocad:

Cette méthode a l’inconvénient de changer le style courant, pour revenir au style précédent, j'utilise pw_retpstyle, mais ça ne marche pas toujours

 

; *****************************************************************************
;;§/ini/selectionne une style de tracé au moyen de la case de dialogue autocad/ps
;
(defun pw_ch_pstyle ( ps / res )
;(sssetfirst nil) ;; efface tout jeu de selection préalable
(setq pw-cplotstyle (getvar "cplotstyle"))
(initdia)
(command "_.PLOTSTYLE" )
(setq res (pw_trad_pstyle (getvar "cplotstyle")))
(setq res res)
)

; *****************************************************************************
;;§/ini/rétablie le pstyle précédent dans les cas pw_sel de pw_dia/none
;;si le style n'est plus valable, ça plante
;
(defun pw_retpstyle ()
(if pw-cplotstyle
 (if (pw_est_nouv_dic pw-cplotstyle "ACAD_PLOTSTYLENAME") ;;si à l'issue du dialogue, le style est toujours valable
  (pw_setvar "CPLOTSTYLE" pw-cplotstyle) ;; tante de le rétablir
 )
)
(setq pw-cplotstyle nil)            ;;même *error* n'en tiendrat plus compte
)

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

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é