找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1063|回复: 7

[教学]:如何在当前图形数据库中克隆实体

[复制链接]
发表于 2004-11-14 17:26:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在当前图形数据库中选择一文本实体后,如何克隆,移动到新的位置
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-15 12:15:37 | 显示全部楼层
用getTransformedCopy這個函數能實現
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-16 20:47:03 | 显示全部楼层
getTransformedCopy函数需要有AcGeMatrix3d参数,这个我搞了半天也没弄懂,如果我只是想将text实体平移的话,它应该是什么呢?希望Jack96104 帮忙。如果能有个实例的话最好了,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-17 17:22:19 | 显示全部楼层
AcGeMatrix3d xform;
                     AcGeVector3d VectrorPt;
                      VectrorPt=3dpt1-3dpt2;
        xform.setToTranslation(VectrorPt);
        for(long i=0;i<ObjectIdArray.length();i++)
        {
                AcDbEntity *ent;
                if (Acad::eOk== acdbOpenAcDbEntity(ent,ObjectIdArray,AcDb::kForWrite))
                {
                        AcDbEntity *pEnt;
                        ent->getTransformedCopy(xform,pEnt);
                        ent->close();
                        AcDbObjectId ObjectId;
                        addToModelSpace(ObjectId,pEnt);
                        outObjectIdArray.append(ObjectId);
                        pEnt->close();
                }
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-17 20:57:54 | 显示全部楼层
首先,区分一下两个概念:
1、移动现有实体到新的位置,不属于克隆,它属于对当前对象的变换,可用:
   AcDbEntity::transformBy(AcGeMatrix3d::translation(offset)); 其中offset为移动量。类似于CAD中move命令。
2、克隆实体指创建一个现有实体的副本,并包括其所有的隶属关系(包括软指针、软所有、硬指针、硬所有等),就像克隆人一样,不光是样子像:)。类似于CAD中copy命令,现创建一个现有实体的副本,然后对副本进行变换。可用AcDbEntity::getTransformedCopy(AcGeMatrix3d::translation(offset),pNewEntity),先对原始实体进行复制,然后对复制的实体进行平移变换。

所以,我想一楼是想实现第1条所描述功能。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-19 09:21:46 | 显示全部楼层
Hellow []  
是第二条功能,我需要打开图档后在新位置增加一个文本实体对象,须同原有的文本对象在同一层,具有相同线型、颜色、高度、宽度比例。所以想用克隆。
VectrorPt=3dpt1-3dpt2; 3dpt1是(x,y,0)形式的吗?是ads_point吗?望指教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-19 11:54:53 | 显示全部楼层
是AcGePoint3d 點,VectrorPt=3dpt1-3dpt2就是取得COPY的實體和原實體的位移矢量.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-31 10:23:25 | 显示全部楼层
5楼楼主Hellow说:"克隆实体指创建一个现有实体的副本,并包括其所有的隶属关系(包括软指针、软所有、硬指针、硬所有等)"。
AcRxObject::clone()函数克隆自身一个对象
AcDbObject::deepClone()函数克隆对象及其所属对象,还能自动转换被克隆对象的引用。注意:这点上深度克隆完成硬所有和软所有的关系的克隆和转换。而不是上面四种关系。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 20:47 , Processed in 0.227900 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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