Sds dictadd

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
int sds_dictadd(const sds_name nmDict, const char *szAddThis, const sds_name nmNonGraph)


機能
指定されたディクショナリに非グラフィカルオブジェクトを追加する。
引数
  • nmDict : オブジェクトが追加されるディクショナリの名前。
  • *szAddThis : ディクショナリに追加するオブジェクトのキー名。(既存の項目と重複してはならない。)
  • nmNonGraph : ディクショナリに追加する非グラフィカル オブジェクト。
戻り値
成功なら RTNORM、そうでなければ RTERRORを返す。


注意点
一般的な規則として、ディクショナリに追加する各オブジェクトは、ディクショナリ内で重複してはいけない。
これは、グループ ディクショナリにグループ オブジェクトを追加する場合、特に問題となる。異なるキー名で同じグループ オブジェクトを追加すると、グループ名が重複することとなり、dictnext 関数が無限ループに陥る可能性がある。


サンプル
struct sds_resbuf *listbuf = NULL;
struct sds_resbuf *databuf = NULL;
sds_name xname;
sds_name newxname;
sds_name nmdict;

/* エンティティリストの作成 */
listbuf= sds_buildlist(RTDXF0, "DICTIONARY", 100, "AcDbDictionary", 0);

/* エンティティリストのエンティティを作成 */
if ( sds_entmakex(listbuf,xname) != RTNORM )
sds_printf("\nエンティティ生成エラー : listbuf.");

/* ディクショナリから named object を取得 */
sds_namedobjdict(nmdict);

/* ディクショナリテーブルにレコードを追加 */
sds_dictadd( nmdict, "MY_DICTIONARY", xname);

/* 拡張データのエンティティリストを作成 */
databuf= sds_buildlist(RTDXF0, "XRECORD", 100, "AcDbXrecord", 1, "My Data", 0);

/* エンティティリストのエンティティを作成 */
if ( sds_entmakex(databuf,newxname) != RTNORM ) 
sds_printf("\nエンティティ生成エラー : databuf.");

/* ディクショナリテーブルにレコードを追加 */
sds_dictadd( xname, "MY_DICTIONARY", newxname);



関連事項