César Vonc
23/09/2013, 12h22
Je propose de tenir un sujet de référencement des bogues en tout genre liés à la programmation Python, afin de ne pas submerger le sujet de référencement général de fragments de codes pas très explicites.
Le but est non seulement de référencer les problèmes connus afin d'éviter toute perte de temps, mais également proposer des solutions de secours.
S'il est également possible de rapporter ces coquilles pour une future correction, ce ne serait évidemment pas plus mal. ^^
--
Vector.__rxor__ : (http://frenchcinema4d.fr/#post1018268)Opérateur erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)BaseObject.CopyTagsTo : (http://frenchcinema4d.fr/#post1018268)Description erronée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)BaseDraw.GetEditorCamera : (http://frenchcinema4d.fr/#post1018268)Argument erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)ViewportSelect.GetPixelInfoPolygon : (http://frenchcinema4d.fr/#post1018268)Exemple erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)SendModelingCommand MCOMMAND_SPLIT : (http://frenchcinema4d.fr/#post1018268)Description incomplète (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)SendModelingCommand MCOMMAND_JOIN : (http://frenchcinema4d.fr/#post1018268)Fonction boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)Offd : (http://frenchcinema4d.fr/#post1018268)Taille boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
GvPort.SetName(name) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée
(http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)GvNode.AddPort(c4d.GV_PORT_ INPUT, c4d.GV_OBJECT_OPERATOR_OBJECT_IN) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée
(http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)GvNode.SetPortType(port, id) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)
(http://frenchcinema4d.fr/#post1040243)
--
R15.037 - Vector.__rxor__(self, other)
L'opérateur % entre deux vecteurs ne renvoie pas la multiplication entre chaque composant du vecteur mais le produit vectoriel.
v = c4d.Vector(1,2,3) % c4d.Vector(2,3,4) # Vector(-1, 2, -1)
Solution :
v = c4d.Vector(1,2,3).__rxor__(c4d.Vector(2,3,4)) # Vector(2, 6, 12)
--
R15.037 - BaseObject.CopyTagsTo(dest, visible, variable, hierarchial)
Description erronée :
Set the ip of the object.
--
R15.037 - BaseDraw.GetEditorCamera(doc)
Retourne une erreur à cause de l'argument doc.
bd = doc.GetActiveBaseDraw()
camera = bd.GetEditorCamera(doc) # TypeError: GetEditorCamera() takes no arguments (1 given)
Solution :
bd = doc.GetActiveBaseDraw()
camera = bd.GetEditorCamera()
--
R15.037 - ViewportSelect.GetPixelInfoPolygon(x, y)
L'exemple utilise GetPixelInfoPoint au lieu de GetPixelInfoPolygon.
infopoint = viewportselect.GetPixelInfoPoint(x, y)
--
R15.037 - c4d.utils.SendModelingCommand(command, list[, mode=MODIFY_ALL[, bc[, doc[, flags]]]]) - MCOMMAND_SPLIT
Manque de précision : la commande MCOMMAND_SPLIT renvoie une liste d'objets.
--
R15.037 - c4d.utils.SendModelingCommand(command, list[, mode=MODIFY_ALL[, bc[, doc[, flags]]]]) - MCOMMAND_JOIN
La commande MCOMMAND_JOIN unit tous les objets de la même hiérarchie se trouvant après le premier objet de la liste.
Les coordonnées du nouvel objet obtenu sont les mêmes que celles du premier objet de la liste, alors que pour correspondre aux anciens objets, ces coordonnées doivent être nulles.
# Créez au préalable trois objets éditables
op = doc.GetFirstObject()
op2 = op.GetNext()
ops = [op, op2]
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_JOIN,
list = ops,
doc = doc)
if res : doc.InsertObject(res[0]) # Les trois objets sont unis et décalés
c4d.EventAdd()
Solution :
Créer virtuellement un objet neutre dans lequel placer les objets à unir.
# Créez au préalable trois objets éditables
op = doc.GetFirstObject()
op2 = op.GetNext()
ops = [op, op2]
neutre = c4d.BaseObject(c4d.Onull)
for obj in ops : obj.GetClone().InsertUnder(neutre)
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_JOIN,
list = [neutre],
doc = doc)
if res : doc.InsertObject(res[0]) # Les deux objets sont unis et correctement positionnés
c4d.EventAdd()
--
R15.037 - Offd (Déformation libre)
Impossible de définir la taille de la grille, bien que le champ soit modifiable.
obj = c4d.BaseObject(c4d.Offd)
obj[c4d.FFDOBJECT_SIZE] = c4d.Vector(10.0) # Valeur modifiée, mais visuellement à sa valeur par défaut (300).
doc.InsertObject(obj)
c4d.EventAdd()
Solution :
Proposée par xs_yann (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018269&viewfull=1#post1018269) : Mettre à jour manuellement la propriété c4d.Tpoint.
Le but est non seulement de référencer les problèmes connus afin d'éviter toute perte de temps, mais également proposer des solutions de secours.
S'il est également possible de rapporter ces coquilles pour une future correction, ce ne serait évidemment pas plus mal. ^^
--
Vector.__rxor__ : (http://frenchcinema4d.fr/#post1018268)Opérateur erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)BaseObject.CopyTagsTo : (http://frenchcinema4d.fr/#post1018268)Description erronée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)BaseDraw.GetEditorCamera : (http://frenchcinema4d.fr/#post1018268)Argument erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)ViewportSelect.GetPixelInfoPolygon : (http://frenchcinema4d.fr/#post1018268)Exemple erroné (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)SendModelingCommand MCOMMAND_SPLIT : (http://frenchcinema4d.fr/#post1018268)Description incomplète (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)SendModelingCommand MCOMMAND_JOIN : (http://frenchcinema4d.fr/#post1018268)Fonction boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
(http://frenchcinema4d.fr/#post1018268)Offd : (http://frenchcinema4d.fr/#post1018268)Taille boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018268&viewfull=1#post1018268)
GvPort.SetName(name) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée
(http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)GvNode.AddPort(c4d.GV_PORT_ INPUT, c4d.GV_OBJECT_OPERATOR_OBJECT_IN) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée
(http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)GvNode.SetPortType(port, id) (http://frenchcinema4d.fr/#post1040243) : Fonction boguée (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1040243&viewfull=1#post1040243)
(http://frenchcinema4d.fr/#post1040243)
--
R15.037 - Vector.__rxor__(self, other)
L'opérateur % entre deux vecteurs ne renvoie pas la multiplication entre chaque composant du vecteur mais le produit vectoriel.
v = c4d.Vector(1,2,3) % c4d.Vector(2,3,4) # Vector(-1, 2, -1)
Solution :
v = c4d.Vector(1,2,3).__rxor__(c4d.Vector(2,3,4)) # Vector(2, 6, 12)
--
R15.037 - BaseObject.CopyTagsTo(dest, visible, variable, hierarchial)
Description erronée :
Set the ip of the object.
--
R15.037 - BaseDraw.GetEditorCamera(doc)
Retourne une erreur à cause de l'argument doc.
bd = doc.GetActiveBaseDraw()
camera = bd.GetEditorCamera(doc) # TypeError: GetEditorCamera() takes no arguments (1 given)
Solution :
bd = doc.GetActiveBaseDraw()
camera = bd.GetEditorCamera()
--
R15.037 - ViewportSelect.GetPixelInfoPolygon(x, y)
L'exemple utilise GetPixelInfoPoint au lieu de GetPixelInfoPolygon.
infopoint = viewportselect.GetPixelInfoPoint(x, y)
--
R15.037 - c4d.utils.SendModelingCommand(command, list[, mode=MODIFY_ALL[, bc[, doc[, flags]]]]) - MCOMMAND_SPLIT
Manque de précision : la commande MCOMMAND_SPLIT renvoie une liste d'objets.
--
R15.037 - c4d.utils.SendModelingCommand(command, list[, mode=MODIFY_ALL[, bc[, doc[, flags]]]]) - MCOMMAND_JOIN
La commande MCOMMAND_JOIN unit tous les objets de la même hiérarchie se trouvant après le premier objet de la liste.
Les coordonnées du nouvel objet obtenu sont les mêmes que celles du premier objet de la liste, alors que pour correspondre aux anciens objets, ces coordonnées doivent être nulles.
# Créez au préalable trois objets éditables
op = doc.GetFirstObject()
op2 = op.GetNext()
ops = [op, op2]
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_JOIN,
list = ops,
doc = doc)
if res : doc.InsertObject(res[0]) # Les trois objets sont unis et décalés
c4d.EventAdd()
Solution :
Créer virtuellement un objet neutre dans lequel placer les objets à unir.
# Créez au préalable trois objets éditables
op = doc.GetFirstObject()
op2 = op.GetNext()
ops = [op, op2]
neutre = c4d.BaseObject(c4d.Onull)
for obj in ops : obj.GetClone().InsertUnder(neutre)
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_JOIN,
list = [neutre],
doc = doc)
if res : doc.InsertObject(res[0]) # Les deux objets sont unis et correctement positionnés
c4d.EventAdd()
--
R15.037 - Offd (Déformation libre)
Impossible de définir la taille de la grille, bien que le champ soit modifiable.
obj = c4d.BaseObject(c4d.Offd)
obj[c4d.FFDOBJECT_SIZE] = c4d.Vector(10.0) # Valeur modifiée, mais visuellement à sa valeur par défaut (300).
doc.InsertObject(obj)
c4d.EventAdd()
Solution :
Proposée par xs_yann (http://frenchcinema4d.fr/showthread.php?77126-Python-Coquilles-et-bogues&p=1018269&viewfull=1#post1018269) : Mettre à jour manuellement la propriété c4d.Tpoint.