找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 614|回复: 3

[ARX程序]:派生于AcDbObject的定制类实体加入到对象字典的问题??

[复制链接]
发表于 2005-1-10 00:11:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我自己写了一个类要加入字典中,但调不通,请高手指点。。。

下面是代码:

// ScaleClass.h: interface for the CScaleClass class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SCALECLASS_H__EA5D03B9_CC89_40B1_8BB4_48EB14A3EF04__INCLUDED_)
#define AFX_SCALECLASS_H__EA5D03B9_CC89_40B1_8BB4_48EB14A3EF04__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CScaleClass : public AcDbObject  
{
public:
void setvScale(double vs);
void sethScale(double hs);
void getvScale(double hv);
void gethScale(double hs);
double vScale;
double hScale;
CScaleClass();
virtual ~CScaleClass();

};

#endif // !defined(AFX_SCALECLASS_H__EA5D03B9_CC89_40B1_8BB4_48EB14A3EF04__INCLUDED_)






// ScaleClass.cpp: implementation of the CScaleClass class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "resource.h"
#include "ScaleClass.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CScaleClass::CScaleClass()
{
CScaleClass::rxInit();
}

CScaleClass::~CScaleClass()
{

}

void CScaleClass::gethScale(double hs)
{
hs=hScale;
return;
}

void CScaleClass::getvScale(double hv)
{
hv=vScale;
return;
}

void CScaleClass::sethScale(double hs)
{
hScale=hs;
return;
}

void CScaleClass::setvScale(double vs)
{
vScale=vs;
return;
}




下面是加入程序

void GeoMapFun::createDictionary(double hs, double vs)
{
    AcDbDictionary *pNamedobj;
    acdbHostApplicationServices()->workingDatabase()->
        getNamedObjectsDictionary(pNamedobj, AcDb::kForWrite);

    // Check to see if the dictionary we want to create is
    // already present. If not, create it and add
    // it to the named object dictionary.
    //
    AcDbDictionary *pDict;
    if (pNamedobj->getAt("SCALE_DICT", (AcDbObject*&) pDict,
        AcDb::kForWrite) == Acad::eKeyNotFound)
    {
        pDict = new AcDbDictionary;
        AcDbObjectId DictId;
        pNamedobj->setAt("ASDK_DICT", pDict, DictId);
    }
    pNamedobj->close();
    if (pDict) {

        // Create new objects to add to the new dictionary,
        // add them, then close them.
        //
        CScaleClass *pObj1 = new CScaleClass();
  pObj1->sethScale(hs);
  pObj1->setvScale(vs);
        AcDbObjectId rId1;
        pDict->setAt("OBJ1", pObj1, rId1);
        pObj1->close();
        pDict->close();
    }

}







void GeoMapFun::iterateDictionary(double hs, double vs)
{
    AcDbDictionary *pNamedobj;
    acdbHostApplicationServices()->workingDatabase()
        ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);

    // Get a pointer to the ASDK_DICT dictionary.
    //
    AcDbDictionary *pDict;
    pNamedobj->getAt("SCALE_DICT", (AcDbObject*&)pDict,
        AcDb::kForRead);
    pNamedobj->close();

    // Get an iterator for the ASDK_DICT dictionary.
    //
    AcDbDictionaryIterator* pDictIter= pDict->newIterator();
    CScaleClass *pMyCl;
   
    for (; !pDictIter->done(); pDictIter->next()) {

        // Get the current record, open it for read, and
        // print its data.
        //
        pDictIter->getObject((AcDbObject*&)pMyCl,
            AcDb::kForRead);
        pMyCl->gethScale(hs);
  pMyCl->getvScale(vs);
        pMyCl->close();
        acutPrintf("\nintval is:  %d", hs);
    }
    delete pDictIter;
    pDict->close();

}



请高手指点,谢谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-1-10 21:45:19 | 显示全部楼层
一个编译过的例子.没有运行过,以后请把工程贴上来,因为整理很费时间
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-11 18:57:22 | 显示全部楼层
我按照你的程序,已经调好了,!
以后有问题一定贴工程.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-8 15:15:49 | 显示全部楼层
老兄,就这么简单吗?非图形特征数据直接利用object派生对象往命名词典里加?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-26 15:17 , Processed in 0.462803 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表