Code qui fonctionne pas???

il y a 2 ans 4 mois #244 par onlyforpeace
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 pour participer à la conversation.

il y a 2 ans 4 mois - il y a 2 ans 4 mois #245 par SwissRhino
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

Connexion pour participer à la conversation.

il y a 2 ans 4 mois #246 par onlyforpeace
bin oui!!!

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

merci!

Connexion pour participer à la conversation.

il y a 2 ans 4 mois #247 par onlyforpeace
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 pour participer à la conversation.

il y a 2 ans 4 mois #248 par SwissRhino
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 pour participer à la conversation.

il y a 2 ans 4 mois #249 par onlyforpeace
ça à l'air de fonctionner...

merci !!

Connexion pour participer à la conversation.

Modérateurs: SwissRhinoJenniferJoao
Temps de génération de la page : 0.147 secondes
Propulsé par Kunena

Powered by


3d design training



cadlantique.com


swissrhino.com