天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 77|回复: 0

AcEdJig 拖拽类使用的一点心得

[复制链接]
  • TA的每日心情
    开心
    2024-8-31 15:58
  • 签到天数: 89 天

    [LV.6]常住居民II

    488

    主题

    207

    回帖

    3366

    积分

    管理员

    积分
    3366
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    AcEdJig 拖拽类使用的一点心得

    1 自定义一个类继承 AcEdJig
        2 定义如下成员函数
            AsdkEllipseJig(const AcGePoint3d&, const AcGeVector3d&);
            void doIt();                         // 启动拖拽 调用drag()
            virtual DragStatus sampler();        // 被drag()调用
            virtual Adesk::Boolean update();     // 被sampler()调用
            virtual AcDbEntity* entity() const;  // 返回被拖拽的实体指针
        3   sampler函数实现
    1. AcEdJig::DragStatus CDrawJig::sampler()
    2.         {  // 在用户拖动过程中 收集用户输入信息 并更新到成员变量
    3.                 //  用户输入控制
    4.             setUserInputControls((UserInputControls)(AcEdJig::kAccept3dCoordinates |
    5.                                                      AcEdJig::kNoNegativeResponseAccepted |
    6.                                                      AcEdJig::kNullResponseAccepted));
    7.                 //  采集移动的点坐标 判断鼠标是否没有移动
    8.             static AcGePoint3d pointtemp;
    9.             //  acedGetPoint函数除了可以在屏幕上鼠标点击获取点坐标之外 还可以在命令行输入距离来计算得到点坐标
    10.             DragStatus dragstatus = acquirePoint(m_pointend,m_pointstart);
    11.             if ((pointtemp != m_pointend))
    12.             {
    13.                 pointtemp = m_pointend;
    14.             }
    15.             
    16.             else if (dragstatus == AcEdJig::kNormal)
    17.             {
    18.                 return AcEdJig::kNoChange;
    19.             }            return dragstatus;
    20.         }
    复制代码

    1. Adesk::Boolean CDrawJig::update()
    2.         {    //更新实体
    3.             m_pPolyLine->setPointAt(1, m_pointend.convert2d(AcGePlane()));
    4.             return Adesk::kTrue;
    5.         }
    复制代码
    1. AcDbEntity * CDrawJig::entity() const
    2.         {    //  返回发生变化的实体
    3.             return m_pPolyLine;
    4.         }
    复制代码

    1. void
    2.         createLine() {
    3.             AcGePoint3d tempPt; struct resbuf rbFrom, rbTo;
    4.             acedGetPoint(NULL, _T("\n输入第一点: "), asDblArray(tempPt));
    5.             rbFrom.restype = RTSHORT;
    6.             rbFrom.resval.rint = 1; // from UCS
    7.             rbTo.restype = RTSHORT;
    8.             rbTo.resval.rint = 0; // to WCS
    9.             acedTrans(asDblArray(tempPt), &rbFrom, &rbTo,
    10.                 Adesk::kFalse, asDblArray(tempPt));
    11.             CDrawJig* jig = new CDrawJig(tempPt);
    12.             jig->doIt();
    13.             delete jig;
    14.         }
    复制代码

    注意:sampler函数 update函数 不是用户自己调用

     

     

     

     

    AcEdJig 拖拽类使用的一点心得
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 09:11 , Processed in 0.066173 second(s), 27 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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