Megeon Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 Hello les copains, je suis a la recherche d'un LISP qui existerait (ou peut être une macro) qui fait des courbes de visibilité dans les salles de spectacle, quelqu'un aurait entendu parler de cela ? D'avance merci !
(gile) Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 Salut, À ma connaissance, il n'y a rien qui ressemblerait à ce que tu cherches, mais tu devrais peut-être préciser ce que tu cherches avec un petit dessin... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 hello (gile) pour faire simple c'est le calcul qui permet d'avoir la courbe rouge sur le dessin apparemment il se fait automatiquement sur autocad.
x_all Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 j'avais fait un tableau excel à l'époque de l'archi, c'est vrai qu'avec un lisp ça doit être jouable. Mais je ne retrouve pas le tableau. De ce que je me rappelle, c'était pas une fonction, mais une suite (la valeur P n donne la valeur P n+1)Je sortais les x,y de chaque point en ft de P0 et du point visé. Il faudrait que tu nous donne la définition de la suite car je sais plus le faire... quelques trucs sur autocad
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 j'avais fait un tableau excel à l'époque de l'archi, c'est vrai qu'avec un lisp ça doit être jouable. Mais je ne retrouve pas le tableau. De ce que je me rappelle, c'était pas une fonction, mais une suite (la valeur P n donne la valeur P n+1)Je sortais les x,y de chaque point en ft de P0 et du point visé. Il faudrait que tu nous donne la définition de la suite car je sais plus le faire... Ça viendra avec le temps, je viens d'arriver dans ma nouvelle boite, et on m'a dit que cette option existait, et que donc, il faudrait la chercher ! Du coup si on peux calculer la courbe avec autocad, et faire en sorte de faire des réseaux par courbe ça serais cool ce truc ! Je vous tiens au courant ! je cherchais juste si ça existait déjà ! merci en tout cas.
didier Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 Coucou Effectivement en lisp il y a moyen de fairePar contre il va expliciter falloir clairement les données Pour ce qui est de la "fonction" AutoCAD en natif, tel que tu expliques je ne connais rienSi tu dessines tes points sur une coupe je dirais que les relier par une spline me semble un visuel correct. Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 Salut, Tu peux essayer ça : (defun c:CourbeVisib (/ tan p0 p1 ix iy x n pts a) (defun tan (a) (/ (sin a) (cos a))) (if (and (setq p1 (getpoint "\nSpécifiez le premier point de vue: ")) (setq p0 (getpoint p1 "\nSpécifiez le point cible: ")) (setq iy (getdist p1 "\nSpécifiez le décalage en hauteur (y): ")) (setq ix (getdist "\nSpécifiez la largeur des rangs (x): ")) ) (progn (initget 7) (setq n (getint "\nEntrez le nombre de rangs: ")) (setq pts (list p1)) (setq ix (if (minusp (- (car p1) (car p0))) (- (abs ix)) (abs ix) ) iy (abs iy) ) (repeat n (setq a (angle p0 (list (car p1) (+ (cadr p1) iy))) x (+ (car p1) ix) p1 (list x (+ (cadr p0) (* (tan a) (- x (car p0))))) pts (cons p1 pts) ) ) (command "_spline") (foreach p (reverse pts) (command "_non" p) ) (command "" "" "") ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 Ho ! Merci gile, je pense qu'il y a une bonne base, cependant il y a eu un pti soucis (voir image) En tout cas merci de la réactivité, et de la vitesse pour faire le code ! EDIT: J'ai ACAD2018 je ne sais pas si ça change qqch EDIT 2 : D’ailleurs il existe un moyen de s'accrocher aux poinyt de la spline ? le résultat est la courbe bleu
(gile) Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 Il faut que tu sélectionnes en premier le point de vue le plus bas (regarde la vidéo). Tu peux essayer cette version qui dessine les lignes de visibilité sur le calque VISIBILITE.On pourrait aussi dessiner un point ou insérer un bloc à chaque sommet de la spline. (defun c:courbeVisib (/ tan p0 p1 x y n ix iy pts a) (defun tan (a) (/ (sin a) (cos a))) (if (and (setq p1 (getpoint "\nSpécifiez le premier point de vue: ")) (setq p0 (getpoint p1 "\nSpécifiez le point cible: ")) (setq iy (getdist p1 "\nSpécifiez le décalage en hauteur (y): ")) (setq ix (getdist "\nSpécifiez la largeur des rangs (x): ")) ) (progn (initget 7) (setq n (getint "\nEntrez le nombre de rangs: ")) (setq pts (list p1)) (setq ix (if (minusp (- (car p1) (car p0))) (- (abs ix)) (abs ix) ) iy (abs iy) ) (repeat n (setq a (angle p0 (list (car p1) (+ (cadr p1) iy))) x (+ (car p1) ix) p1 (list x (+ (cadr p0) (* (tan a) (- x (car p0))))) pts (cons p1 pts) ) ) (command "_spline") (foreach p (reverse pts) (command "_non" p) ) (command "" "" "") (foreach p pts (entmakex (list (cons 0 "LINE") (cons 10 (trans p 1 0)) (cons 11 (trans p0 1 0)) (cons 8 "VISIBILITE") ) ) ) ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 c'est ce que j'ai fait pour la sélection ! ( d’ailleurs je fait comme dans la vidéo ! ) Edit ! La seconde version est excellente ! encore un grand merci ! :D :D :D :D
(gile) Posté(e) le 7 septembre 2017 Posté(e) le 7 septembre 2017 c'est ce que j'ai fait pour la sélection ! ( d’ailleurs je fait comme dans la vidéo ! ) C'est curieux, la seconde version est identique à la première excepté l'ajout des lignes de visibilité... EDIT : c'est peut-être un problème avec les accrochages aux objets, j'ai modifié les deuc code ci-dessus pour forcer les accrochages sur "AUCun" ("_NONe"). 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 Je ne sais pas a quoi c'est du ! Mais la ça fonctionne, et la version avant j'avais toujours le même soucis ! Bref je te dois un verre !
Megeon Posté(e) le 7 septembre 2017 Auteur Posté(e) le 7 septembre 2017 Oui c'était ça, les accroches au objets, je viens de testé la seconde version et ça avais fait quelque petit bug par ci par la (tout a fait gérable) et la plus rien ! Je te dois 2 verres !!!
nen Posté(e) le 15 décembre 2017 Posté(e) le 15 décembre 2017 ..... ) (command "" "" "") (foreach p pts (entmakex (list (cons 0 "LINE") (cons 10 (trans p 1 0)) (cons 11 (trans p0 1 0)) (cons 8 "VISIBILITE") ) ) ) ) ) (princ) Bonjour, Très intéressent votre lisp ci-dessus mais est-il possible d'avoir un calque "VISIBILITE DROITE" (les lignes droites du point de vue aux cibles ) en rouge et un autre calque pour "VISIBILITE COURBE" en vert ? Meilleures salutations
(gile) Posté(e) le 15 décembre 2017 Posté(e) le 15 décembre 2017 Salut, (defun c:courbeVisib (/ tan p0 p1 x y n ix iy pts a) (defun tan (a) (/ (sin a) (cos a))) (if (and (setq p1 (getpoint "\nSpécifiez le premier point de vue: ")) (setq p0 (getpoint p1 "\nSpécifiez le point cible: ")) (setq iy (getdist p1 "\nSpécifiez le décalage en hauteur (y): ")) (setq ix (getdist "\nSpécifiez la largeur des rangs (x): ")) ) (progn (or (tblsearch "LAYER" "VISIBILITE_DROITE") (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "VISIBILITE_DROITE") (70 . 0) (62 . 1) (6 . "Continuous") ) ) ) (or (tblsearch "LAYER" "VISIBILITE_COURBE") (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "VISIBILITE_COURBE") (70 . 0) (62 . 3) (6 . "Continuous") ) ) ) (initget 7) (setq n (getint "\nEntrez le nombre de rangs: ")) (setq pts (list p1)) (setq ix (if (minusp (- (car p1) (car p0))) (- (abs ix)) (abs ix) ) iy (abs iy) ) (repeat n (setq a (angle p0 (list (car p1) (+ (cadr p1) iy))) x (+ (car p1) ix) p1 (list x (+ (cadr p0) (* (tan a) (- x (car p0))))) pts (cons p1 pts) ) ) (entmakex (vl-list* (cons 0 "SPLINE") (cons 100 "AcDbEntity") (cons 8 "VISIBILITE_COURBE") (cons 100 "AcDbSpline") (cons 71 (length pts)) (mapcar '(lambda (p) (cons 11 p)) pts) ) ) (foreach p pts (entmakex (list (cons 0 "LINE") (cons 10 (trans p 1 0)) (cons 11 (trans p0 1 0)) (cons 8 "VISIBILITE_DROITE") ) ) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nen Posté(e) le 15 décembre 2017 Posté(e) le 15 décembre 2017 Super merci cela fonctionne impeccable :D Meilleures salutations
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