AutoCAD二次开发经验总结

文章讲述了在使用AutoCAD编程时,需要注意资源的正确管理,如使用迭代器后要记得删除,避免造成内存泄漏或程序崩溃。强调了AcGe和AcDb类在不同场景下的应用,以及如何判断多段线是否封闭。此外,还提到了MFC中列表控件的操作和对话框的处理,包括ESC键响应及非模态对话框的内存管理。
摘要由CSDN通过智能技术生成
  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()成员函数判断是否闭合。有的时候曲线看起来是闭合的,但实际上并不闭合,可以根据其特性对话框的闭合属性确定是否闭合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值