乐筑天下

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

[ARX]自定义实体类中添加外部文件中已定义的图块--相关问题

[复制链接]

8

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2005-6-27 08:51:00 | 显示全部楼层 |阅读模式
初学ARX已三个月,虽然还未入门,为答谢论坛各位给我的帮助,将我目前收集的关于自定义实体类的相关内容组织成一个小程序,提供大家分享,同时希望高手可以更好的对我指导。
晓东也有我发布的相关帖子,你可以得到其她相关信息
当前程序已经完成:
1. 一个简单的矩形框的自定义实体类创建,内有五个夹点。已经完成了对其基本函数的重载:
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);
virtual Acad::ErrorStatus getOsnapPoints(AcDb::OsnapMode osnapMode,
int gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints,
AcDbIntArray& osnapModes,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
2. 可以已经可以显示图块了,添加了一个函数AcDbObjectId cascoCEntity::GetBlockIdFromName(const char *dwgName, const char *blockName)〔还很不完善,编译会出错,再编译就行,希望各位大侠指导,除去这个问题。〕
在函数virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);给出了一些操作。
......
AcDbBlockReference *ref = new AcDbBlockReference();
ref->setColorIndex(5);
ref->setBlockTransform(m_xform);
ref->setPosition(mCenter);
AcDbObjectId recordId;
recordId = GetBlockIdFromName("Drawing0.dwg", "CIRCLE"); //TWO_RECT //CIRCLE
if(recordId != NULL)
ref->setBlockTableRecord(recordId);
ref->worldDraw(mode);
......
编译环境、操作步骤、和问题(更为详细的说明参见CEnity工程)
本程序为VC60+ACAD2002下调试过,使用方法先编译CEntity工程,然后编译EntityTest工程。加载后执行test命令就可以。
单独编译和执行(*.dbx 和*.arx以及*.dwg中的图块要对应起来)TWO_RECT或者CIRCLE都不会有问题。如果调用错了就会出错,我调试能力有限,不知道如何操作。
目的:
希望能够使用这样的方法(只在自定义实体中创建关联图块名称、夹点等关键属性)创建的自定义实体,使用该实体类,用户只需要选择该实体关联的图块和自定义夹点的位置等属性,就可以用一个或少数几个特征夹点的类实现ACAD自定义的实体类,这样的类定义出的实体具有更大的灵活性。
可是如何进一步控制图块的的操作?
1. 能够同一个*.dbx 和*.arx就可以显示不同块的、保存后再打开也是一样。
2. 可以拖动自定义实体,完成与自定义实体相连的直线的自动拉伸?
2. 比如完成对图块里面图元的具体操作?
欢迎大家参与讨论,也希望您们和我联系!

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

8

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2005-6-27 08:56:00 | 显示全部楼层

目前已经可以重载不同的图块了,而且图块也可以自由设置大小,但是在复制的时候,还是不能和修改后的自定义实体一样,只是原来自定义实体的copy,这需要在那里重载?
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2010-4-27 21:46:00 | 显示全部楼层
这么好的帖子竟然没人顶。。。
回复

使用道具 举报

3

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
19
发表于 2010-9-10 17:57:00 | 显示全部楼层
我来顶!
回复

使用道具 举报

0

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
3
发表于 2012-3-28 11:32:00 | 显示全部楼层
我也顶一个。虽然顶的有点像挖矿。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 12:50 , Processed in 0.222712 second(s), 67 queries .

© 2020-2025 乐筑天下

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