RhinoShack-login   RhinoShack-login   Rhino 3d help   RhinoShack-login

 

Code qui fonctionne pas???

Plus d'informations
il y a 1 an 5 mois #244 par onlyforpeace
onlyforpeace a créé le sujet : Code qui fonctionne pas???
Salut la tribe!!

à chaque fois que j'essais des conditions en script, ça ne fonctionne jamais du premier coup, ça me g....fle!! :pinch:

pourquoi la première ligne fonctionne et pas la deuxième dans:
If arrbox(1)(0) - arrbox(0)(0) < IntLong And arrbox(3)(1) - arrbox(0)(1) < IntLarg Then
rhino.ObjectColor strsurf, RGB(255, 255, 100)
Else
arrbox(1)(0) -arrbox(0)(0) < IntLarg And arrbox(3)(1) - arrbox(0)(1) < IntLong Then
rhino.ObjectColor strsurf, RGB(255, 255, 100)
End If

Merci d'avance....

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois - il y a 1 an 5 mois #245 par SwissRhino
SwissRhino a répondu au sujet : Code qui fonctionne pas???
C'est soit
ElseIf...Then
ou bien
Else (sans Then)...
"Else" veut dire "si aucune des autres conditions sont remplies, executer le code suivant..." The "Then" est implicite.
Call Main()
Sub Main()
	Dim A,B
	A = 1
	B = 2
	If A = 1 Then
		Call Rhino.Print("A equals one")
	ElseIf B = 1 Then
		Call Rhino.Print("B equals one")
	Else
		Call Rhino.Print("Neither A nor B are equal to one")
	End If
End Sub

--Mitch
Dernière édition: il y a 1 an 5 mois par SwissRhino.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #246 par onlyforpeace
onlyforpeace a répondu au sujet : Code qui fonctionne pas???
bin oui!!!

c'est tellement clair quand c'est toi qui le dit!!

merci!

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #247 par onlyforpeace
onlyforpeace a répondu au sujet : Code qui fonctionne pas???
encore une chose:
dans ce bout de code, lorsque j'ai une surface sur le Plan xy, il devrait informer la variable "casetype" en "plancher, mais non il laisse la case vide?
en fait j'aimerais que ce code me donne sur chaque plan d'un ensemble de plan, si c'est un plancher, une lisse ou un couple, voici le bout de code:

rhino.selectobject strsurf
center = Rhino.SurfaceAreaCentroid(strsurf)
centerpt = rhino.SurfaceClosestPoint(strsurf, center(0))
arrPlane = Rhino.SurfaceFrame(strsurf, centerpt)
arrbox = rhino.BoundingBox(strsurf, arrplane)

If arrbox(7)(2) = arrbox(1)(2) Then casetype = "plancher"
If arrbox(3)(1) = arrbox(5)(1) Then casetype = "lisse"
If arrbox(6)(0) = arrbox(0)(0) Then casetype = "couple"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #248 par SwissRhino
SwissRhino a répondu au sujet : Code qui fonctionne pas???
Bienvenue au monde de « floating point math » (virgule flottante) utilisée pour quasi tous les calculs en informatique.

fr.wikipedia.org/wiki/Virgule_flottante

Précautions d'emploi
Les calculs en virgule flottante sont pratiques, mais présentent divers désagréments, notamment :
leur précision limitée, qui se traduit par des arrondis (dus aux opérations, ainsi qu'aux changements de base implicites, si la base est différente de 10) qui peuvent s'accumuler de façon gênante.


Voir aussi: effbot.org/pyfaq/why-are-floating-point-...ns-so-inaccurate.htm (anglais)

Donc, les plupart des chiffres – à part des intégraux 1, 2, 3, 4 etc. – sont approximative en Rhino et aussi ailleurs en informatique. Il y a toujours une quantité hypermicroscopique de « bruit » dans chaque chiffre. Et si pour toi et pour moi on pense 1.00 = 1.00, l’ordi voit 1.0000003421 != 1.0000003567...

Pour cette raison, il ne faut jamais assumer que deux chiffres peuvent être exactement égaux…

Donc, au lieu de faire ça :
If arrbox(7)(2) = arrbox(1)(2) Then casetype = "plancher"
qui va probablement toujours retourner "False", il faut faire ça:
Tol=Rhino.UnitAbsoluteTolerance
(Ceci est le tolérance du fichier, mais on peut utiliser un n’importe quelle chiffre selon ce qu’on attend de précision)
If abs(arrbox(7)(2)-arrbox(1)(2))<Tol Then casetype = "plancher"
"abs" est la fonction "valeur absolue". Donc on dit là que si la valeur absolue de la différence entre deux chiffres est moins que la tolérance donnée, on les considère comme « egaux ». C’est « S.O.P » (standard operating procedure) dans la programmation.

En espérant que ça aide,
--Mitch

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 5 mois #249 par onlyforpeace
onlyforpeace a répondu au sujet : Code qui fonctionne pas???
ça à l'air de fonctionner...

merci !!

Connexion ou Créer un compte pour participer à la conversation.

Modérateurs: SwissRhinoJenniferlocaJoao
Temps de génération de la page : 0.203 secondes
Propulsé par Kunena

Powered by


 









3d design training








cadlantique.com









swissrhino.com