乐筑天下

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

复杂的实体。

[复制链接]

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 01:08:54 | 显示全部楼层 |阅读模式
它在ARX文档中说不要将Aced Jig与复杂的实体(例如折线)一起使用
LwPolyine怎么样?

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

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

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 01:44:20 | 显示全部楼层
棒!谢谢保罗。
这里有一个示例,如果有人需要一个(AcDbPolyLine)
.h
  1. #pragma once
  2. class RectJig : public AcEdJig
  3. {
  4.   // fields
  5. private:
  6.   Adesk::Boolean m_append;
  7.   AcGePoint3d m_cur;
  8.   AcGePoint3d m_last;
  9.   const CString m_msg;
  10.   AcDbPolyline *m_line;
  11.   AcDbObjectId m_id;
  12. public:
  13.   // ctor && dtor
  14.   RectJig(double width, double height, const CString &msg, Adesk::Boolean append = Adesk::kTrue);
  15.   virtual ~RectJig(void);
  16.   // methods
  17.   void doIt();
  18.   Adesk::Boolean cursorHasMoved(void);
  19.   virtual AcEdJig::DragStatus sampler(void);
  20.   virtual Adesk::Boolean update(void);
  21.   virtual AcDbEntity* entity(void) const;
  22.   AcGePoint2d getPoint2d(void) const;
  23.   AcGePoint3d getPoint3d(void) const;
  24.   AcDbObjectId getObjectId(void)const;
  25.   __declspec(property(get = getPoint2d))AcGePoint2d Point2d;
  26.   __declspec(property(get = getPoint3d))AcGePoint3d Point3d;
  27.   __declspec(property(get = getObjectId))AcDbObjectId ObjectId;
  28. };

.cpp
  1. #include "StdAfx.h"
  2. #include "JigTest.h"
  3. RectJig::RectJig(double width, double height, const CString &msg, Adesk::Boolean append /*= Adesk::kTrue*/)
  4. :m_append(append), m_line(new AcDbPolyline(4)), m_cur(AcGePoint3d::kOrigin),
  5. m_last(AcGePoint3d::kOrigin) , m_msg(msg) , m_id(AcDbObjectId::kNull)
  6. {
  7.   AcGePoint2d pt0(m_cur.x, m_cur.y);
  8.   AcGePoint2d pt1(pt0.x + width,pt0.y);
  9.   AcGePoint2d pt2(pt0.x + width, pt0.y + height);
  10.   AcGePoint2d pt3(pt0.x, pt0.y + height);
  11.   this->m_line->addVertexAt(0,pt0);
  12.   this->m_line->addVertexAt(1,pt1);
  13.   this->m_line->addVertexAt(2,pt2);
  14.   this->m_line->addVertexAt(3,pt3);
  15.   this->m_line->setClosed(Adesk::kTrue);
  16. }
  17. RectJig::~RectJig(void)
  18. {
  19.   if(!m_append)
  20.   {
  21.     delete m_line;
  22.   }
  23. }
  24. inline Adesk::Boolean RectJig::cursorHasMoved( void )
  25. {
  26.   return this->m_cur != this->m_last;
  27. }
  28. AcEdJig::DragStatus RectJig::sampler()
  29. {
  30.   setUserInputControls(UserInputControls(kAccept3dCoordinates));
  31.   if(acquirePoint(m_cur) != AcEdJig::kNormal)
  32.   {
  33.     return AcEdJig::kCancel;
  34.   }
  35.   if(this->cursorHasMoved())
  36.   {
  37.     return AcEdJig::kNormal;
  38.   }
  39.   return AcEdJig::kNoChange;
  40. }
  41. Adesk::Boolean RectJig::update(void)
  42. {
  43.   if(this->m_line->transformBy(AcGeMatrix3d::translation(AcGeVector3d(m_cur - m_last))) != Acad::eOk)
  44.   {
  45.     return Adesk::kFalse;
  46.   }
  47.   m_last = m_cur;
  48.   return Adesk::kTrue;
  49. }
  50. AcDbEntity* RectJig::entity(void) const
  51. {
  52.   return this->m_line;
  53. }
  54. void RectJig::doIt(void)
  55. {
  56.   setDispPrompt(m_msg);
  57.   if(drag() != AcEdJig::kNormal)
  58.   {
  59.     m_append = Adesk::kFalse;
  60.   }
  61.   if(m_append)
  62.   {
  63.     m_id = append();
  64.     m_line->close();
  65.   }
  66. }
  67. AcGePoint2d RectJig::getPoint2d(void) const
  68. {
  69.   return AcGePoint2d(m_last.x, m_last.y);
  70. }
  71. AcGePoint3d RectJig::getPoint3d(void) const
  72. {
  73.   return m_last;
  74. }
  75. AcDbObjectId RectJig::getObjectId( void ) const
  76. {
  77.   return m_id;
  78. }

和命令
  1. static void CabDraw_RectJig(void)
  2.   {
  3.     RectJig jig(100,100, _T("Pick Start Point: "));
  4.     jig.doIt();
  5.     acutPrintf(_T("\n%g,%g"),jig.Point2d.x, jig.Point2d.y);
  6.   }

编辑添加了objectid属性
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 02:11:21 | 显示全部楼层
函数“doIt”肯定会在你的代码中有很多浮雕
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 02:27:21 | 显示全部楼层
Ah FooBar
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 02:38:40 | 显示全部楼层
丹尼尔,
关于不使用示例的原因,例如用于命令RECT?
无论如何,我不是AcedJig的忠实粉丝 - 已经将这个类用于一些命令,但是例如,尝试编写一个模拟命令PLINE的类 - 在我的情况下,我最终做了一个单独的函数。
有一个MPOLY由Kean W.完成,但不能作为PLINE工作。顺便说一句
,只是想让它评论它....
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

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

铜币
300
发表于 2009-3-27 02:57:28 | 显示全部楼层
嗨,路易斯,
我不记得在那里。我用椭圆示例作为指导
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-6 04:06 , Processed in 0.217809 second(s), 64 queries .

© 2020-2025 乐筑天下

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