Hello,
I need to change some Properties of a Steel Beam Element in Open Building Designer Update 8 using the C-Api "stfc-api"..
Until now I've been able to read the "LinearMember" out of the EditElementHandle and to change some Properties in it using
following Code:
virtual StatusInt _OnElementModify(EditElementHandleR eehSteelBeam) override { StatusInt statusInt; MSElementDescrP elmDescrP = eehSteelBeam .GetElementDescrP(); STFLinearMemberList* linearMemberListP=mdlSTFLinearMemberList_constructFromDescr(elmDescrP , false); //SUCCESS if (!linearMemberListP)return ERROR; STFLinearMember* linearMemberP=mdlSTFLinearMemberList_getLinearMember ( linearMemberListP ); //SUCCESS if (!linearMemberP)return ERROR; DPoint3d pP = { 0,0,0 }; DPoint3d pQ = { 0,0,0 }; mdlSTFLinearMember_getPQPoints(linearMemberP,&pP, &pQ); //SUCCESS pQ.z += 2000000; statusInt= mdlSTFLinearMember_setPQPoints(linearMemberP, &pP, &pQ); //SUCCESS statusInt=mdlSTFLinearMember_save(linearMemberP, false); //ERROR: 32768 //statusInt = mdlSTFLinearMember_replaceInDgn(linearMemberP); ////ERROR: 32768 mdlSTFLinearMemberList_free(&linearMemberListP); return SUCCESS;
But when I try to save it to the DGN It allways brings The ErrorSatus (StatusInt) = 32768 and nothing happens.
I tried "mdlSTFLinearMember_replaceInDgn" , "mdlSTFLinearMember_save" and "mdlSTFLinearMember_addToDgnExt" but nothing is working.
Hopefully there is sombody out there with some experience with the Open Building SDK.
Many thanks in advance for your efforts
Greetings
Manuel Höger
Softwareentwicklung | mhoeger@cadcom.de Tel: +49 30 - 53 63 62 – 44 | Mobil: +49 162 - 53 18 640
cadcom® Systemhaus GmbH Stralauer Platz 33 | Kontorhaus |10243 Berlin Tel: +49 30 - 53 63 62 – 0 | Fax: +49 30 - 53 63 62 - 30 www.cadcom.de
since Update 6, the default structural elements have been replaced with new generation structural elements. Most likely, the element handle eehSteelBeam contains this new generation structural element. The API for them is mdlSTFStructuralMember found in mdlstfstructuralmember.fdf and should be located next to mdlstflnrmem.fdf
The new functions to replace old ones are
mdlSTFStructuralMemberList_constructFromElementDescr
mdlSTFStructuralMemberList_getStructuralMember
mdlSTFStructuralMember_getPQPoints
mdlSTFStructuralMember_setPQPoints
mdlSTFStructuralMember_replaceInDgn
The old mdlSTFLinearMember API is still available for these new elements as read-only.
Please let me know if this solves the issue
Answer Verified By: Manuel Höger
Hi Mykolas,
Is it possible that you send me the rest of the mdlstfstructuralmember_ header signatures? I want to create a structural member as well and at the moment I'm doing this with a dotnet workaround. This is not very satisfying.
Manu
Here it is
TFAPI_EXPOSE void mdlSTFStructuralMemberClass_freeMem ( void* pMem ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_constructFromCurveDescr ( STFStructuralMemberList* pThis, MSElementDescr* pDescr, DgnModelRefP pModelRef ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_initialize ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_initFromElementDescr ( STFStructuralMember* pThis, MSElementDescr* pDescr ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_copeWithDefaults ( STFStructuralMember* pThis, STFStructuralMember* pThat, bool cutAtStart ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_constructFromElementDescr ( MSElementDescr* pDescr ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setRotation ( STFStructuralMember* pThis, double rotation ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setRotationDegrees ( STFStructuralMember* pThis, double rotation ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getRotation ( STFStructuralMember const* pThis, double* pRotation ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getRotationDegrees ( STFStructuralMember const* pThis, double* pRotation ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPlacementPoint ( STFStructuralMember* pThis, int placementPoint ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getPlacementPoint ( STFStructuralMember const* pThis, int* pPlacementPoint ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getInsertOffset ( STFStructuralMember const* pThis, double* pOffsetX, double* pOffsetY ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setInsertOffset ( STFStructuralMember* pThis, double offsetX, double offsetY ); TFAPI_EXPOSE bool mdlSTFStructuralMember_isMirrored ( STFStructuralMember const* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setMirror ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_resetMirror ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setSlope ( STFStructuralMember* pThis, double slope ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPQPoints ( STFStructuralMember* pThis, DPoint3d* pP, DPoint3d* pQ ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getPQPoints ( STFStructuralMember* pThis, DPoint3d* pP, DPoint3d* pQ ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setFullCrossSection ( STFStructuralMember* pThis, WChar const* fullSectionName ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setCrossSection ( STFStructuralMember* pThis, int shapeType, WChar const* shapeClass, WChar const* sectionName ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPSSection ( STFStructuralMember* pThis, STFPSSection const* pSection ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getCrossSection ( STFStructuralMember const* pThis, STFPSSectionList** pSectionList ); TFAPI_EXPOSE bool mdlSTFStructuralMember_hasFireproofing ( STFStructuralMember* pThis ); TFAPI_EXPOSE MSElementDescr* mdlSTFStructuralMember_getFireproofingElement ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setCatalogItem ( STFStructuralMember* pThis, TFCatalogItemList* pCatalogItem ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setCatalogItem2 ( STFStructuralMember* pThis, WChar const* pDataGroupType, WChar const* pDataGroupItem, bool updatePartFamilyValues ); TFAPI_EXPOSE TFCatalogItemList* mdlSTFStructuralMember_getCatalogItem ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_initNamedProperties ( STFStructuralMember* pThis, TFWStringList const* pType, TFWStringList const* pName ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getNamedPropertyValue ( STFStructuralMember const* pThis, TFWStringList const* pPropName, bool bDuplicate, TFWStringList** ppPropValue ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setNamedPropertyValue ( STFStructuralMember* pThis, TFWStringList const* pPropName, TFWStringList const* pPropValue ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPartNameAndFamily ( STFStructuralMember* pThis, TFWStringList const* pPartName, TFWStringList const* pPartFamily ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPartFamily ( STFStructuralMember* pThis, TFWStringList const* pPartFamily ); TFAPI_EXPOSE TFWStringList* mdlSTFStructuralMember_getPartFamily ( STFStructuralMember const* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setPartName ( STFStructuralMember* pThis, TFWStringList const* pPartName ); TFAPI_EXPOSE TFWStringList* mdlSTFStructuralMember_getPartName ( STFStructuralMember const* pThis ); TFAPI_EXPOSE TFWStringList* mdlSTFStructuralMember_getMaterialName ( STFStructuralMember const* pThis ); TFAPI_EXPOSE TFWStringList* mdlSTFStructuralMember_getMaterialGrade ( STFStructuralMember const* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_initStructuralDataFromPart ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setTypeString ( STFStructuralMember* pThis, WChar const* pTypeString ); ( STFStructuralMember* pThis, int stringNumber, WChar const* str ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setMark ( STFStructuralMember* pThis, WChar const* pMark ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setMaterial ( STFStructuralMember* pThis, WChar const* pName, WChar const* pGrade ); TFAPI_EXPOSE MSElementDescr* mdlSTFStructuralMember_createElementWritten ( STFStructuralMember* pThis, DgnModelRefP pModelRef ); TFAPI_EXPOSE MSElementDescr* mdlSTFStructuralMember_createElement ( STFStructuralMember const* pThis, DgnModelRefP pModelRef ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_swap ( STFStructuralMember* pThis, STFStructuralMember* pThat ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_duplicate ( STFStructuralMember* pThis, STFStructuralMemberList** ppCopy ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMember_getGeometryAtFraction ( STFStructuralMember* pThis, double start, double end ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_replaceInModel ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_updateWithObdDataInModel ( STFStructuralMember* pThis ); TFAPI_EXPOSE bool mdlSTFStructuralMember_hasStructuralDataAttached ( STFStructuralMember* pThis ); TFAPI_EXPOSE TFFormRecipeList* mdlSTFStructuralMember_getTFFormRecipeList ( STFStructuralMember* pThis ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_getNext ( STFStructuralMemberList* pThis ); TFAPI_EXPOSE void mdlSTFStructuralMemberList_free ( STFStructuralMemberList** ppThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_setNext ( STFStructuralMemberList* pThis, STFStructuralMemberList* pNext ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_construct ( void ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_construct2 ( STFStructuralMemberList** ppThis, STFStructuralMember* pStructuralMember ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_getLast ( STFStructuralMemberList* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_append ( STFStructuralMemberList** ppThis, STFStructuralMemberList* pAppendList ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_addMember ( STFStructuralMemberList** ppThis, STFStructuralMember* pStructuralMember ); TFAPI_EXPOSE STFStructuralMember* mdlSTFStructuralMemberList_getStructuralMember ( STFStructuralMemberList* pThis ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_duplicate ( STFStructuralMemberList* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_prepend ( STFStructuralMemberList** ppThis, STFStructuralMemberList* pAdd ); TFAPI_EXPOSE void mdlSTFStructuralMemberList_insertList ( STFStructuralMemberList* pThis, STFStructuralMemberList* pInsert ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_unlinkNode ( STFStructuralMemberList** ppThis, STFStructuralMemberList* pRemove ); TFAPI_EXPOSE int mdlSTFStructuralMemberList_getIndex ( STFStructuralMemberList const* pThis, STFStructuralMemberList const* pSearch ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMemberList_reverse ( STFStructuralMemberList** ppThis ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_getNode ( STFStructuralMemberList* pThis, int index ); TFAPI_EXPOSE int mdlSTFStructuralMemberList_getCount ( STFStructuralMemberList const* pThis ); TFAPI_EXPOSE STFStructuralMemberList* mdlSTFStructuralMemberList_constructFromFilePos ( ULong filePos, DgnModelRefP pModelRef ); TFAPI_EXPOSE DgnModelRefP mdlSTFStructuralMember_getModelRef ( STFStructuralMember const* pThis ); TFAPI_EXPOSE TFIdList* mdlSTFStructuralMember_getFireProofingIdList ( STFStructuralMember const* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setFireProofingIdList ( STFStructuralMember* pThis, TFIdList* pIdList ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_reWriteFireProofingIdListToFile ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_replaceInDgn ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setStructuralPropertyByName ( STFStructuralMember* pThis, WChar const* name, WChar const* value ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_cope ( STFStructuralMember* pThis, STFStructuralMember* pThat, bool cutAtStart, int layout, int edgeLayout, double flangeClearance, double webClearance, double radiusCorner ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_copeRich ( STFStructuralMember* pThis, STFStructuralMember* pThat, bool cutAtStart, int layout, int edgeLayout, double topOutside, double topEdge, double topInside, double downOutside, double downEdge, double downInside, double web, double radius ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_delete ( STFStructuralMember* pThis ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_setSymbology ( STFStructuralMember* pThis, TFSymbology* pSymbology ); TFAPI_EXPOSE StatusInt mdlSTFStructuralMember_getOrientationVectors ( STFStructuralMember const* pThis, DVec3d* pXVec, DVec3d* pYVec, DVec3d* pZVec, DgnModelRefP pModelRef );