Graphisoft®

API Development KitVersion: 18

ACAPI_Element_Change

현재 데이터베이스에서 어떤 요소를 변경합니다.

    GSErrCode  ACAPI_Element_Change (
        API_Element*               element,
        const API_Element*         mask,
        const API_ElementMemo*     memo,
        UInt32                     memoMask,
        bool                       withdel
    );

 

파라미터

element
[in/out] 변경할 요소에 대한 레퍼런스입니다. 적절한 새 파라미터들로 채워져야 합니다.
mask
[in] element의 관련 필드들을 마스킹하기 위한 선택적인 파라미터입니다
memo
[in] 변경할 메모 데이터입니다. 선택적인 파라미터로 NULL이 될 수 있습니다.
memoMask
[in] memo 파라미터의 관련된 부분들을 지정합니다.
withdel
[in] 요소의 본래 인스턴스를 제거하거나, 그것을 보존하고 새로운 인스턴스를 생성합니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADDATABASE
현재 데이터베이스는 평면도, 단면/입면, 디테일 또는 워크시트이어야 합니다.
APIERR_BADPARS
전달된 element 파라미터가 NULL입니다.
또는 요소가 그룹화되어 있고 서스펜드 그룹 모드가 OFF입니다.
APIERR_BADID
요소 레퍼런스가 유효하지 않습니다. (guid)
또는 요소 타입이 서버 애플리케이션에 의해 지원되지 않습니다.
APIERR_DELETED
요소가 데이터베이스에 존재하지 않습니다.
APIERR_NOTMINE,
APIERR_LOCKEDLAY,
APIERR_HIDDENLAY,
APIERR_NOTEDITABLE
참조된 element를 변경할 수 없습니다.
APIERR_IRREGULARPOLY
입력 폴리곤 또는 폴리라인이 불규칙적입니다.

다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.

 

설명

이 함수를 이용하면 요소의 설정 타입 파라미터들을 변경할 수 있을뿐만 아니라 기하 데이터도 변경할 수 있습니다. ACAPI_Element_ChangeParametersACAPI_Element_Edit와 달리, 이것은 한 번에 하나의 요소에만 작동합니다. 리턴할 때, 요소 헤더의 guid 필드가 채워집니다. 요소 연결들과 치수 체인들은 자동으로 업데이트됩니다.

연관된 마커들을 가진 요소들을 변경하려면, ACAPI_Element_ChangeExt 함수를 대신 사용하십시오.

더 이상 필요하지 않으면 메모 핸들들을 폐기하기 위해 ACAPI_DisposeElemMemoHdls를 호출하는 것을 잊지 마십시오.

다음 요소 타입들을 지원합니다:

요소 타입 참고사항
API_WallID 폴리곤-기반과 비-폴리곤-기반 벽 타입 간에 전환할 수 없습니다;
type, begC, endC 그리고 angle 필드들은 비-폴리곤 벽에 대해서만 변경할 수 있습니다;
벽의 gables는 변경할 수 있습니다.
API_ColumnID 설정 파라미터들 외에도 origoPos, angle 필드들과 gables 메모를 변경할 수 있습니다.

API_BeamID

설정 파라미터들 외에도 begC, endC 필드들에 직접 접근할 수 있습니다;
beamHolesgables 메모들을 변경할 수 있습니다.
API_WindowID
API_DoorID
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: objLoc, reflected, oSide, refSide, wallCutUsing, libInd;
gablesparams 메모들 역시 변경할 수 있습니다.
API_ObjectID
API_LampID
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: pos, libInd;
gablesparams 메모들 역시 변경할 수 있습니다.
API_SlabID 설정 파라미터들 외에도 슬래브의 폴리곤을 직접 변경할 수 있습니다. (coords, pends, parcs 그리고 vertexIDs 메모 핸들들)
API_RoofID 설정 파라미터들 외에도 baseLine 필드, 지붕 및 지붕 측면들의 폴리곤을 직접 변경할 수 있습니다. (coords, pends, parcs, vertexIDs 그리고 roofSides 메모 핸들들)
API_MeshID Featuring API 11  설정 파라미터들 외에도 메시(mesh)의 폴리곤과 용마루(ridge) 레벨들을 직접 변경할 수 있습니다. (coords, pends, parcs vertexIDs, meshPolyZ, meshLevelCoords 그리고 meshLevelEnds 메모 핸들들)
API_DimensionID 설정 파라미터들 외에도 dimElems 메모 핸들을 변경할 수 있습니다.
API_RadialDimensionID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: base, note
API_LevelDimensionID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: loc, note1, note2, parentType, parentGuid
API_AngleDimensionID 설정 파라미터들 외에도 notebase 필드들을 변경할 수 있습니다.
API_TextID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: loc, width, nonBreaking;
텍스트의 내용 및 스타일 역시 변경할 수 있습니다. (textContent, paragraphs 메모)
API_LabelID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: begC, midC, endC, u.text (API_TextID와 같음), u.symbol (API_ObjectID와 같음);
텍스트 라벨에 대하여, 텍스트의 내용 및 스타일 역시 변경할 수 있습니다. (textContent, paragraphs 메모)
API_ZoneID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: libInd, pos 그리고 구역(zone)의 폴리곤. (coords, pends, parcs, vertexIDs 메모 핸들들)
API_HatchID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: note 그리고 해치(hatch)의 폴리곤. (coords, pends, parcs, vertexIDs 메모 핸들들)
API_LineID 설정 파라미터들 외에도 begC, endC 필드들을 직접 접근할 수 있습니다.
API_ArcID
API_CircleID
이 버전에서는 ACAPI_Element_Change 함수로 설정 파라미터들만 변경할 수 있습니다.
API_PolyLineID 설정 파라미터들 외에도 폴리곤 데이터(coords, pends, parcs, vertexIDs 메모 핸들들)에 직접 접근할 수 있습니다.
API_SplineID 이 버전에서는 ACAPI_Element_Change 함수로 설정 파라미터들만 변경할 수 있습니다;
기하 데이터, autoSmooth 그리고 closed 필드들은 접근할 수 없습니다.
API_HotspotID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: pos, height
API_CutPlaneID 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: depth, leftDir
API_ChangeMarkerID 18 설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: pos. 변경된 ChangeMarker가 폴리곤을 갖고 있지 않을 때에만 효과가 있습니다. 예. 이것은 it points to a single coordinate marked by pos로 표시된 단일 좌표를 가리킵니다.
API_DetailID
API_WorksheetID
설정 파라미터들 외에도 pos 필드와 디테일 또는 워크시트의 폴리곤(coords, pends, parcs, vertexIDs 메모 핸들들)에 직접 접근할 수 있습니다.
API_SectElemID 6.1 평면도 데이터베이스의 부모 요소를 변경한 후에, 단면 데이터베이스에서 단면 심볼 요소에 대하여 ACAPI_Element_Change를 호출하면, 단면 창에서 변경된 요소의 이미지를 리빌드합니다. (불필요한 APIDo_RebuildIDAPIDb_RebuildCurrentDatabaseID 호출을 피하기 위해 이것을 사용하십시오) 만약 부모 요소가 제거되었거나 단면의 범위 밖에 있을 경우, 이 함수는 APIERR_DELETED를 리턴합니다; 그 외에는 업데이트된 단면 요소의 새로운 인덱스를 제공합니다.
API_MorphID 16 일부 경우들에서는 tranmat 필드를 변경하는 것은 바디 포인트들 자체에 영향을 주며, 그 반대로도 영향을 줍니다;
결과로 나오는 바디는 정확하지만, 설정 후에 tranmat 필드를 가져오면 내부 값들이 다를 수 있습니다.

Featuring API 10  당신은 ACAPI_Element_ChangeMore 함수로 한 번에 여러 개의 요소들을 변경할 수 있습니다.

 

예제

GSErrCode   FlipWall (const API_Guid& wallGuid)
{
    API_Element         element, mask;
    API_Coord           c1, c2;
    GSErrCode           err = NoError;

    BNZeroMemory (&element, sizeof (API_Element));
    element.header.guid  = wallGuid;
    err = ACAPI_Element_Get (&element);
    if (err != NoError)
        return err;

    c1 = element.wall.begC;
    c2 = element.wall.endC;

    if (err == NoError) {
        ACAPI_ELEMENT_MASK_CLEAR (mask);
        ACAPI_ELEMENT_MASK_SET (mask, API_WallType, begC);
        ACAPI_ELEMENT_MASK_SET (mask, API_WallType, endC);

        element.wall.begC = c2;
        element.wall.endC = c1;

        err = ACAPI_Element_Change (&element, &mask, NULL, 0, true);
    }

    return err;
}

 

요구사항

버전: API 3.1 또는 이후
헤더: ACAPinc.h

 

참고사항

API_Element, API_ElementMemo
ACAPI_Element_ChangeExt, ACAPI_Element_ChangeMore
ACAPI_Element_ChangeMemo, ACAPI_Element_ChangeParameters
ACAPI_Element_Edit, ACAPI_DisposeElemMemoHdls
요소 관리자, API 함수