当前位置:   article > 正文

AutoCAD二次开发经验总结

AutoCAD二次开发经验总结
  1. 使用迭代器之后,千万要记得delete掉,不然就可能会无法删除创建出来的实体,甚至崩溃。

  2. 很多bug其实都是因为没有close掉或删除掉相关的资源导致的。切记!要确保代码的每一条路径都释放掉了资源!有open就有close. 有new也要有对应的close或者delete。

  3. 涉及几何运算的,一般用AcGe类。涉及数据库和显示的,一般用AcDb类

  4. 判断多段线是否封闭非常简单,调用成员函数isClose()即可,返回true代表闭合,返回false表示不闭合。

  5. int acedGetVar(
    const ACHAR * sym,
    struct resbuf * result
    );
    提取AutoCAD系统变量的值,放在结果缓冲result中,这个结果缓冲必须要事先分配好内存,不能仅仅是一个指针。例子:
    acedGetVar(L"EXTMAX",&rb1);//获取当前图形右上角点坐标
    acedGetVar(L"EXTMIN",&rb2);//获取当前图形左下角点坐标

  6. int acdbEntLast(
    ads_name result
    );成功返回RTNORM,失败返回RTERROR
    该函数的作用是最近创建出来的实体的ads_name

  7. 注意:boundary命令和-boundary命令是不一样的,前面一个是界面操作,后面的才是命令行操作,用代码调用AutoCAD命令时要用后面那种写法!注意:所有的字面字符串前面必须加L

  8. 要记得更改按钮的owner draw属性为true,这样才能加载到AutoCAD的位图

9.不调updatedata也能自动更新数据

10.书中的描述是错的,CancelEditorCommand会把对话框整个关闭掉。如果不想关闭,可以用ShowWindow(SW_SHOW)重新显示窗口。
11. EndDialog用于关闭模态对话框,closewindow不能用。点击esc键后,会触发oncancel函数,为了按下esc不退出,要重写这个函数,把调用父类的取消函数注释掉。
非模态对话框用destroywindow函数来销毁对话框,销毁之后会自动调用postNcDestroy函数,在该函数中释放内存。

12.非模态对话框必须在堆上分配内存

  1. 颜色索引256代表随层,0代表随块

  2. CString的Find函数用于在字符串中查找子串或字符,如果没找到则返回-1。
    Compare函数用于比较字符串的大小,如果相等则返回0

  3. 不可以在未关闭资源的情况下,再次打开资源。

  4. MFC列表控件插入表头用InsertColum,从0开始。插入行的第一项(item)用InsertItem,从0开始。插入行后续列的内容(subitem)用setItemText,从1开始。列表控件要记得设置属性为report报表模式(View属性)。

  5. CTRL+D可改变控件的tab键切换顺序,鼠标依次点击控件即可根据鼠标点击的顺序确定控件的tab顺序

  6. 要建立与对话框关联的类时,在类向导中要选择对应的对话框的ID。

  7. AutoCAD的曲线实体都可以使用isclosed()成员函数判断是否闭合。有的时候曲线看起来是闭合的,但实际上并不闭合,可以根据其特性对话框的闭合属性确定是否闭合。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/114337
推荐阅读
相关标签
  

闽ICP备14008679号