Если их не заполнили, то они будут пустыми.
Вот тебе рабочий код реализации на ObjectARX lisp-функции (getdwgprops):
static resbuf *getdwgprops(AcDbDatabase *db)
{
resbuf *rbb=acutBuildList(RTLB,RTNONE), *rb = rbb;
AcDbDatabaseSummaryInfo *pInfo;
Acad::ErrorStatus es;
ACHAR *str = NULL;
if (((es = acdbGetSummaryInfo(db, pInfo)) == Acad::eOk) && pInfo) {
es = pInfo->getTitle(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Title"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Title"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getSubject(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Subject"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Subject"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getAuthor(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Author"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Author"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getKeywords(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Keywords"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Keywords"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getComments(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Comments"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("Comments"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getHyperlinkBase(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("HyperlinkBase"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("HyperlinkBase"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getRevisionNumber(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("RevisionNumber"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("RevisionNumber"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
es = pInfo->getLastSavedBy(str);
if (str && es == Acad::eOk) {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("LastSavedBy"),RTSTR,str,RTLE,RTNONE);
free(str); str = NULL; while (rb->rbnext) rb = rb->rbnext;
} else {
rb->rbnext = acutBuildList(RTLB,RTSTR,_T("LastSavedBy"),RTSTR,_T(""),RTLE,RTNONE);
while (rb->rbnext) rb = rb->rbnext;
}
int nCustom = pInfo->numCustomInfo();
for (int i=0; i < nCustom; i++) {
ACHAR* key = NULL, *value = NULL;
if (pInfo->getCustomSummaryInfo(i, key, value) == Acad::eOk) {
if (key && value) {
rb->rbnext = acutBuildList(RTLB,RTSTR,key,RTSTR,value,RTLE,RTNONE);
free(key); free(value); while (rb->rbnext) rb = rb->rbnext;
}
}
}
rb->rbnext = acutBuildList(RTLE,RTNONE);
return rbb;
} else {
acutRelRb(rbb); return NULL;
}
}