Redéfinir l'orientation des vues standards (iso, de face, ..
-
Salut et bienvenue !
Si j'ai compris, ton pan de charpente n'est parallèle à aucun des axes existants, c'est ça ?Dans ce cas je ne vois pas comment faire... A part tourner ta charpente pour la rendre parallèle à l'un des axes... Si qqn a une méthode...
-
J'ai jamais fait,mais peut être avec une coupe .........
-
Clic-droit sur un des axes, puis "Aligner la vue". Sauf que c'est juste valable pour la vue en plan. Pour les autres, j'ai pas de soluce. On ne peut même pas faire un script Ruby pour combler le manque, vu qu'il n'y a aucun moyen de récupérer les paramètres des axes. L'API a bien des lacunes...
-
Bonjour,
C'est bien ce que je craignais, hormis une mise en position du modèle par rotation, il n'y a pas de solution simple.
merci en tout cas pour vos réponses.
-
Salut !
@ Didier :
Juste une idée comme ça : est-il possible de créer un ruby qui affiche la vue de face de la face d'une entité sélectionnée ?
Procédure :
1- Sélectionner une face
2- On récupère l'inclinaison de la face
3- On tourne la vue en cours pour afficher la face sélectionnée
4- Zoom.Ensuite je ne sais pas s'il est possible 'imprimer à l'échelle avec cette méthode. Je bosse (Je tente, un peu... ça risque de prendre du temps !) sur un affichage de la vue actuelle à l'échelle désirée (la cause de ce post). Comme ça, on pourrait imprimer à l'échelle sans avoir à passer par la boite dialogue d'impression...
-
Bonjour,
@unknownuser said:
est-il possible de créer un ruby qui affiche la vue de face de la face d'une entité sélectionnée ?
Oui: tu récupères la normale de la face (face.normal) et tu affectes camera.direction avec ce vecteur, ou tu mets le camera.eye au bout du vecteur normal et la camera.target à l'extrêmité de normal.reverse.
Pour se mettre à une distance correcte (face.normal est normé à 1), il faudra sans doute faire face.normal.length=distance (distance étant la distance de la caméra à la face).
C'est là qu'on voit que pour gérer l'échelle, c'est une autre paire de manches... -
Salut Didier ! Merci pour ces conseils !!
@unknownuser said:
C'est là qu'on voit que pour gérer l'échelle, c'est une autre paire de manches...
Clairement...
@unknownuser said:
Pour se mettre à une distance correcte (face.normal est normé à 1), il faudra sans doute faire face.normal.length=distance (distance étant la distance de la caméra à la face).
Oui, ou alors faire juste un zoom étendu. Après c'est l'utilisateur qui zoom s'il veut..
-
Re,
Désolé didier, mais je n'arrive pas à reproduire ce que tu dis...@unknownuser said:
tu récupères la normale de la face (face.normal) et tu affectes camera.direction avec ce vecteur
Je ne peux pas modifier camera.direction... Brmbl
EDIT : Bon en fait j'ai trouvé un moyen, mais ça m'a pas l'air dément... Surtout le camera.up....
Qu'en penses-tu Didier (ou Fredo6, si tu es dans le coin )??
def f2f model = Sketchup.active_model ent = model.selection[0] camera = model.active_view.camera camera.set(ent.normal.to_a,ent.normal.reverse.to_a,Geom;;Vector3d.new(1, 0, 0)) Sketchup.send_action("viewZoomToSelection;") end
-
Non, non ça va pas le faire:
camera = camera.set eye, target, up
eye et traget doivent être des point3d (même avec to_a, tu récupère un tableau normé entre 0 et 1, donc ton point va être faux), et up un vecteur (et up, c'est vers Z en principe, donc Geom::Vector3d.new(0, 0, 1) (à moins que tu veuilles avoir la tête en bas )
def f2f model = Sketchup.active_model ent = model.selection[0] normal=ent.normal #calcul du centroide de la face; centre = ent.centroid camera = model.active_view.camera camera.set(centre.offset(normal),centre,Geom;;Vector3d.new(0, 0, 1)) Sketchup.send_action("viewZoomToSelection;") end
Bon là tu vas me dire: comment je calcule le centre de gravité de la face
Comme ça:
Tu ajoutes une méthode à la classe "Face":class Sketchup;;Face def centroid xs = ys = zs = 0.0 n = self.outer_loop.vertices.length #nombre de points du contour extérieur self.outer_loop.vertices.each do |v| #pour tous les points du contour xs += v.position.x #ajouter son X à la somme des x ys += v.position.y zs += v.position.z end return Geom;;Point3d.new(xs/n,ys/n,zs/n) #point3d des moyennes des coordonnées end end
Ensuite si tu fais ent.centroid et que ent est une face, tu récupères son centroide, comme dans le code plus haut. Bon, j'ai pas testé mais ça devrait marcher.
-
Houlà !!!
Impressionnant ! Ce pti truc, notammentcentre.offset(normal)
Et aussi le code pour trouver le centroide !!
D'ailleurs, ta fonction doit prendre en compte les courbes, nan ? puisqu'il prend tous les sommets rencontrés ! Génial...
Merci à toi pour tout ça, ça fonctionne très bien !!
PS : Bon ça veut bien dire que j'ai du pain de deux livres (au moins... Ptet même une boulangerie) sur la planche.... Ya plein de trucs très très TREEES nébuleux encore.... En même temps, comme dirait un gars sur un autre forum
@unknownuser said:Si vous êtes persuadés de tout savoir sur un sujet, c'est que vous en ignorez quelque chose...
Advertisement