明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2177|回复: 2

关于类定义的一点问题,都二天了,搞不定,帮帮我!

[复制链接]
发表于 2007-1-24 22:41:00 | 显示全部楼层 |阅读模式

新建了一个ARX工程,加入了两个文件,想定义一个类,代码如下:

//zzz.h
#include "dbmain.h"
class  CbzqCLASS : public AcDbEntity
{
public:
 ACRX_DECLARE_MEMBERS(CbzqCLASS);

 CbzqCLASS(void);
 virtual ~CbzqCLASS(void);
 
    virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
 virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
 virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);
 virtual Acad::ErrorStatus CbzqCLASS::explode(AcDbVoidPtrArray& entitySet) const;
 virtual Acad::ErrorStatus CbzqCLASS::getGripPoints (AcGePoint3dArray & gripPoints,AcDbIntArray& osnapModes,AcDbIntArray& geomIds) const;
 virtual Acad::ErrorStatus CbzqCLASS::moveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
 virtual Acad::ErrorStatus CbzqCLASS::transformBy(const AcGeMatrix3d& xform);
        //设置插入基点
 Acad::ErrorStatus setBasePt(const AcGePoint3d pt);
        //取得插入基点
 Acad::ErrorStatus getBasePt(AcGePoint3d& pt) const;

private:
       
        AcGePoint3d BasePt;//图形插入基点
        AcGePoint3d LeftPointH[7];//左侧后墙的点
        AcGePoint3d LeftPointQ[7];//左侧前墙的点
        AcGePoint3d RightPointH[7];//右侧后墙的点
        AcGePoint3d RightPointQ[7];//右侧前墙的点
        AcGePoint3d PMPointH[9];//平面后墙的点
        AcGePoint3d PMPointQ[9];//平面前墙的点
};

//zzz.cpp
#include "stdafx.h"
#include "zzz.h"
#include "dbmain.h"

ACRX_DXF_DEFINE_MEMBERS(CbzqCLASS, AcDbEntity, 15, 0, AcDbProxyEntity::kColorChangeAllowed, ASDKACLINE, ASDKACLINE);

CbzqCLASS::CbzqCLASS()
{
 BasePt.set(0.0,0.0,0.0);//init基点
}
CbzqCLASS::~CbzqCLASS()
{
 ;//
}
//指定基点
Acad::ErrorStatus setBasePt(const AcGePoint3d pt)
{
 assertWriteEnabled();
 BasePt = pt;
 return Acad::eOk;
}

正在编译...
zzz.cpp
c:\documents and settings\ab\my documents\visual studio 2005\projects\arxprojectrrrr\arxprojectrrrr\zzz.cpp(20) : error C3861: 'assertWriteEnabled': identifier not found
c:\documents and settings\ab\my documents\visual studio 2005\projects\arxprojectrrrr\arxprojectrrrr\zzz.cpp(21) : error C2065: 'BasePt' : undeclared identifier
生成日志保存在“file://c:\Documents and Settings\ab\My Documents\Visual Studio 2005\Projects\ArxProjectrrrr\ArxProjectrrrr\Debug\BuildLog.htm”
ArxProjectrrrr - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

注掉 assertWriteEnabled();
 注掉 BasePt = pt;

能通过编译又出错如下:

zzz.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CbzqCLASS::worldDraw(class AcGiWorldDraw *)" (?worldDraw@CbzqCLASS@@UAEHPAVAcGiWorldDraw@@@Z)
.....

....


Debug/xxyArxProjectrrrr.arx : fatal error LNK1120: 7 个无法解析的外部命令

为什么啊?是不是类不能这样申明?还是别的什么问题?请指点一下,都二天了,还没搞好。

发表于 2007-1-25 10:28:00 | 显示全部楼层

这个派生类不是用向导生成的吧?最好用向导,好多东西啊!

从编译报告来看应该是缺少相应头文件吧?首先声明我也不太懂

 楼主| 发表于 2007-1-25 11:21:00 | 显示全部楼层
本帖最后由 作者 于 2007-1-25 11:41:13 编辑

谢谢2楼的,真的很感谢!已解决。

说一下解决的过程,怕新手和我一样,出同样的错误。

1.在类视图中用右键点项目工程名

2.选择 添加->类。。。

3.出现一个添加类的对话框,左边选objectARX,右边选custom object wizard

4.点下面的添加按纽。

5.出现一个 custom object .....in dbx..  对话框,选 是 按纽。

别的我就不说了,填一下基本就可以了。

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:31 , Processed in 0.154597 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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