PDA

Voir la version complète : Noeud Texte



base80
27/05/2005, 21h42
Salut tout le monde.

J'ai une question a un COFFEE man.
Je voudrais charger un txt (texte) externe dans Cinema. Juste un petit fichier texte tout bete.

J'aimerais coupler un DU "Filename" d'un fichier texte a un Coffee et avoir en sortie un multi-line string.

Si c'est possible je vous montre comment télécommander vos modèles a partir du net ou d'un mail.

Je suis entrain de faire un iMac complètement automatisé pour me cracher des images sans intervention de Base (moi) et ces images serons mise sur un serveur automatiquement et montré dans un sujet du forum...
Un aspect de ces image est expliqué dans le sujet "Live Textures" mais je voudrais aller plus loin avec "Live Texte" et "Live Models"...

Si je ne suis pas trop clair ces derniers jours c'est parce que j'ai été éclairé par la main de dieu (il a comme E.T. une ampoule dans le doigt)

Guedinouff
27/05/2005, 22h13
Même si je ne pense pas être la personne que tu recherches, je vais essayer de regarder ton problème ce week-end. Je te poste mon avancée dans la v3 !
Si j'ai bien compris, tu souhaites récupérer le contenu d'un fichier texte pour le sortir sur une spline texte ?

base80
27/05/2005, 22h16
récupérer le texte comme string (texte) dans xpresso.

J'en fait ce que je veux par la suite...

v.montel
27/05/2005, 22h29
Salut base

Juste une idée éphémère, en passant, peut-être inutile : pourquoi ne pas aller voir du côté des formats de fichiers directement? Comme le dxf, que je me souviens avoir vu utilisé en tant que format texte et édité par un programmeur avec qui je travaillais. Il éditait directement son fichier dxf dans un text edit ou autre...

Ça peut éventuellement permettre de passer outre la limitation du *.txt de base, non?

Guedinouff
27/05/2005, 23h12
Bon j'ai essayé quelque chose de rapide ce soir. Je ne sais pas si çà peut t'aider.

C'est une expression qui ouvre une boîte de dialogue pour sélectionner un fichier et qui affiche si l'utilisateur a choisit Ouvrir, le contenu du fichier.
Par contre, il y a deux choses que je n'arrive pas à faire :
- lier une DU Nom de fichier avec un nœud de coffee car je n'ai pas trouvé de port d'entrée Nom de fichier dans le nœud coffee (je suis sous c4d 8.5). Si çà marche sous ta version, il suffit de supprimer de code d'ouverture de la boîte de dialogue et d'appeler ton port de Nom de fichier "FileName".
- charger plusieurs lignes d'un fichier. Pour résoudre ce problème, il doit peut-être falloir changer la variable qui contient le nombre de caractères qui sont récupérés.

Mon petit morceau de code :


main()
{
//ouvre la boîte de dialogue
var filename = GeGetStartupPath();
var result=filename->FileSelect("Sélectionner un fichier.", FALSE);
//
if (result==1)
{
//copie le contenu du fichier
var file=new(BaseFile);
file->Open(filename, GE_READ);
var myString = file->ReadString(file->GetLength(),GE_8BIT);
//
texte=myString;
}
}


Le fichier correspondant : http://ns2118.ovh.net/~deltazon/c4d/guedinouff_texte.c4d

J'ai testé un court texte en .txt et çà fonctionnait (avec les limitations citées plus haut).

base80
28/05/2005, 15h43
Super c'est presque ça

Dans la R.9 le Filename est considéré comme un string et il est donc éditable. Dan la 8.5 le filename est une catégorie apart malheureusement.
J'ai essayé de chipoter le coffee mais ça me fait des messages d'erreur

main()
{
//ouvre la boîte de dialogue
var filename = Filename; <---? ça n'a pas marché
var result=filename->FileSelect&#40;"Sélectionner un fichier.", FALSE&#41;;
//
if &#40;result==1&#41;
&#123;
//copie le contenu du fichier
var file=new&#40;BaseFile&#41;;
file->Open&#40;filename, GE_READ&#41;;
var myString = file->ReadString&#40;file->GetLength&#40;&#41;,GE_8BIT&#41;;
//
texte=myString;
&#125;
Ce que je voudrais obtenir ressemble a ça.
http://www.base80.com/xpresso-files/linkfile/linktext/linktext1.jpg

Majoul
28/05/2005, 16h13
Base, le Filename n’est pas un string mais une class, c’est la même chose dans toute les versions, la différence se trouve dans le nœud Coffee qui depuis la V8.5 dispose d’une entrée de type Filename.

Déjà évite de nommer ton entrée comme le nom de la class.
On suppose que notre entrée de type Filename est fname et la sortie string est texte





var fichier = new&#40;BaseFile&#41; ;

if&#40; fichier->Open&#40;fname, GE_READ, FILE_IGNOREOPEN&#41; &#41;
&#123;
texte = fichier->ReadString&#40;fichier->GetLength&#40;&#41;, GE_XBIT&#41; ;

fichier->Close&#40;&#41; ;
&#125;

base80
28/05/2005, 19h11
Mon histoire de string.. dans la R9.1 en Xpresso il y a moyen de composer le filename comme un string et de le passer a une entrée filename. Dans la 8.5 c'est pas possible, le filename est non éditable.

J'ai essayé un copié collé du coffee si dessus et ça n'a pas marché, je suis un noob total dans ce genre de syntaxe j'en suis même un peu effrayé.

base80
28/05/2005, 19h17
Ca marche
ruimac m'a fait ca;

main&#40;&#41;
&#123; var file_data;

if&#40;GeFileExist&#40;filename,FALSE&#41;&#41; //checks if the file exists &#40;the FALSE means it is checking for a file, not a directory. If it exists...
&#123;
file_data = new&#40;BaseFile&#41;; // creates a new file pointer
file_data->Open&#40;filename, GE_READ&#41;; // opens the file for reading
list=file_data->ReadString&#40;file_data->GetLength&#40;&#41;&#41;; // reads ALL the characters from the file as a string and assigns it to the list variable
file_data->Close&#40;&#41;; // closes the file
&#125;

&#125;

Guedinouff
31/05/2005, 18h22
Juste une question Majoul, sous la 8.5, tu fais comment pour avoir une entrée de type Filename. Parce que moi quand j'ajoute un port d'entrée à mon nœud coffee, les choix sont assez restreind et le type FileName n'est pas présent.

Une question à base maintenant : comment tu fais pour lire un texte multiligne (dans un fichier .txt par exemple), parce que moi, çà ne m'affichait que la première ligne et si j'ai bien lu, (mon code et le tien est à peu près identique à ce niveau). Est-ce que çà ne fonctionne que sous la v9 ?

Majoul
31/05/2005, 19h11
Je pensais que le port d’entrée Filename du nœud coffee à fait son apparition dans le V8.5.