LUDWIG Posté(e) le 5 juillet 2016 Posté(e) le 5 juillet 2016 Bonjour le forum, Je me remet timidement à faire de toute petite programmation utilisant "VLA-PUT-..." pour gérer des propriétés de transparence, elevation, épaisseur, couleur, etc. (defun c:Ep0 () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for bl a (vlax-for ent bl (vla-put-thickness ent 0) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) ) Comment puis-je faire pour "passer" les entités qui n'ont pas la propriété que je souhaite forcer (exemple ci dessus : les blocs n'ont pas la propriété Elevation et donc mon programme me renvoit une erreur. Merci d'avance Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 5 juillet 2016 Posté(e) le 5 juillet 2016 Salut Avec la fonction vlax-property-available-p @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 5 juillet 2016 Auteur Posté(e) le 5 juillet 2016 Terrible ! Merci beaucoup Patrick Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 6 juillet 2016 Auteur Posté(e) le 6 juillet 2016 Bon, voilà, je partage !C'est un morceau du code que j'utilise pour "nettoyer" des plans archi et les utiliser en fond de plan.C'est parfois un peu long sur les gros plans. ;********************************************************************************************************************************************************** ;Forcer transparence, épaisseur, épaisseur de ligne, calque, épaisseur, couleur ;********************************************************************************************************************************************************** (defun c:FPROP () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for bl a (vlax-for ent bl (if(vlax-property-available-p ent 'thickness T)(vla-put-thickness ent 0)) ;thichkness= épaisseur (if(vlax-property-available-p ent 'entitytransparency T)(vla-put-entitytransparency ent "Dubloc")) ;transparence dubloc (if(vlax-property-available-p ent 'color T)(vla-put-color ent 0)) ;0=couleur dubloc (if(vlax-property-available-p ent 'constantwidth T)(vla-put-constantwidth ent 0)) (if(vlax-property-available-p ent 'lineweight T)(vla-put-lineweight ent -3)) ;-3= épaisseur de ligne dubloc (if(vlax-property-available-p ent 'layer T)(vla-put-layer ent "0")) ;caLQUE 0 ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) ) Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 6 juillet 2016 Posté(e) le 6 juillet 2016 Salut Pour simplifier tes conditions(mapcar '(lambda(a B)(if (vlax-property-available-p ent a) (vlax-put ent a B))) (list 'thickness 'entitytransparency 'color 'constantwidth 'lineweight 'layer) '(0 "Dubloc" 0 0 -3 "0")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 6 juillet 2016 Auteur Posté(e) le 6 juillet 2016 Super ! Merci Autocad 2021 - Revit 2022 - Windows 10
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant