乐筑天下

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

求大家看看这是怎么回事!!!

[复制链接]

7

主题

15

帖子

1

银币

初来乍到

Rank: 1

铜币
43
发表于 2004-3-31 09:39:00 | 显示全部楼层 |阅读模式
还是实现CAD屏幕上文字的输出,代码如下:
void drawtext()
{         AcGePoint3d startpoint(100,100,0);
                 AcDbText         textout(startpoint,"This is a Test!");
                 AcDbBlockTable *pblocktable;
                 acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pblocktable,AcDb::kForWrite);
                 AcDbBlockTableRecord *pblockrecord;
                 pblocktable->getAt(ACDB_MODEL_SPACE,pblockrecord,AcDb::kForWrite);
                 pblocktable->close();
                 AcDbObjectId id;
                 pblockrecord->appendAcDbEntity(id,&textout);
                 pblockrecord->close();
                 textout.close();
}
用VC编译没有错误,但CAD加载ARX文件执行时,输出如下错误提示:
---------------------------
错误中断
---------------------------
内部错误:         !U:\global\src\ObjectDbx\DB\IMP\src\dbobji.cpp@280
---------------------------
确定                 
---------------------------
不知是怎么回事,求大家指点一下吧!!!
回复

使用道具 举报

0

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2004-3-31 15:31:00 | 显示全部楼层
错误在于                 AcDbText         textout(startpoint,"This is a Test!");
应该是 AcDbText*         textout=new AcDbText(startpoint,"This is a Test!");然后下句         pblockrecord->appendAcDbEntity(id,&textout);
改为: pblockrecord->appendAcDbEntity(id,textout);
回复

使用道具 举报

7

主题

15

帖子

1

银币

初来乍到

Rank: 1

铜币
43
发表于 2004-4-1 15:35:00 | 显示全部楼层
遵从楼上的指教,改了代码,程序运行有了结果,但不知我的错误代码和您的正确代码之间的区别何在?那么又如何实现字体,颜色等的设置来输出有大小区别的中文字呢?各位能给举个例子吗?
回复

使用道具 举报

0

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2004-4-1 21:52:00 | 显示全部楼层
强烈建议你先复习C或C++语言,
然后再来吧...
回复

使用道具 举报

7

主题

15

帖子

1

银币

初来乍到

Rank: 1

铜币
43
发表于 2004-4-2 12:03:00 | 显示全部楼层
是不是因为appendAcDbEntity()方法执行时,直接将你创建的实体加入到数据库,而不是拷贝它的副本到数据库,这样当不是动态创建对象时,在drawtext()方法
的结束处,textout对象的作用域结束,系统释放对象,而对象已加入到数据库,这样便导致了错误。而动态创建对象时,要显式调用delete时才调用它的析构函数来
释放对象,因为没有调用delete所以才不会出现那样的错误。经你的提醒我才发现
在程序中只有new,而没有delete,我一直以为自己的C++学的还凑合,到现在才
发现确实不行,多谢楼上的指教。最后问一下:我的想法对吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 17:55 , Processed in 0.171396 second(s), 62 queries .

© 2020-2025 乐筑天下

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