乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 9|回复: 0

增强的多线教程-第5部分-向导代码的结尾

[复制链接]

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2009-4-12 05:30:37 | 显示全部楼层 |阅读模式
在本教程中,将开始自定义自定义对象。 EPlineDxf 将保存一个
偏移值的集合,每个偏移量将有一个与之关联的 AcDbLayerId。 暂时将
集合中的项目数限制为 5 个。 我只是要添加
需要持久化的成员变量,并手动编写输入/输出代码。 如果您想
让 ObjectARX 向导来处理它,您可以随时右键单击 EPlineDxf
并选择 Add->Add Variable。 该向导将为您提供添加dwg归档代码,
增加对象版本号和实现getter/setter函数的选项。 它的工作原理非常
流畅,但可能存在非简单数据类型的问题。
COffsetProperty Class
Ive在EPlineTutDb中创建了一个名为COffsetProperty的新类。 该类的当前版本
仅将偏移距离和 layerId 保存为受保护成员。 公共 getter/setter
是为变量定义的,它包含自己的 dwgOutFields 和 dwgInFields。
类的序列化发生在 EPlineDxfs 序列化期间。
EPlineDxf 声明一个受保护的 AcArray
集合。 Getter/setters 将
根据需要添加到类中。 真的没什么特别的,看看代码。 在
实现集合时可以使用许多方法(即使不使用集合)。
我之所以选择这种方法,是因为它简单易行,将来很容易扩展。 将偏移
量属性保留在自己的类中应该有助于将来的代码维护。
EPlineDxf中的worldDraw函数现在完全充实了,
将来的版本可能不会改变。 代码非常简单,基本上当需要绘制EPlineDxf实体时
,它会检查是否有至少2个顶点,并且顶点是否不相同。 然后
,对于集合中的每个 COffset 属性,它
使用 getOffsetCurves 从基本 AcDbPolyline 几何创建偏移几何图形。 然后,getOffsetCurves 函数中的每个实体
都将其 layerId 设置为 COffsetProperty::LayerId 项并绘制。
然后,在相同的偏移距离上对实体的另一侧重复 getOffsetCurves。
关于自相交实体的说明:
如果 EPlineDxf 图元在曲线上与自身相交,则
生成的偏移曲线几何图形可能会被搞砸。 在
AutoCAD中使用偏移命令时,在正态折线上使用时,您可以看到相同的结果。
在这些情况下,getOffsetCurves 似乎没有正确计算凸起因子。 修复该问题
将超出本教程的范围。
命令行 EPline
rpkEPlineTutEPline 中的实体创建代码已从以前的版本扩展为
包括将 COffset 属性项添加到 EPlineDxfs 集合中。 现在的代码
只是快速而肮脏的静态代码,仅在应用程序开发的早期阶段有用
。 当实现自定义夹具时,该功能将在下一个版本中
被替换。
命令行 ConvertEPline
rpkEPlineTutConvertEPline 是此版本的新功能。其目的是将
AcDbPolyine转换为EPlineDxf,反之亦然。 目前,转换为 EPlineDxf 使用
硬编码的偏移值。 当UI在未来的版本中开发时,这些功能
也将被替换。
像往常一
样测试它编译EPlineTutDb,然后EPlineTut并在AutoCAD中加载二进制文件(相同的顺序)。
绘制一个具有多个段的普通LWPolyline,直线,弯曲等。 完成后,
在 AutoCAD 命令行中键入 ConvertEPline,然后选择您绘制的折线。 折线
的转换间距为 5、10、15 个单位。 选取折线并使用
顶点夹点对其进行修改。 交叉点会自动清理(请参阅上面
关于几何清理限制的世界绘制部分)。 再次运行 ConvertEPline 并选择 EPlineDxf 实体,
它将转换回正常的 LWPolyline。
您会注意到偏移线段位于图层 0 上。 当我们为程序开发UI时,
这些将与偏移距离一起使用户可选择。
摘要
本教程添加了少量代码(相对术语),大多数应不
言自明。 在下一教程中添加了一个自定义夹具,然后是一个UI,我认为它
即将完成。
Id 喜欢添加的一个要素是在拖动和绘制 enity 时顶点处的相切约束
。 这将是基于能够将其纳入Ive
已经做出的承诺。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-6 04:10 , Processed in 0.155278 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表