Problème avec Macro Shake_Sketch
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Re: Problème avec Macro Shake_Sketch
Il y a des problèmes avec cette Sketch, par exemple l'arc en vert est double.
Je crois q'on peut construire cette Sketch compl`tement sans les petit cercle. Je vais essaier.
Je crois q'on peut construire cette Sketch compl`tement sans les petit cercle. Je vais essaier.
- Attachments
-
- Bildschirmfoto 2018-01-22 um 08.36.03.png (17.95 KiB) Viewed 695 times
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: Problème avec Macro Shake_Sketch
Voilà ton esquisse complètement contrainte.
Il y avait plusieur problème avec:
Il y avait plusieur problème avec:
- encore des ligne double:
- on n'avait pas besoin des angle
- un point/ligne/cercle étrange sur une ligne
- Attachments
-
- EsquisseProtusionVanneCopie_cb.FCStd
- (26.72 KiB) Downloaded 22 times
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: Problème avec Macro Shake_Sketch
Ya 1 outil qui permet de faire 1 octogone
ça donne ceci.
Il me semble comprendre que tu cherche à reproduire le volant de vanne de JeanMichel, pour ce je suis d'ac avec Glouglou,c'est plus simple de faire 1/8 puis 1 copie circulaire
ça donne ceci.
Il me semble comprendre que tu cherche à reproduire le volant de vanne de JeanMichel, pour ce je suis d'ac avec Glouglou,c'est plus simple de faire 1/8 puis 1 copie circulaire
- Attachments
-
- rosace.png (124.6 KiB) Viewed 694 times
Re: Problème avec Macro Shake_Sketch
.
C'est exact meme2704 cette vanne m'a tapée dans l'oeil et je me suis dit pour ne pas bruler les étapes que je pourrais consacrer un peu de temps et jongler également avec les outils et propriétés. Alors là vient une autre question, comment fait on une copie circulaire ?
Re: Problème avec Macro Shake_Sketch
.Merci Chrisb, tu me libère d'un gros poids, j'ai cherché et je ne voyais pas d’où pouvais venir la faute et je n'ai pas vu les doubles lignes, il faut dire que je n'ai plus une bonne vue, mais ceci n'explique pas tout. Je dois zoomer beaucoup plus pour mieux voir les détails.chrisb wrote: ↑Mon Jan 22, 2018 8:49 am Voilà ton esquisse complètement contrainte.
Il y avait plusieur problème avec:
- encore des ligne double:
Bildschirmfoto 2018-01-22 um 09.08.23.png
Bildschirmfoto 2018-01-22 um 09.00.07.png- on n'avait pas besoin des angle
- un point/ligne/cercle étrange sur une ligne
Bildschirmfoto 2018-01-22 um 09.26.04.png
Encore Merci.
Re: Problème avec Macro Shake_Sketch
. Je te remercie pour m'avoir envoyé ce code et je comprends bien qu'avec une esquisse comme je l'ai présenté pose des problèmes.mario52 wrote: ↑Sun Jan 21, 2018 7:49 pm Bonjour
je viens de tester la macro et elle fonctionne bien
ici avec un sketch ouvert
Macro_ Shake_Sketch00.gif
ici avec un sketch fermé (je ferme le sketch puis je lance la macro)
Macro_ Shake_Sketch01.gif
le code utilisé:pouvez vous mettre votre exemple en ligne pour le tester ?Code: Select all
# -*- coding: utf-8 -*- # FreeCAD macro to shake a sketch in order to discover its unconstrained parts. # # A Gaussian noise is introduced in all sketch points and the sketch is then # solved. # Beware that the sketch can look different because some constraints have # several solutions. In this case, just undo. # # This file is released under the MIT License. # Author: Gaël Ecorchard # Version: # - 1.1, 2014-10-31 # * correct import for Part # - 1.0, 2014-08, first release. # Amplitude of the point displacements. # The standard deviation of the Gaussian noise is the largest sketch dimension # multiplied by this factor. displacement_amplitude = 0.1 # End of configuration. from random import gauss import FreeCADGui as Gui from FreeCAD import Base import Part # For each sketch geometry type, map a list of points to move. g_geom_points = { Base.Vector: [1], Part.Line: [1, 2], # first point, last point Part.Circle: [0, 3], # curve, center Part.ArcOfCircle: [1, 2, 3], # first point, last point, center } class BoundingBox(object): xmin = None xmax = None ymin = None ymax = None def enlarge_x(self, x): if self.xmin is None: self.xmin = x self.xmax = x return if self.xmin > x: self.xmin = x return if self.xmax < x: self.xmax = x return def enlarge_y(self, y): if self.ymin is None: self.ymin = y self.ymax = y return if self.ymin > y: self.ymin = y return if self.ymax < y: self.ymax = y return def enlarge_point(self, point): self.enlarge_x(point.x) self.enlarge_y(point.y) def enlarge_line(self, line): self.enlarge_x(line.StartPoint.x) self.enlarge_x(line.EndPoint.x) self.enlarge_y(line.StartPoint.y) self.enlarge_y(line.EndPoint.y) def enlarge_circle(self, circle): self.enlarge_x(circle.Center.x - circle.Radius) self.enlarge_x(circle.Center.x + circle.Radius) self.enlarge_y(circle.Center.y - circle.Radius) self.enlarge_y(circle.Center.y + circle.Radius) def enlarge_arc_of_circle(self, arc): # TODO: correctly compute the arc extrema (cf. toShape().BoundBox) self.enlarge_x(arc.Center.x) self.enlarge_y(arc.Center.y) def get_sketch_dims(sketch): bbox = BoundingBox() for geom in sketch.Geometry: if isinstance(geom, Base.Vector): bbox.enlarge_point(geom) elif isinstance(geom, Part.Line): bbox.enlarge_line(geom) elif isinstance(geom, Part.Circle): bbox.enlarge_circle(geom) elif isinstance(geom, Part.ArcOfCircle): bbox.enlarge_arc_of_circle(geom) if (bbox.xmin is not None) and (bbox.ymin is not None): return bbox.xmax - bbox.xmin, bbox.ymax - bbox.ymin else: return 0, 0 def add_noise(point, sigma): """Add a Gaussian noise with standard deviation sigma""" point.x = gauss(point.x, sigma) point.y = gauss(point.y, sigma) def move_points(sketch, geom_index, sigma): point_indexes = g_geom_points[type(sketch.Geometry[i])] # Direct access to sketch.Geometry[index] does not work. This would, # however prevent repeated recompute. for point_index in point_indexes: point = sketch.getPoint(geom_index, point_index) add_noise(point, sigma) sketch.movePoint(geom_index, point_index, point) view_provider = Gui.activeDocument().getInEdit() # Don't know how to exit from a macro. do_move = True if not view_provider: do_move = False if do_move: sketch = view_provider.Object if sketch.TypeId != 'Sketcher::SketchObject': do_move = False if do_move: sigma = max(get_sketch_dims(sketch)) * displacement_amplitude for i in range(len((sketch.Geometry))): move_points(sketch, i, sigma)
je vous suggère de créer un bouton pour la facilité d'utilisation Customize_Toolbars
OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6712 (Git)
Build type: Release
Branch: releases/FreeCAD-0-16
Hash: da2d364457257a7a8c6fb2137cea12c45becd71a
Python version: 2.7.8
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
mario
Encore Merci d'avoir répondu .
A plus
Re: Problème avec Macro Shake_Sketch
.Pour faire une esquisse, j'ai gardé les constructions que l'on était presque obligé de faire sur une planche à dessin pour obtenir un résultat.
Je dois absolument penser que c'est un autre outil et une autre façon de procédé, qui bien sur est beaucoup plus performante à tout point de vue que le dessin sur une planche. Je vais veiller à cela.
Re: Problème avec Macro Shake_Sketch
De rien. Je suis déja heureux, que tu peux comprendre mon Français .Henri33 wrote: ↑Mon Jan 22, 2018 11:23 am Merci Chrisb, tu me libère d'un gros poids, j'ai cherché et je ne voyais pas d’où pouvais venir la faute et je n'ai pas vu les doubles lignes, il faut dire que je n'ai plus une bonne vue, mais ceci n'explique pas tout. Je dois zoomer beaucoup plus pour mieux voir les détails.
Encore Merci.
On ne pouvait pas voir ces défaut. Je les ai trouvé quand j'ai refait les contraintes remplaçant les petit cercles. Enfin j'ai supprimé l'interieur complèt de lèsquisse et j'ai n'avait des degrés de liberté. Alors j'ai fait l'enverse et j'ai supprimé le grand cercle avec tout ces lignes de construction. Et enfin j'arrivait.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: Problème avec Macro Shake_Sketch
Bonjour
pour en revenir à la macro elle fonctionne normalement, si l'auteur passe par ici il pourra donner le bon jugement
mario
c'est parce-que la macro travaille, il faut attendre qu'elle finisseHenri33 wrote:j'ouvre le sketch à contrôler et je lance la Macro, rien ne se passe et puis apparait "Freecad ne repond plus en haut de l'écran.
oui comme le sketch de Henri33, mais si je bouge un point les lignes du sketch bougentchrisb wrote:Voilà. Shake_Sketch ne fait rien.
pour en revenir à la macro elle fonctionne normalement, si l'auteur passe par ici il pourra donner le bon jugement
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
Re: Problème avec Macro Shake_Sketch
J'attendais pour une demi heures pour les 4 ligne, j'espère que ça suffit.
Peut-être j'ai fait un erreur:
- Je selectionne le sketch
- j'ouvre le Sketcher
- (je ne selectionne rien)
- j'exécute le macro
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.