乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 40|回复: 2

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

[复制链接]

12

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2005-1-10 00:06:00 | 显示全部楼层 |阅读模式
我自己写了一个类要加入字典中,但调不通,请高手指点。。。
下面是代码:
// 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();
}请高手指点,谢谢!!
回复

使用道具 举报

4

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2009-12-15 17:20:00 | 显示全部楼层
我也出现了相同的问题,请问是怎么解决的呢?
回复

使用道具 举报

3

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
19
发表于 2010-9-17 15:13:00 | 显示全部楼层
顶起,希望在4楼。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-3 11:59 , Processed in 1.195844 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表