- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi, I made 3 custom entities. Lets call them "A", "B" and "C".
"B" have embedded AcDbText entity and "C" have AcDb3dSolid entity. AcDbText and AcDb3dSolid are not saved to drawing. All of them have exaggerate property, but only "A" save it to drawing, other two don't save it. They get it from "A" entity if exaggerate property change.
"A" have AcDbObjectId of "B" entities it governs. "B" Entities have AcDbObjectId of "C" entities they govern.
If I change exaggerate property everything works, but AcDbText and AcDb3dSolid entities sometimes jump from exaggerated state to original state if I rotate, zoom or select them. All this entities are placed in one group.
I have made video to show it.
In this video here are one "A" entity. It have 3 "B" entities. All "B" entities have 5 "C" entities each. So, here are 19 entities. All of them place in same group.
I have overridden this methods:
//*************************************************************************
// Overridden methods from AcDbObject
//*************************************************************************
virtual Acad::ErrorStatus dwgInFields( AcDbDwgFiler * ) override;
virtual Acad::ErrorStatus dwgOutFields( AcDbDwgFiler * ) const override;
virtual Acad::ErrorStatus dxfInFields( AcDbDxfFiler * ) override;
virtual Acad::ErrorStatus dxfOutFields( AcDbDxfFiler * ) const override;
//*************************************************************************
// Overridden methods from AcDbEntity
//*************************************************************************
Adesk::Boolean subWorldDraw( AcGiWorldDraw * pWd );
virtual Acad::ErrorStatus subGetOsnapPoints(
AcDb::OsnapMode osnapMode,
Adesk::GsMarker gsSelectionMark,
const AcGePoint3d & pickPoint,
const AcGePoint3d & lastPoint,
const AcGeMatrix3d & viewXform,
AcGePoint3dArray & snapPoints,
AcDbIntArray & /*geomIds*/ ) const override;
virtual Acad::ErrorStatus subGetGripPoints( AcGePoint3dArray & gripPoints,
AcDbIntArray & osnapMasks, AcDbIntArray & geomIds ) const override;
virtual Acad::ErrorStatus subMoveGripPointsAt( const AcDbIntArray & indices, const AcGeVector3d & offset ) override;
virtual Acad::ErrorStatus subGetTransformedCopy( const AcGeMatrix3d & xform, AcDbEntity *& ent ) const override;
virtual Acad::ErrorStatus subTransformBy( const AcGeMatrix3d & xform ) override;
virtual Acad::ErrorStatus subGetGeomExtents( AcDbExtents & extents ) const override;
virtual Acad::ErrorStatus subExplode( AcDbVoidPtrArray & entitySet ) const override;
virtual Acad::ErrorStatus subDeepClone( AcDbObject * pOwnerObject,
AcDbObject *& pClonedObject,
AcDbIdMapping & idMap,
Adesk::Boolean isPrimary = true ) const;
virtual Acad::ErrorStatus subWblockClone( AcRxObject * pOwnerObject,
AcDbObject *& pClonedObject,
AcDbIdMapping & idMap,
Adesk::Boolean isPrimary = true ) const;
subGetGripPoints, subMoveGripPointsAt, subGetTransformedCopy, subTransformBy, subExplode, subDeepClone and subWblockClone just return Acad::eOk or Acad::eNotApplicable because I don't want to let user copy them or move them.
Solved! Go to Solution.