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_ChangeParameters와 ACAPI_Element_Edit와 달리, 이것은 한 번에 하나의 요소에만 작동합니다.
리턴할 때, 요소 헤더의 guid
필드가 채워집니다.
요소 연결들과 치수 체인들은 자동으로 업데이트됩니다.
연관된 마커들을 가진 요소들을 변경하려면, ACAPI_Element_ChangeExt 함수를 대신 사용하십시오.
더 이상 필요하지 않으면 메모 핸들들을 폐기하기 위해 ACAPI_DisposeElemMemoHdls를 호출하는 것을 잊지 마십시오.
다음 요소 타입들을 지원합니다:
요소 타입 | ![]() |
---|---|
API_WallID |
폴리곤-기반과 비-폴리곤-기반 벽 타입 간에 전환할 수 없습니다;type , begC , endC 그리고 angle 필드들은 비-폴리곤 벽에 대해서만 변경할 수 있습니다;벽의 gables 는 변경할 수 있습니다. |
API_ColumnID |
설정 파라미터들 외에도 origoPos , angle 필드들과 gables 메모를 변경할 수 있습니다. |
|
설정 파라미터들 외에도 begC , endC 필드들에 직접 접근할 수 있습니다;beamHoles 와 gables 메모들을 변경할 수 있습니다. |
API_WindowID |
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: objLoc , reflected , oSide , refSide , wallCutUsing , libInd ;gables 와 params 메모들 역시 변경할 수 있습니다. |
API_ObjectID |
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: pos , libInd ;gables 와 params 메모들 역시 변경할 수 있습니다. |
API_SlabID |
설정 파라미터들 외에도 슬래브의 폴리곤을 직접 변경할 수 있습니다. (coords , pends , parcs 그리고 vertexIDs 메모 핸들들) |
API_RoofID |
설정 파라미터들 외에도 baseLine 필드, 지붕 및 지붕 측면들의 폴리곤을 직접 변경할 수 있습니다. (coords , pends , parcs , vertexIDs 그리고 roofSides 메모 핸들들) |
API_MeshID |
![]() coords , pends , parcs vertexIDs , meshPolyZ , meshLevelCoords 그리고 meshLevelEnds 메모 핸들들) |
API_DimensionID |
설정 파라미터들 외에도 dimElems 메모 핸들을 변경할 수 있습니다. |
API_RadialDimensionID |
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: base , note |
API_LevelDimensionID |
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: loc , note1 , note2 , parentType , parentGuid |
API_AngleDimensionID |
설정 파라미터들 외에도 note 와 base 필드들을 변경할 수 있습니다. |
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 ![]() |
설정 파라미터들 외에도 다음 필드들을 편집할 수 있습니다: pos . 변경된 ChangeMarker가 폴리곤을 갖고 있지 않을 때에만 효과가 있습니다.
예. 이것은 it points to a single coordinate marked by pos 로 표시된 단일 좌표를 가리킵니다. |
API_DetailID API_WorksheetID |
설정 파라미터들 외에도 pos 필드와 디테일 또는 워크시트의 폴리곤(coords , pends , parcs , vertexIDs 메모 핸들들)에 직접 접근할 수 있습니다. |
API_SectElemID ![]() |
평면도 데이터베이스의 부모 요소를 변경한 후에,
단면 데이터베이스에서 단면 심볼 요소에 대하여 ACAPI_Element_Change를 호출하면, 단면 창에서 변경된 요소의 이미지를 리빌드합니다.
(불필요한 APIDo_RebuildID 와 APIDb_RebuildCurrentDatabaseID 호출을 피하기 위해 이것을 사용하십시오)
만약 부모 요소가 제거되었거나 단면의 범위 밖에 있을 경우, 이 함수는 APIERR_DELETED 를 리턴합니다;
그 외에는 업데이트된 단면 요소의 새로운 인덱스를 제공합니다. |
API_MorphID ![]() |
일부 경우들에서는 tranmat 필드를 변경하는 것은 바디 포인트들 자체에 영향을 주며, 그 반대로도 영향을 줍니다;결과로 나오는 바디는 정확하지만, 설정 후에 tranmat 필드를 가져오면 내부 값들이 다를 수 있습니다. |
당신은 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 함수