private bool getLegs(BaseContainer dataKoerper) { DescID cid = new DescID(new DescLevel(SKELETT_UNTERKOERPER_BOX, C4dApi.DTYPE_BOOL, 0)); BaseContainer bcUnterKoerper = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BOOL); bcUnterKoerper.SetString(C4dApi.DESC_NAME, "Beine Aktivieren"); bcUnterKoerper.SetBool(C4dApi.DESC_DEFAULT, true); // Create the boolean check box under the previously created sub group (CIRCLEOBJECT_SUBGROUP) if (!descparams.Desc.SetParameter(cid, bcUnterKoerper, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } BaseContainer dataUnterKoerper = GetDataInstance(node); //Erstellt ein weiteres Feld für die Beine cid = new DescID(new DescLevel(SKELETT_BEINE, C4dApi.DTYPE_LONG, 0)); BaseContainer bcBeine = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG); bcBeine.SetString(C4dApi.DESC_NAME, "Beine"); //Definiert den minimalen Wert bcBeine.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert bool temp2 = dataKoerper.GetBool(SKELETT_UNTERKOERPER_BOX); if (temp2 == true && dataKoerper.GetInt64(SKELETT_TYPE) == 3)//Schaltung zwischen 4 Beiner und Menschen Ist der Type ein 4 Beiner so ist die Maximal zahl der Beine 4 { bcBeine.SetInt64(C4dApi.DESC_MAX, 4); bcBeine.SetBool(C4dApi.DESC_HIDE, false); Bein = true; Schwanz = true; } else if (temp2 == true && dataKoerper.GetInt64(SKELETT_TYPE) != 3)//Schaltung zwischen 4 Beiner und Menschen Ist der Type ein Mensch so ist die Maximal zahl der Beine 2 { bcBeine.SetInt64(C4dApi.DESC_MAX, 2); bcBeine.SetBool(C4dApi.DESC_HIDE, false); Bein = true; } else { bcBeine.SetBool(C4dApi.DESC_HIDE, true); Bein = false; } if (!descparams.Desc.SetParameter(cid, bcBeine, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
private bool getFingers(BaseContainer dataKoerper) { //Erstellt ein weiteres Feld für die Finger DescID cid = new DescID(new DescLevel(SKELETT_FINGER, C4dApi.DTYPE_LONG, 0)); BaseContainer bcFinger = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG); bcFinger.SetString(C4dApi.DESC_NAME, "Finger"); //Definiert den minimalen Wert bcFinger.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert bcFinger.SetInt64(C4dApi.DESC_MAX, 5); if (Hand == true) { if (dataKoerper.GetInt64(SKELETT_HAND) > 0) { bcFinger.SetBool(C4dApi.DESC_HIDE, false); } else { bcFinger.SetBool(C4dApi.DESC_HIDE, true); } } else { bcFinger.SetBool(C4dApi.DESC_HIDE, true); } if (!descparams.Desc.SetParameter(cid, bcFinger, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
private bool getFeets(BaseContainer dataKoerper) { //Erstellt ein weiteres Feld für die Füße DescID cid = new DescID(new DescLevel(SKELETT_FUESSE, C4dApi.DTYPE_LONG, 0)); BaseContainer bcFuesse = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG); bcFuesse.SetString(C4dApi.DESC_NAME, "Füße"); //Definiert den minimalen Wert bcFuesse.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert bcFuesse.SetInt64(C4dApi.DESC_MAX, 2); if (Bein == true && Schwanz == false) { if (dataKoerper.GetInt64(SKELETT_BEINE) > 0) { bcFuesse.SetInt64(C4dApi.DESC_MAX, 2); bcFuesse.SetBool(C4dApi.DESC_HIDE, false); } else { bcFuesse.SetBool(C4dApi.DESC_HIDE, true); } } else if (Bein == true && Schwanz == true) { if (dataKoerper.GetInt64(SKELETT_BEINE) > 0) { bcFuesse.SetInt64(C4dApi.DESC_MAX, 4); bcFuesse.SetBool(C4dApi.DESC_HIDE, false); } else { bcFuesse.SetBool(C4dApi.DESC_HIDE, true); } } else { bcFuesse.SetBool(C4dApi.DESC_HIDE, true); } if (!descparams.Desc.SetParameter(cid, bcFuesse, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
private bool getHands(BaseContainer dataKoerper) { //Erstellt ein weiteres Feld für die Hände DescID cid = new DescID(new DescLevel(SKELETT_HAND, C4dApi.DTYPE_LONG, 0)); BaseContainer bcHand = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG); bcHand.SetString(C4dApi.DESC_NAME, "Hände"); //Definiert den minimalen Wert bcHand.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert if (Hand == true) { //C4dApi.GePrint("anzahl Arme = " + dataKoerper.GetInt64(SKELETT_ARME)); if (dataKoerper.GetInt64(SKELETT_ARME) > 0) { bcHand.SetInt64(C4dApi.DESC_MAX, dataKoerper.GetInt64(SKELETT_ARME)); bcHand.SetBool(C4dApi.DESC_HIDE, false); } else { bcHand.SetBool(C4dApi.DESC_HIDE, true); } } else { bcHand.SetBool(C4dApi.DESC_HIDE, true); } if (!descparams.Desc.SetParameter(cid, bcHand, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
private bool getArms(BaseContainer dataKoerper) { //Erstellt ein weiteres Feld für die Arme DescID cid = new DescID(new DescLevel(SKELETT_ARME, C4dApi.DTYPE_LONG, 0)); BaseContainer bcArme = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_REAL); bcArme.SetString(C4dApi.DESC_NAME, "Arme"); //Definiert den minimalen Wert bcArme.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert bcArme.SetInt64(C4dApi.DESC_MAX, 2); bool temp = dataKoerper.GetBool(SKELETT_OBERKOERPER_BOX); if (dataKoerper.GetInt64(SKELETT_TYPE) == 3) { temp = false; bcArme.SetInt64(C4dApi.DESC_DEFAULT, 0); } if (temp == true) { bcArme.SetBool(C4dApi.DESC_HIDE, false); Hand = true; } else { bcArme.SetBool(C4dApi.DESC_HIDE, true); Hand = false; } //bcArme.SetBool(C4dApi.DESC_HIDE, true); if (!descparams.Desc.SetParameter(cid, bcArme, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
private bool getToes(BaseContainer dataKoerper) { //Erstellt ein weiteres Feld für die Zehen DescID cid = new DescID(new DescLevel(SKELETT_ZEHEN, C4dApi.DTYPE_LONG, 0)); BaseContainer bcZehen = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG); bcZehen.SetString(C4dApi.DESC_NAME, "Zehen"); //Definiert den minimalen Wert bcZehen.SetInt64(C4dApi.DESC_MIN, 0); //Definiert den maximalen Wert bcZehen.SetInt64(C4dApi.DESC_MAX, 5); BaseContainer dataUnterKoerper = GetDataInstance(node); if (Bein == true && dataUnterKoerper.GetInt64(SKELETT_TYPE) != 3)//Überprüfung auf 4 Beiner, ist es kein 4 Beiner so wird das Feld Zehen eingeblendet { if (dataKoerper.GetInt64(SKELETT_FUESSE) > 0) { bcZehen.SetBool(C4dApi.DESC_HIDE, false); } else { bcZehen.SetBool(C4dApi.DESC_HIDE, true); } } else { bcZehen.SetBool(C4dApi.DESC_HIDE, true); } if (!descparams.Desc.SetParameter(cid, bcZehen, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } return(false); }
//wird aufgerufen, wenn ein Event ausgeführt wurde //TODO: Override gelöscht - DS public bool OnDescriptionCommand(GeListNode node, DescriptionCommand desc) { long button = desc.id.GetAt(0).id; //BaseList2D ObjSelector = bc.GetLink(SKELETT_OBJ_AUSWAHL, doc); switch (button) { case SKELETT_BTN_CREATE: BaseContainer b = GetDataInstance(node); BaseDocument doc = C4dApi.GetActiveDocument(); BaseList2D ObjSelector = b.GetLink(SKELETT_OBJ_AUSWAHL, doc); /*Eingeforene Selektion Auswählen vom Typ Polygon ENDE*/ if (ObjSelector == null) { C4dApi.MessageDialog("Bitte wählen Sie zuerst ein Polygonobjekt aus, bevor Sie ein Biped erstellen!"); } else { long skelett = b.GetInt64(SKELETT_TYPE); if (skelett == 3) { this.makeAnimalJoints(node, desc); } else { this.makeJoints(node, desc); } } // C4dApi.GePrint("Der button Erstellen wurde gedrück "+objSe.GetNodeID()+objSe.GetName()); //ObjSe.GetName() liefert den namen des Selektierten Objekts zurück. break; case SKELETT_WICHTUNG_BTN: /*Eingefrorene Selektion Auswählen vom Typ Polygon START*/ BaseContainer b2 = GetDataInstance(node); BaseDocument doc2 = C4dApi.GetActiveDocument(); BaseObject op2 = b2.GetObjectLink(SKELETT_OBJ_AUSWAHL, doc2); BaseTag t = op2.GetTag(C4dApi.Tpolygonselection); //string selekname = t.GetName(); //BaseTag t2 = op2.GetTag(C4dApi.Tpolygonselection,1); //if (op2.GetTag(C4dApi.Tpolygonselection,2)==null) //{ } //C4dApi.GePrint(" blubb " + t2.GetName() + " der name der vorherigen Selektion lautet: " + selekname); //C4dApi.GePrint(" blubb der name der vorherigen Selektion lautet: " + selekname); //BaseObject j = this.wtagGlob.GetJoint(1, doc2); //C4dApi.GePrint("Knochenname "+j.GetName()); //string joinName = j.GetName(); //if (joinName == selekname) //{ // C4dApi.GePrint("stimmen ueberein"); //} //SelectionTag st = SelectionTag.Alloc(C4dApi.Tpolygonselection); //BaseSelect sel = st.GetBaseSelect(); //sel.Select(t.GetNodeID); BaseTag joints = op2.GetTag(C4dApi.Tweights); //this.wtagGlob = joints.Get C4dApi.GePrint("wichtung setzen bones anzahl: " + this.wtagGlob.GetJointCount()); //Punkte der PolygonSelektion abrufen //int pt = op2.GetTagDataCount(C4dApi.Tpolygonselection); //C4dApi.GePrint("Anzahl der Punkte : " + pt); //doc2.SetActiveObject(b2.GetObjectLink(SKELETT_OBJ_AUSWAHL, doc2)); SelectionTag st = SelectionTag.Alloc(C4dApi.Tpointselection); BaseSelect bs = st.GetBaseSelect(); PointObject pObj = PointObject.GetPointObject(op2); //pObj.GetPointS(); //for (int i = 0; i < pObj.GetPointCount(); i++) //{ //} C4dApi.GePrint("test" + bs.Select(0)); bs.Select(0); BaseSelect SelectedPoints = pObj.GetPointS(); //for (BaseTag pointTag = op2.GetFirstTag(); pointTag; pointTag = pointTag.GetNext()) //{ // desc.id.GetAt(0).id = 1000; // pointTag.Message(C4dApi.MSG_DESCRIPTION_COMMAND, desc); //} BaseTag btA = doc2.GetActiveTag(); C4dApi.GePrint("TypeName : " + btA.GetTypeName() + " Name " + btA.GetName()); if (btA.GetTypeC4D() == C4dApi.Tpolygonselection) { for (int j = 0; j < wtagGlob.GetJointCount(); j++) { BaseObject JointName = wtagGlob.GetJoint(j, doc2); if (btA.GetName() == JointName.GetName()) { for (int i = 0; i < pObj.GetPointCount(); i++) { if (SelectedPoints.IsSelected(i)) { this.wtagGlob.SetWeight(j, i, 0.04); C4dApi.GePrint("Der Punkt mit dem Index " + i + " ist selektiert"); } } } } } else { } //C4dApi.GePrint("anzahl der pt " + pObj.GetPointCount()); //pObj.SetPointAt(1, new Vector3D(1, 2, 3)); //XPressoTag xt = XPressoTag.Alloc(); //xt = (BaseSelect)t; // this.wtagGlob.SetWeight(1, 2, 1.0/100); //Setweeight 1.0 == 100 entspricht 0.42 == 42.0 entspricht Deshalb ist es einfacher direkt durch hundert zu teilen break; } return(true); }
private bool generate() { // Diese Abfrage lädt die den Reiter Objekt if (!descparams.Desc.LoadDescription("obase")) { return(false); } //Erstellen der ComboBox zur auswahl des Skelettes if (this.getComboBoxCharakter() == true) { return(false); } //Erstellen der Trennlinie if (this.getSeperator() == true) { return(false); } BaseContainer dataKoerper = GetDataInstance(node); //Speichert alle elemente von der Liste in den Container if (dataKoerper.GetInt64(SKELETT_TYPE) != 3) //Ist die ID 3 so wurde ein 4 Beiner ausgewählt, da diese keine Arme haben wird der Komplette Block für die Arme im Intrface ausgeblendet { if (this.getTorso() == true) { return(false); } } //Abfragen ob ein Oberkörper erstellt werden soll //DescID singleid = descparams.Desc.GetSingleDescID(); //data = ((BaseList2D)node).GetDataInstance(); // Arme erstellen if (this.getArms(dataKoerper) == true) { return(false); } // Hände erstellen if (this.getHands(dataKoerper) == true) { return(false); } // Finger erstellen if (this.getFingers(dataKoerper) == true) { return(false); } if (this.getSeperatorTorso() == true) { return(false); } if (this.getLegs(dataKoerper) == true) { return(false); } if (this.getFeets(dataKoerper) == true) { return(false); } if (this.getToes(dataKoerper) == true) { return(false); } if (this.getSeperatorFeetSpine() == true) { return(false); } if (this.getSpineLink() == true) { return(false); } if (this.getNeckLink() == true) { return(false); } if (this.getSeperatorSpineTail() == true) { return(false); } if (this.getTail() == true) { return(false); } if (this.getSeperatorTailSelector() == true) { return(false); } //Objektauswahlfeld erstellen DescID cid = new DescID(new DescLevel(SKELETT_OBJ_AUSWAHL, C4dApi.DTYPE_BASELISTLINK, 0)); BaseDocument doc = C4dApi.GetActiveDocument(); // alle vorhandenen Objekte im Dokument in die Variable doc Speicerhn BaseContainer objSel = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BASELISTLINK); // Basecontainer vom Typ BaseLink da wird Objekte verlinken , referenzieren objSel.SetLink(SKELETT_OBJ_AUSWAHL, doc); //SelectFeld erstellen in dem ein Objekct gebunden werden kann, ist nötig damit später knochen dem Modell zugewiesen werden können! objSel.SetString(C4dApi.DESC_NAME, "Polygonobjekt Wählen"); if (!descparams.Desc.SetParameter(cid, objSel, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(true); } //Erstellt eine Schaltfläsche cid = new DescID(new DescLevel(SKELETT_BTN_CREATE, C4dApi.DTYPE_BUTTON, 0)); BaseContainer bcButton = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BUTTON); //Erstellt einen GUI (Button) bcButton.SetInt64(C4dApi.DESC_CUSTOMGUI, C4dApi.DTYPE_BUTTON); //Erstellt das Label für den Button bcButton.SetString(C4dApi.DESC_NAME, "Erstellen"); if (!descparams.Desc.SetParameter(cid, bcButton, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES)))) { return(false); } if (this.getWeightBtn() == true) { return(false); } descparams.Flags |= DESCFLAGS_DESC.DESCFLAGS_DESC_LOADED; return(true); }