contactObject

Fragen, Anmerkungen und Hilfestellung zu DESITE MD/CUSTOM/SHARE

contactObject

Beitragvon lwfo » So 16. Dez 2018, 13:39

Guten Tag,

ich hätte eine Frage bezüglich der API createContactObject(). Ich möchte die Kontaktfläche zwischen einem Öffnungselement und einem überlappenden Raum als ein separates Objekt erstellen. Ich habe es dabei mit der Funktion createContactObject() versucht, jedoch funktioniert diese bei mir nur im Bezug auf Berührungsflächen. Überlappen sich die Elemente klappt dies leider nicht mehr oder wird ungenau, wenn die tol. bei der opt Variable erhöht wird.
Muss ich jetzt mit der cut API die Öffnung auf Höhe des Raumes schneiden und dann die API createContactObject benutzen oder geht das einfacher?

Vielen Dank und Beste Grüße!

Code: Alles auswählen
var opening_List= [];
var modelList = desiteAPI.getModelListByDomain("geometry");
var root = desiteAPI.getRootNodeByModel(modelList[0]);
var elements = desiteAPI.getContainedElements(root, 0);

var opt1 = {
locflag: 7,     // 1 = contact at top, 2 = contact at bottom, 4 = contact at sides (and combinations)
checkall: true, // if true, all given location combination checks must be true
tol: 1,     // maximum distance tolerance [m]
angle: 5.0,     // maximum angle deviation between normal vectors of opposite faces [�]
oppdir: true,   // flag that indicates that normal vectors of contacting faces must point in opposite directions
}

console.log(root);
desiteAPI.itClear();
desiteAPI.clearSelection(false);
desiteAPI.showAll(true);

//Filter die Bodenplatte des 1.OG raus und speicher die ObjektIDs in der Variable selectionSlab. um diese hinterher separieren zu können werden die ; rausgenommen

desiteAPI.itByFilter('ifcType', 'xs:string', 'IfcSpace', true, 'geometry');



var selectionSpace = desiteAPI.itGetObjectList();

desiteAPI.showElementsOnly(selectionSpace);
console.log("selectionOpening"+selectionSpace);

var objListSpace = selectionSpace.split(';');

desiteAPI.itClear();

desiteAPI.itByFilter('ifcType', 'xs:string', 'IfcOpeningElement', true, 'geometry');
desiteAPI.itByFilter('Pset_WallCommon:IsExternal', 'xs:boolean', 'true', true, 'geometry');
desiteAPI.itByFilter('Bauteiltyp', 'xs:string', 'IfcDoor', true, 'geometry');

var selectionDoor = desiteAPI.itGetObjectList();

desiteAPI.showElements(selectionDoor);
console.log("selectionDoor" + selectionDoor);


var objListDoor = selectionDoor.split(';');
desiteAPI.itClear();

var test =desiteAPI.getRootContainerList(modelList[0]);   

var Test = ('');
var testID = "";
for (i=0; i< elements.length; i++) {
   var name = desiteAPI.getPropertyValue(elements[i], "cpName", "xs:string")
   if (name == "Außentüren") {
      testID = elements[i];
   }
}

for(i=0;i<objListSpace.length ; i++){
               var space = objListSpace[i];
               console.log("1");
               for(j=0;j<objListDoor.length;j++){
                           var door = objListDoor[j];
                           
                           var schnitt = desiteAPI.hasContact(door,space, opt1);   
                           var schnitt1 = desiteAPI.isIncludedIn(door,space, opt1);   
                           console.log("schnitt"+schnitt);
                           console.log("schnitt1"+schnitt1);
                           console.log("space"+space);
                           if(schnitt==1){
                              console.log("space"+space);
                              var idnew = desiteAPI.createContactObject( testID,door,space, "", opt1 );
                              var idnew_Zurechnug =   desiteAPI.getPropertyValue(idnew,'DIN277_3','xs:string');
                              var bezeichnung = desiteAPI.getPropertyValue(door,'Bauteilobjekt','xs:string');
                              if(idnew_Zurechnug != undefined){
                                                   desiteAPI.deleteProperty(idnew,'DIN277_3','xs:string');
                                                   desiteAPI.setPropertyValue(idnew,'DIN277_3','xs:string','334-D');
                                                   desiteAPI.setPropertyValue(idnew,'Bauteilobjekt','xs:string',bezeichnung);
                                                   console.log("ok");
                                       }else{
                                                   desiteAPI.setPropertyValue(idnew,'DIN277_3','xs:string','334-D');
                                                   desiteAPI.setPropertyValue(idnew,'Bauteilobjekt','xs:string',bezeichnung);
                                       }
                           }
               }
}
lwfo
 
Beiträge: 1
Registriert: So 16. Dez 2018, 13:11

Re: contactObject

Beitragvon AlexRensch » Do 3. Jan 2019, 08:15

Hallo lwfo,
createContact berechnet, wie der Name sagt, Kontaktflächen von sich berührenden Objekten.
Wenn die Objekte ineinander ragen, müssen Sie ein Objekt mit cutObject teilen und dann die Kontaktfläche berechnen.
VG, Alexander Rensch
ceapoint
AlexRensch
 
Beiträge: 41
Registriert: Mi 4. Mai 2016, 09:27


Zurück zu DESITE MD / CUSTOM / SHARE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron