MACRO:Work Feature

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: MACRO:Work Feature

Post by flachyjoe »

Salut rentlau_64,
je me suis inspiré de ta fonction intersectLinePlane pour chercher l'intersection avec une face d'un solide. Je me suis rendu compte que tu n'utilisais pas les fonctions vectorielles fournies par App.Vector, y a t'il une raison ?
Pour info voila ma fonction :

Code: Select all

def intersecLineFace(A,B, face):
	""" Return the intersection between the Line (A,B) and the face. """
	if (None in [A,B,face]) :
		return None
	if (str(face.Surface) == "<Plane object>")  :
		N = face.normalAt(0,0)
		p1 = face.CenterOfMass
		d = -(N.dot(p1))
		U = B-A
		if U.dot(N) == 0.0:
			# if A belongs to P : the full Line L is included in the Plane
			if N.dot(A) + d == 0.0:
				return A
			# if not: the Plane and line are paralell without intersection
			else:
				return None
		else:
			k = - (N.dot(A)  + d) / (N.dot(U) )
			T = A + U*k
			return T
	else :
		#TODO : non plane case
		return None
Last edited by flachyjoe on Tue Jul 28, 2015 12:55 pm, edited 1 time in total.
- Flachy Joe -
Image
fran6t
Posts: 354
Joined: Tue Jul 15, 2014 9:29 am
Location: Montauban
Contact:

Re: MACRO:Work Feature

Post by fran6t »

Une petite explication quelque part pour la mise en place correcte serait bienvenue pour les boulet comme moi.

J'ai buté sur deux truc en récupérant sur github j'avais donc un repertoire WorkFeature-master.


Le premier :
Si j'ai bien compris il faut prendre dans ce repertoire le repertoire WorkFeature et le placer dans son repertoire macro chez moi directement dans .Freecad
puis remonter d'un cran la macro start_WF.FCMacro pour qu'elle se trouve non plus dans .Freecad/WorkFeature mais bien ./Freecad

Le deuxième:
Une fois tout en place l'onglet chez moi n'est pas en haut, mais en bas et comme tjrs boulet que je suis je ne l'avais pas vu au premier instant

Voilà c'est mon petit retour immédiat sans avoir encore utilisé.
onglet.jpg
onglet.jpg (89.54 KiB) Viewed 2865 times
mario52
Veteran
Posts: 4692
Joined: Wed May 16, 2012 2:13 pm

Re: MACRO:Work Feature

Post by mario52 »

Bonjour
c'est la bonne procédure et la bonne place dans FreeCAD vous cliquez sur l'onglet et utilisez les fonctions de la macro
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.
rentlau_64
Posts: 181
Joined: Tue Oct 21, 2014 9:47 am
Location: Pau (France)

Re: MACRO:Work Feature

Post by rentlau_64 »

@ flachyjoe
je me suis inspiré de ta fonction intersectLinePlane pour chercher l'intersection avec une face d'un solide. Je me suis rendu compte que tu n'utilisais pas les fonctions vectorielles fournies par App.Vector, y a t'il une raison ?
Aucune a part le fait que quand j'ai ecrit cela je ne connaissais pas encore toutes les subtilités et les fonctions disponibles, et puis cela m'a fait du bien de repartir a la base...
J'aime bien ta façon de coder en python elle est elegante. Je peux recuperer ta fonctions pour l'ajouter aux miennes?

@ fran6t
Oui tu as raison:
La structure suivante (developpée par Rockn, merci a lui) permet de gerer proprement les différentes macros venant du Web en les classant dans des sous repertoires acceder par des fichiers du type : start_WF.FCMacro

TonRepertoireDeMacros
|__/WorkFeature
start_WF.FCMacro
Une fois tout en place l'onglet chez moi n'est pas en haut, mais en bas et comme tjrs boulet que je suis je ne l'avais pas vu au premier instant
Oui c'est le comportement normal depuis la derniere version (microelly2 m'a aider a avoir ce nouveau comportement que je trouve plus souple)

A noter aussi que Mario 52 m'aide souvent pour cette macro. encore merci Mario

PS: la nouvelle version aura comme nouvelle fonction les Sweep de sections des Normales qui marchent avec les meshs viewtopic.php?f=22&t=6130&start=10#p93986,
Je travaille aussi sur les fonctions parametriques : viewtopic.php?f=22&t=11659#p93707

Rentlau_64
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: MACRO:Work Feature

Post by flachyjoe »

@rentlau_64 :
Pas de souci pour réutiliser ma fonction, voila une version améliorée et qui ne renvoi le point que s'il est dans la face (celle d'avant donnait le point du plan contenant la face même s'il était en dehors) :

Code: Select all

def intersecLineFace(A,B, face):
	""" Return the intersection between the Line (A,B) and the face. """
	if (None in [A,B,face]) :
		return None
	if (str(face.Surface) == "<Plane object>")  :
		N = face.normalAt(0,0)
		p1 = face.CenterOfMass
		U = B-A
		k1 = N*A-N*p1
		k2 = N*U
		if k2 == 0.0 :
			if k1 == 0.0 :
				# A belongs to P : the full Line is included in the Plane
				if face.isInside(A, 0, True) :
					return A
				#TODO : if A out of face but a part of line is inside, should return a point.
			#the Plane and line are paralell without intersection (or A out of face)
			return None
		I = A - U*(k1 / k2)
		if face.isInside(I, 0, True) :
			return I
		return None
	else :
		#TODO : non plane case
		return None
- Flachy Joe -
Image
jbe
Posts: 368
Joined: Sun Nov 10, 2013 4:18 pm
Location: France, Châteauroux

Re: MACRO:Work Feature

Post by jbe »

Rentio,
pourrais tu faire une installation en "sudo" de Macro Work Feature, pour Ubuntu.

Ce serait le plus simple, enfin pour moi, car j'ai une vingtaine de PC à paramétrer, et donc moins d'erreur à faire.

De même, cela serait peut être plus simple pour les mises à jour, comme a fait Hamish pour Assembly 2.

Et bravo pour le travail.
rentlau_64
Posts: 181
Joined: Tue Oct 21, 2014 9:47 am
Location: Pau (France)

Re: MACRO:Work Feature

Post by rentlau_64 »

Jbe,

Bonjour, je ne vois pas trop ce que vous voulez dire par "sudo" , vous voulez l'installer en tant que root?
Je peux vous faire un shell script du style "install_WF" qui va créer la structure des répertoires et va positionner le fichier de lancement start_WF.FCMacro au bon endroit?
Mais cela ne marchera que sur Linux...pour le moment?

Cordialement

ps : il y a aussi un outil pour gérer les modules et macros écrit par Microelly qui prend en compte la mise a jour si j'ai bien compris mais je ne l'ai pas encore testé.

Rentlau_64
jbe
Posts: 368
Joined: Sun Nov 10, 2013 4:18 pm
Location: France, Châteauroux

Re: MACRO:Work Feature

Post by jbe »

Exemple avec Assembly 2

Se mettre en sudo ( super utilisateur), puis

cd ~/.FreeCAD/Mod/FreeCAD_assembly2
puis
git pull

Cette procédure met à jour Assembly 2, si besoin.

Et ensuite, je bascule ceci dans le répertoire des élèves, pour qu'ils puissent faire des assemblages ( niveau collège)

Donc cela serait bien de faire quelque chose d'aussi simple.

Ci je peux me permettre :

Peut être pourrais tu en profiter pour installer le Module Assembly 2, et le dernier sorti Sheet Métal dans ton "Install_WF"

Et avec le nouveau programme, on va commencer dés la cinquième...

J'ai pas fini de dessiner des maquettes Freecad... sous Ubuntu
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: MACRO:Work Feature

Post by flachyjoe »

Hello,
pas besoin de sudo pour faire un git pull dans le répertoire utilisateur (~).
Pour revenir sur un usage correct, supprimer le répertoire en root (sudo rm) et refaire le git clone en tant qu'utilisateur.

Le sudo doit être réservé à la mise à jour du système, le répertoire utilisateur n'en fait pas partie.

Bonne continuation !
- Flachy Joe -
Image
User avatar
rockn
Veteran
Posts: 1791
Joined: Wed Sep 28, 2011 10:39 am
Location: Toulouse, France
Contact:

Re: MACRO:Work Feature

Post by rockn »

Salut flachyjoe,
En fait jbe est dans une configuration un peu particulière :
La version longue : viewtopic.php?t=8478
La version courte : les postes utilisateurs (des élèves de collège) ont leur dossier /home distant donc la mise à jour est compliqué, du moins plus compliqué que d'avoir les plugins directement dans le système. La solutions retenue et qui fonctionne bien pour les modules (atelier) c'est "d'installer" les modules dans /usr/bin/freecad/Mod/. Comme ça la mise à jour se fait uniquement sur les postes de travail au lieu des répertoires utilisateur.

Maintenant j'ai peur que ce ne soit pas possible pour les macros...sauf peut être à faire pointer le dossier de macro sur un répertoire dans le système...

Jbe : essaye de créer un répertoire Macro dans /usr/lib/freecad/ et de faire pointer le dossier de macro sur ce répertoire.
/!\ Encore une fois ceci n'est pas du tout conventionnel et c'est risqué.
Formations - Assistance - Développement : https://freecad-france.com
Post Reply