PDA

Voir la version complète : Ajouter des points à un objet polygonal



Artza
25/11/2002, 18h25
Salut,
je cherche à créér des pièces mécaniques par programation et j'ai trouvé beaucoup d'exemples sur la création de primitives ou la modification d'objets existants. Par contre je ne trouve pas d'exemple sur la création/ajout de points et surfaces sur des objets polygonaux.

Si quelqu'un sait quelque chose, merci d'avance...

pierre
25/11/2002, 20h11
les primitives (objets tels que cubes,cylindres....) ne peuvent être modifiées (mis à part les transformations du plan : échelle, rotation ou nombres de segments) que si elles sont rendues modifiables => touche "c" ou encore menu structure -> autoriser modifications.

là, maintenant , cette opération faite, tu peux voir de tes yeux émerveillés que tu peux accéder à la majeure partie des sous-menus du menu "structure" en fonction de l'outil "point" ou "polygone" choisi.

voilà, j'espère que cela puisse répondre à ta question

:)

Aurety
25/11/2002, 20h51
Je ne sais pas si c'est ce que voulait dire Artza, Pierre... J'ai cru comprendre qu'il souhaitait plutôt générer des points ou des polygones par programmation. Par exemple le plugin Solidspline, Eyelasher de Samir ou Quick Pipe qui créent des polygones grâce aux splines... Peut-être Samir, Tengaal ou Pascal avec ses Xpresso pourraient te dire. :? Désolé de ne pas pouvoir t'aider.

Tengaal
25/11/2002, 20h51
En effet, la doc sur ce domaine est très limitée !
Voici un bout de code Coffee qui explique le principe pour ajouter des points à un objet polygonal, et pour créer des polygones:


-----------------------------------------------------------------------------------
//COMMENT AJOUTER DES POINTS A UN OBJET POLYGONAL

// "objet" désigne un objet polygonal avec "old_nbpoints" points.

//new_nbpoints: nombre de points que l'on souhaite ajouter
var vc=new(VariableChanged);
var bt=new(BackupTags);

//on incrémente le nombre de points
vc->Init(old_nbpoints,old_nbpoint+new_nbpoints);
bt->Init(objet);

//on demande la création des points
ok=objet->MultiMessage(MSG_POINTS_CHANGED,vc);
if(!ok) {bt->Restore();return FALSE;}

// les points ont été créés, on peut les positionner avec la fonction
// objet->SetPoint(indice_point,vector(X,Y,Z));
// à répéter pour chacun des nouveaux points créés.

--------------------------------------------------------------------------------------
// COMMENT FAIRE DES POLYGONES A PARTIR DE POINTS...

// il faut d'abord avoir le tableau des polygones, on peut le créer:
// var poly_tab=new (array,4*total_nbpolygones);
// ou bien si "objet" contient déjà des polygones il faut y accéder par:
// var poly_tab=objets->GetPolygons();

// old_nbpolygones: ancien nombre de polygones de "objet"
// new_nbpolygones: nombre de polygones à ajouter

//on incrémente le nombre de polygones
var vc=new(VariableChanged);
var bt=new(BackupTags);
vc->Init(old_nbpolygones,old_nbpolygones+new_nbpolygon es);
bt->Init(objet);

//on demande la création des polygones
ok=objet->MultiMessage(MSG_POLYGONS_CHANGED,vc);
if(!ok) {bt->Restore();return FALSE;}

//les polygones ont été créés, on les définit par 4 points (quadrangle)
// indice_polygone: numéro du polygone dans le tableau poly_tab
poly_tab[4*indice_polygone+0]=indice_point1;
poly_tab[4*indice_polygone+1]=indice_point2;
poly_tab[4*indice_polygone+2]=indice_point3;
poly_tab[4*indice polygone+3]=indice_point4;
// il faut répéter cette séquence pour chaque polygone (indice_polygone)


//on fixe les polygones créés en actualisant le tableau de polygones
objet->SetPolygons(poly_tab);

-----------------------------------------------------------------------------------


IMPORTANT: Cet exemple de code est compatible avec les versions 6 à 7 de C4D, pour la version 8 les accès aux objets ont changés et aucune documentation actuelle sur ces changements n'existe pas.

Pour plus d'infos sur ces fonctions voir la doc sur le SDK Coffee 6.3, téléchargeable sur le site de Maxon
http://www.plugincafe.com/sdk_downloads.asp

pierre
25/11/2002, 21h41
ok g lu trop vite son post....:oops:

faut que je pose mes lunettes en contreplaqué et que je reprenne un peu de carotène.

Aurety
25/11/2002, 22h14
Oui mais toi au moins tu as répondu ! :poucehaut: Les autres, c'est un peu du non assistance de personne en danger !! Réveillez-vous les lecteurs, nous avons besoin de tout le monde dans les forums ! Lire c'est bien, mais foutrecouille !! Soyons citoyens !!! et dire... bientôt le 1000è membre.

teg
25/11/2002, 22h52
Oui, Aurety, t'as raison, tout le monde doit participer, mais bon, sur ce coup, c'etait pas non plus super accessible comme question, non? :o

enfin moi, je ne suis pas pret de savoir y repondre en tout cas :oops:

Tengaal
25/11/2002, 23h21
C'est sûr que ce genre de réponse n'est pas des plus communes !
Ca touche plus à la programmation qu'à la 3D, et la plupart des utilisateurs de C4D n'ont qu'une utilisation simple du Coffee, c'est donc normal que peu de réponses aient été données. :wink:

Artza
26/11/2002, 15h07
Merci Tengaal, c'est exactement ce que je recherchais... Dire que je me torture l'esprit depuis un moi, quand je vois la solution je me dis que j'aurais pu chercher quelques années...

Je suis d'accord avec Aurety à propos de la participation de chacun.
Je pense surtout qu'avant de poser des questions basiques il faut soi-même faire des recherches, c'est comme ça qu'on apprend.

Pour ma part je ne me suis penché sue COFFEE que depuis quelques semaines. Je vous promet que si je peux aider ce sera avec plaisir. Côté programmation je travil sur Delphi depuis quelques années, ça aide un peu.

A bientôt...

marcus
21/05/2003, 01h00
:o avec la meilleur des volontés jusqu'à présent coffee pour moi reste encore un lieu inexploré...ce soft est vaste et j'en suis pas encore à la programmation...
sorry :o même pas à l'animation...