乐筑天下

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

怎样做一个块(Block),这个问题这么难么?,很着急大家帮忙看看吧 ?

[复制链接]

16

主题

57

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2006-7-26 11:36:00 | 显示全部楼层 |阅读模式
请问怎样可以使用ARX做一个Block块?
为什么我向 块 表中插入一个AcDbBlockRecord记录,不能自动的出现AcDbBlockBegin
和AcDbBlockEnd标志啊
我看到有一本书上写着,当关闭AcDbBlockRecord记录的时候会 自动加上那两个标记的啊??
我做的块为什么没有AcDbBlockBegin和AcDbBlockEnd?
大家要是做自定义的块(包含几个实体,比如一个圆和一个直线)都是怎么做啊?
回复

使用道具 举报

16

主题

160

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
224
发表于 2006-7-27 20:04:00 | 显示全部楼层
这个问题在 SDK 上应该都有吧,在任何一本书上都是有例子的吧,

回复

使用道具 举报

16

主题

57

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2006-7-28 09:26:00 | 显示全部楼层
我也是按照书上的例子写的阿,
而且我编译了书上的例子,也没有那两个标记阿
回复

使用道具 举报

13

主题

121

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2006-7-28 11:41:00 | 显示全部楼层

其实我就是使用AsdkInspector.arx查看数据库,但是在我自定义的块中找不到,AcDbBlockBegin和AcDbBlockEnd这样的东西啊
你说我连这两个东西是什么地方的都搞不清楚,那我说每个块表记录都是以AcDbBlockBegin开始然后以AcDbBlockEnd结束中间就是我添加的一些实体(AcDbEntity),你说是不是这样啊?
但是我自定义的块就是不出现这些东西,而看到Modal_Space就有,而且别人写的块就有,所以我就不明白阿。下面是我的关键的代码,你看看有什么问题
回复

使用道具 举报

16

主题

57

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2006-7-28 13:34:00 | 显示全部楼层
void CreateBlock(char blkname[200])
{
AcDbDatabase *pCurDb;
AcDbBlockTable *pBlockTable;
AcDbBlockTableRecord *pBlockRecord = new AcDbBlockTableRecord;
AcDbObjectId blockId;
pCurDb = acdbHostApplicationServices()->workingDatabase();
pCurDb->getBlockTable(pBlockTable, AcDb::kForWrite);
pBlockTable->add(blockId,pBlockRecord);
pBlockTable->close();
pBlockRecord->setName(blkname);
AcGePoint3d basePt(0.0,0.0,0.0);
pBlockRecord->setOrigin(basePt);
AcDbCircle *pCir = new AcDbCircle;
AcDbObjectId cirId;
pCir->setColorIndex(2);
pCir->setCenter(basePt);
pCir->setRadius(10);
pBlockRecord->appendAcDbEntity(cirId,pCir);
pCir->close();
pBlockRecord->close();
}
回复

使用道具 举报

16

主题

57

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2006-7-28 16:08:00 | 显示全部楼层
下面关于AcDbBlockBegin Class的话来自SDK:
The AcDbBlockBegin class represents the block header portion of a block definition within AutoCAD (that is, group codes 2, 3, 10, 20, 30, and 70). Objects of this class are created and handled automatically by AutoCAD for each AcDbBlockTableRecord.
Applications do not need to create objects of this class nor can they add or remove them from databases. Applications are free to add or manipulate xdata on objects of this class as well as work with extension dictionaries for objects of this class.
Warning Do not derive from this class. Attempting to do so will cause your application to halt AutoCAD.
就是说:
第一,AcDbBlockBegin对象存在于AcDbBlockTableRecord中,不存在于*MODAL_SPACE*中,起码不是你的自定义块中的。
第二,它是由AcDbBlockTable维护的,不可能被选择到,
第三,不要指望操控或者继承此类,以及其xData
第四,你的程序在我的机器上运行得很好,只要没有崩溃,我想,它在你的机器上运行得也是很好,只是那两个图元你没观察到罢了
回复

使用道具 举报

2

主题

54

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2006-8-1 04:59:00 | 显示全部楼层
恩~楼上的兄弟说的太对了,我知道为什么没有观察到了,其实就是只要是我保存一下图形就立刻在观察器中看到了,
谢谢大家关注我的问题~~
楼上的兄弟有没有QQ啊~~,要是方便的话有时间多交流啊
回复

使用道具 举报

16

主题

57

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2006-8-1 17:42:00 | 显示全部楼层
恩,我的QQ是172522850,我有一个专门的群17086493,欢迎加入!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 18:44 , Processed in 0.189392 second(s), 68 queries .

© 2020-2025 乐筑天下

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