明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 630|回复: 3

自定义实体嵌套,如何继承子实体的夹点以及夹点移动

[复制链接]
发表于 2025-9-10 18:34:23 | 显示全部楼层 |阅读模式
我有一个自定义实体,有一个实体成员是多段线,成员类型是AcDbObjectId m_pBasePolylineId,我希望自定义实体的夹点,以及夹点移动与基线保持一致。但是夹点拖动的结果不对。有没有大神帮忙指导一下



// 获取夹点
Acad::ErrorStatus RoadEntity::subGetGripPoints(AcGePoint3dArray & gripPoints,AcDbIntArray & osnapModes,AcDbIntArray & geomIds) const
{
        assertReadEnabled();
        // 绘制基线
        AcDbEntity* basePl = nullptr;
        if (acdbOpenObject(basePl, m_pBasePolylineId, AcDb::kForRead) == Acad::eOk) {
                Acad::ErrorStatus es = basePl->getGripPoints(gripPoints, osnapModes, geomIds);
        basePl->close();
                return es;
        }
        return Acad::eNullObjectPointer;
}

// 移动夹点
Acad::ErrorStatus RoadEntity::subMoveGripPointsAt(const AcDbIntArray & indices,const AcGeVector3d & offset)
{
        assertWriteEnabled();
        // 绘制基线
        AcDbEntity* basePl = nullptr;
        if (acdbOpenObject(basePl, m_pBasePolylineId, AcDb::kForWrite) == Acad::eOk) {
                Acad::ErrorStatus es = basePl->moveGripPointsAt(indices, offset);
                basePl->close();
                return es;
        }
        return Acad::eNullObjectPointer;
}

回复

使用道具 举报

发表于 2025-9-10 21:51:59 | 显示全部楼层

本帖最后由 gzxl 于 2025-9-10 22:29 编辑

帮助文件里面好像是要 AcDbEntity::transformBy() 的。
sdk 里面的 polysamp subMoveGripPointsAt 好复杂。自定义实体比较少搞。
回复 支持 反对

使用道具 举报

发表于 2025-9-11 09:14:00 | 显示全部楼层


实体进行夹点拖拽的时候会默认进行复制( clone ), 如果你的子实体没有正确进行复制会导致它比本体多进行了额外的拖拽.
1. 如果不想复制拖拽可以继承实现 subCloneMeForDragging, 但是并不推荐.

2. 推荐继承实现 clone .

ps: 测试是否由复制问题引起可以简单的在 subMoveGripPointsAt 的开头加上判断 if (this->database() == NULL) return Acad::ErrorStatus::eOk;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-9-11 11:47:17 | 显示全部楼层
Syu 发表于 2025-9-11 09:14
实体进行夹点拖拽的时候会默认进行复制( clone ), 如果你的子实体没有正确进行复制会导致它比本体多进 ...

如果拖拽是操作父体的副本,这里却是直接操作子实体的本体。感觉应该是这个原因
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-6 01:46 , Processed in 0.153661 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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