CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

覆盖 subWorldDraw() 和 subViewportDraw()

2022-12-31 21:13| 发布者: admin| 查看: 379| 评论: 0|来自: AutoCAD

AutoCAD调用和函数来显示实体,而实体又分别调用用于专门的绘制功能。您必须为派生自的任何类实现函数。该函数是可选的。 ® worldDraw()viewportDraw()subWorldDraw() subViewportDraw()subWorldDraw()AcDbEntitysubViewportDraw()

virtual Adesk::Boolean
AcDbEntity::subWorldDraw(
    AcGiWorldDraw * pWd);
 
virtual void
AcDbEntity::subViewportDraw(
    AcGiViewportDraw * pVd);

每当AutoCAD需要重新生成图形以显示图元时,都会按以下方式调用与函数:worldDraw()viewportDraw()

if (!entity->worldDraw(pWd))
    for (each relevant viewport)
        entity->viewportDraw(pVd);

函数调用来构建实体图形表示的一部分,该部分可以独立于任何特定的模型空间视图或图纸空间视口上下文进行指定。然后,该函数调用以构建实体图形的视图相关部分。如果实体的任何图形依赖于视图,则必须返回函数并且必须实现该函数。相反,如果实体没有依赖于视图的图形,则该函数必须返回自定义实体不实现该函数。worldDraw()subWorldDraw()viewportDraw()subViewportDraw()subWorldDraw()kFalsesubViewportDraw()subWorldDraw()kTrue, andsubViewportDraw()

该函数采用一个指针,用于为 AcGi 几何图形和特征对象 anobject.is 容器类。具体来说,包含另外两个对象:AcDbEntity::subWorldDraw()AcGiWorldDrawAcGiWorldDrawAcGiWorldDraw

  • AcGiWorldGeometry
  • AcGiSubEntityTraits

可以使用函数从函数内部访问对象,也可以使用函数访问对象。AcGiWorldGeometryworldDraw()AcGiWorldDraw::geometry()AcGiSubEntityTraitsAcGiWorldDraw::subEntityTraits()

对象使用其绘图基元集将矢量写入 AutoCAD 的刷新内存。基元是用于绘制图形实体的最低级指令。世界几何对象具有以下功能,用于在世界坐标中绘制基元:AcGiWorldGeometry

  • 圆弧
  • 折线
  • 多边形
  • 网孔
  • 发短信
  • 鑫线
  • 射线

对象使用以下一组特征函数设置图形属性值:AcGiSubEntityTraits

  • 颜色
  • 线型
  • 多边形填充类型
  • 选择标记

该函数采用指向对象的指针,并生成实体的特定于视图的表示形式。视口绘制对象也是其他对象的容器对象,其中包括:AcDbEntity::subViewportDraw()AcGiViewportDraw

  • AcGiViewportGeometry
  • AcGiSubEntityTraits
  • AcGiViewport

视口几何对象提供与世界几何对象相同的基元列表,并向其添加以下基元,这些基元使用眼睛和显示空间坐标绘制折线和多边形:

  • polylineEye()
  • polygonEye()
  • polylineDc()
  • polygonDc()

视口子实体特征对象与世界绘制对象 () 使用的相同。视区对象提供用于查询视区的转换矩阵和查看参数的函数。AcGiSubEntityTraits

危险:AcGi 对象(如 asor)不应存储为全局变量或静态变量。不要在调用 theandfunctions 之间保存 AcGi 对象的副本。一旦这些函数返回,AcGi 对象将不再有效。AcGiWorldDrawAcGiViewportDrawworldDraw()viewportDraw()
危险:当自定义实体实现者时,如果在方法范围内创建本机实体(例如,),则本机实体需要存在于方法范围之外。变量应该在全局或类级别声明,或者在某个级别中声明,其中对象即使在退出方法后仍处于活动状态。subWorldDraw()subViewportDraw()AcDbCircle

有关 AcGi 库的详细信息,请参阅图形接口库


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 12:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部