BIM G CO Posté(e) le 25 septembre 2007 Posté(e) le 25 septembre 2007 Pour ceux qui utilise à tout bout de champ la commande et/ou macro ^C^CWIPEOUT;Cadres;_on;et ^C^CWIPEOUT;Cadres;_off;pour rendre actif ou inactif les cadres Wipeout, une petite routine qui permet de savoir si le cadre est actif OUI ou NON Cette fonction est sourtout utile lorsque l'on créé des Wipeout en autolispex: (entmake (list '(0 . "WIPEOUT") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") '(62 . 7) '(420 . 16777215) '(100 . "AcDbWipeout") '(90 . 0) (cons 10 (list -0.440882 -0.478761 0.0)) (cons 11 (list 0.9 0.0 0.0)) (cons 12 (list 0.0 0.9 0.0)) (cons 13 (list 1.0 1.0 0.0)) '(70 . 7) '(280 . 1) '(281 . 50) '(282 . 50) '(283 . 0) '(71 . 2) '(91 . 5) (cons 14 (list -0.5 0.021809 0.0)) (cons 14 (list 0.5 0.021809 0.0)) (cons 14 (list 0.5 0.5 0.0)) (cons 14 (list -0.5 0.5 0.0)) (cons 14 (list -0.5 0.021809 0.0)))) si le cadre est inactif le code ci dessus ne fonctionne pas. La solution réside donc à un test pour vérifier si le cadre est actif ou non (à la place de rajouter des (command "WIPEOUT".....) (defun IT_IS_Wipeout () ;;; ************************************************************* ;;; - REPOND A LA QUESTION : LES CADRES WIPEOUT SONT-ILS ACTIFS - ;;; ************************************************************* (equal (cdr (assoc 70 (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS"))) 1) ) Cette fonction retourne : T : Le cadre est actifnil : le cadre est inactif Cette fonction utilise le Menu express d'AutoCAD et n'a été testé que sur AutoCAD 2007 et 2008 Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
ElpanovEvgeniy Posté(e) le 25 septembre 2007 Posté(e) le 25 septembre 2007 (defun add-acad_wipeout_vars (/ e) ;; By ElpanovEvgeniy ;; 2006-12-15 ;; http://forums.augi.com/showthread.php?t=52082 ;; add acad_wipeout_vars to DICTIONARY... ;; tested AutoCAD 2005, 2007 (and (ARXLOAD "AcWipeout.arx") (setq e (entmakex (list '(0 . "WIPEOUTVARIABLES") '(102 . "{ACAD_REACTORS") (cons 330 (NAMEDOBJDICT)) '(102 . "}") (cons 330 (NAMEDOBJDICT)) '(100 . "AcDbWipeoutVariables") '(70 . 1) ) ;_ list ) ;_ entmakex ) ;_ setq (entmod (append (entget (NAMEDOBJDICT)) (list '(3 . "ACAD_WIPEOUT_VARS") (cons 350 e) ) ;_ list ) ;_ append ) ;_ entmod ) ;_ and ) Evgeniy
lili2006 Posté(e) le 25 septembre 2007 Posté(e) le 25 septembre 2007 Bonsoir à toutes et tous, Moi ce que j'aimerai faire, c'est en faire figurer quelques -unes avec un cadre et d'autres sans dans le même dessin. Est-ce réalisable ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 septembre 2007 Posté(e) le 25 septembre 2007 Salut Maximilien, Je ne comprends pas bien ton soucis, que le cadre soit actif ou non ton (entmake ...) ou la routine Obj2Wipeout fonctionnent chez moi. Mais voici une expression "bascule" pour activer/désactiver les cadres : ((lambda (elst) (entmod (subst (cons 70 (boole 6 (cdr (assoc 70 elst)) 1)) (assoc 70 elst) elst ) ) ) (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS") ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 Moi ce que j'aimerai faire, c'est en faire figurer quelques -unes avec un cadre et d'autres sans dans le même dessin. Est-ce réalisable ? L'affichage des cadres vaut pour tout le dessin, mais tu peux créer des wipeouts à partir d'objets (option Polyligne ou avec Obj2Wipeout) et conserver ces objets pour les cadres que tu souhaites afficher et désactiver l'affichage des cades. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 Bonjour à toutes et tous, (gile), j'utilise déjà ce Lisp mais je crois que la dernière fois que j'avais créé un joint de dilatation en polyligne Wipeout (que je voulais garder afficher !), je ne pouvais pas garder les autres objets sans affichage. Faut-il alors que j'utilise ton lisp sur tous les autres objets et laisser par défaut le cadre actif pour l'ensemble du dessin à cause de ce fameux passage de joint de dilatation ??? C'est dommage que l'affichage (ou non) des cadres soit pour tous le dessin. Je comprend cependant que ton lisp "Obj2wipeout" soit une parade à ce problème. Il est également fréquent de recevoir des plans archi ou géomètre ou j'aimerai pouvoir garder ou non le cadre actif. Dans ce cas, que me conseilles-tu ? De repasser les objets dont je ne souhaite pas voir le cadre avec "Obj2wipeout" ? Merci d'avance des idées que tu pourrais m'apporter. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
BIM G CO Posté(e) le 26 septembre 2007 Auteur Posté(e) le 26 septembre 2007 Cher (gile) Je peux te garantir que quand je tapes WIPEOUT;Cadres;_off;je ne peux plus faire de wipeout par un entmake de la manière que je l'ai indiqué précédemment Ce sujet c'était juste pour donner le test de cadre actif ou non. J' ai réalisé des tonnes de lisp (dont les source appartient au BE où je travailles, je ne peux donc pas les diffuser)qui créent différents Wipeouts de calque et de tailles différentes intégré le plus souvent dans des blocs. Je me refuse à jeter à la poubelle 300 heures de dévelloppement des lisp que j'ai créé parce que je m'y suis peut être mal pris à l'époque et de refaire 300 heures (quasiment 2 mois de travail en complet) pour modifier le fonctionnement. Je donne ce code juste pour aider mais si cela n'interresse personne :casstet: :casstet: Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
(gile) Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 Salut lili2006, Un petit LISP qui crée une polyligne fermée sur le contour des wipeouts sélectionnés. Avec les cadres activés, tu lances wo2pl, tu sélectionnes les wipeouts dont tu veux afficher le cadre et dont tu n'as pas conservé la polyligne source. Puis tu désactive les cadres. ;; WO2PL (gile) ;; Recrée le contour des wipeouts (lwpolyline) (defun c:wo2pl (/ ss n wo elst pts norm) (if (setq ss (ssget '((0 . "WIPEOUT")))) (repeat (setq n (sslength ss)) (setq wo (ssname ss (setq n (1- n))) elst (entget wo) norm (vunit (v^v (cdr (assoc 11 elst)) (cdr (assoc 12 elst)))) pts (wipeout2plst wo) ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length pts)) (cons 38 (caddr (trans (car pts) 0 norm))) '(70 . 1) (cons 210 norm) ) (mapcar '(lambda (pt) (setq pt (trans pt 0 norm)) (list 10 (car pt) (cadr pt)) ) pts ) ) ) ) ) (princ) ) ;;Wipeout2Plst (gile) ;; Retourne la liste des sommets du wipeout (coordonnées SCG) (defun wipeout2plst (wo / elst u v mat) (setq elst (entget wo) u (cdr (assoc 11 elst)) v (cdr (assoc 12 elst)) mat (list u (mapcar '- v) '(0. 0. 1.)) ) (mapcar '(lambda (p) (mapcar '+ (mxv (trp mat) p) (mapcar '(lambda (x y) (/ (+ x y) 2.)) u v) (cdr (assoc 10 elst)) ) ) (cdr (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 14)) elst) ) ) ) ) ;; V^V (gile) ;; Retourne le produit vectoriel (vecteur) de deux vecteurs (defun v^v (v1 v2) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))) ) ) ;; VUNIT ;; Retourne le vecteur unitaire d'un vecteur (defun vunit (v) ((lambda (l) (if (/= 0 l) (mapcar (function (lambda (x) (/ x l))) v) ) ) (distance '(0 0 0) v) ) ) ;; Transpose a matrix Doug Wilson (defun trp (m) (apply 'mapcar (cons 'list m)) ) ;; Apply a transformation matrix to a vector by Vladimir Nesterovsky (defun mxv (m v) (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 Re, C'est exactement ça !!!! Si j'ai bien compris (gile) , y'a qu'à d'mander,...Tu nous donnes de trés mauvaises habitudes MAIS que c'est bien,.. Merci encore et au plaisir (tu parles,...) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 Maximilien, Excuse moi, je n'avais pas vu passer ton message.Je ne mets pas du tout en doute le fait que tu n'arrives pas a créer de wipeout avec entmake si les cadres sont désactivés, je disais juste que chez moi (AutoCAD 2007)), je n'ai pas ce soucis. Bien sûr que ton code est intéressant, chercher des données dans les dictionnaires est souvent fastidieux. Merci de nous donner "l'adresse" de cette propriété. ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 26 mars 2009 Posté(e) le 26 mars 2009 Suite à une rencontre avec des wipeouts retords (issus d'une conversion depuis un logiciel d'architecture), j'ai du modifier WO2PL (ci-dessus). Ça fonctionne désormais quelque soit le plan du wipeout. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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