明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2897|回复: 5

关于自定义实体

[复制链接]
发表于 2002-8-26 16:37:00 | 显示全部楼层 |阅读模式
紧急求助,对于自定义实体,定义其coordinate system需要重载哪个函数。先谢谢了。
发表于 2002-8-27 08:36:00 | 显示全部楼层

好的提问往往是解决问题的关键

对于自定义实体,我理解为从AcDbEntity派生的新类。而你要定义的坐标系是指实体坐标系,还是观察坐标系,或者是视口.......
ACAD可以将三种可能的坐标变换应用于自定义实体,这三种变换是:实体的块变换、视口的视图变换、透视变换,每类变换都将产生一个新的坐标系类型:
模型坐标->通过实体块变换->世界坐标->视口变换->观察坐标->透视变换->显示坐标
请问:你要定义什么样的coordinary system?
也许我误解了你的意图,望谅。请复。
 楼主| 发表于 2002-8-27 16:34:00 | 显示全部楼层

请求帮助

你好,我是一只菜鸟,对坐标系部分很不熟悉。我想要达到的目的是:在AUTOCAD中,用户可以通过选择实体建立用户坐标系(UCS)。但是自定义实体(从AcDbEntity派生的新类)必须定义坐标系,才能支持系统的此项功能。现在我就是想知在自定义实体时,需要重载哪个函数,才能定义坐标系。
多谢您的帮助。盼复
发表于 2002-8-28 09:59:00 | 显示全部楼层

我知道你的意思了

本帖最后由 作者 于 2002-8-28 9:59:01 编辑

首先可以肯定,virtual void AcDbEntity::getEcs(AcGeMatrix3d&) const函数要重载,该函数用于获取实体坐标系(Entity Coordinary System)。在ACAD中,只有尺寸标注、文字、圆、弧、多义线、块、实体(solid)、形、属性等调用getEsc()函数时返回非单位矩阵(单位矩阵表示世界坐标系)。
我不知道你的派生类中是否使用了GS标记或子实体,若使用了,可能你还要重载下面的函数,以获取与指定GS标记相关的子实体路径。
virtual Acad::ErrorStatus AcDbEntity::getSubentPathsAtGsMarker(AcDb::SubentType,int,const AcGePoint3d&,const AcGeMatrix3d&,int&,AcDbFullSubentPath*& );
最后,根据需要,可能要重载用于在观察坐标系下显示实体的函数
virtual void AcDbEntity::viewportDraw(AcGiViewportDraw*)
 楼主| 发表于 2002-8-28 10:12:00 | 显示全部楼层

多谢

我明白了,非常非常感谢。有问题时能碰到一个热心高手,真是幸运,再次感谢。
发表于 2003-3-5 20:46:00 | 显示全部楼层

能否为VBA写一个arx来支持自动化

[此贴子已经被作者于2003-3-5 20:46:21编辑过]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 11:46 , Processed in 0.186749 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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