• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > AutoCAD二次开发的问题

AutoCAD二次开发的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了autocad二次开发,autocad二次开发教程,autocad二次开发工具,autocad二次开发实例,autocad2016二次开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: AutoCAD二次开发的问题
描述:

本人用VC通过ActiveX来对AutoCAD进行二次开发。
有一个功能是对一条直线通过矩阵来实现平移、缩放。
代码如下:
void CWanDlg::OnButtonRelativeScale() 
{
    UpdateData(true);
    IAcadLine Line;
    IAcadModelSpace m_IMSpace;
    SAFEARRAYBOUND RSbound;
    RSbound.lLbound = 0;
    RSbound.cElements = 4*4;
    SAFEARRAY * pStartPoint = NULL;
    pStartPoint= ::SafeArrayCreate(VT_R8,1,&RSbound);
    if(!pStartPoint) AfxMessageBox("SafeArrayCreate error!");
    double TransMatrix[4][4];
    int index1,index2;
    for(index1=0;index1<4;index1++)
{
for(index2=0;index2<4;index2++)
{
TransMatrix[index1][index2]=0;
}
}
TransMatrix[0][0]=m_RSFactor;//4*4矩阵的对角线上的变量
TransMatrix[1][1]=m_RSFactor;
TransMatrix[2][2]=m_RSFactor;
TransMatrix[3][3]=1;
         long i=0;
for(index1=0;index1<4;index1++)
{
  for(index2=0;index2<4;index2++)
{
   SafeArrayPutElement(pStartPoint,&i,&TransMatrix[index1][index2]);
                  i++;
}//把数组赋值道SAFEARRAY里  
}
        VARIANT pRS;
VariantInit(&pRS);
pRS.vt =VT_ARRAY|VT_R8;
pRS.parray =pStartPoint;
         
int m_LineNum=m_IMSpace.GetCount();
VARIANT temp;
VariantInit(&temp);
temp.vt =VT_I2;
temp.iVal =m_LineNum-1;
Line=m_IMSpace.Item(temp);
         Line.TransformBy(pRS);//转置 (这里出现了问题)
 望各位大侠能帮小弟解决!!!


解决方案1:

首先抱歉,这几天事情多没上网,没有看到版主给我的信息。
再者,难道你不能自已看看MSDN吗,那上面讲的很清楚的。
我把你的程序改了一下,我是作过二维数组的,但因为手头没有那时的代码,可能不时非常准确。
void CWanDlg::OnButtonRelativeScale() 
{
    UpdateData(true);
    IAcadLine Line;
    IAcadModelSpace m_IMSpace;
    SAFEARRAYBOUND RSbound[2];
    RSbound[0].lLbound = 0;
    RSbound[0].cElements = 4;
    RSbound[1].lLbound=0;
    RSbound[1].cElements=4;
    SAFEARRAY * pStartPoint = NULL;
    pStartPoint= ::SafeArrayCreate(VT_R8,2,RSbound);
    if(!pStartPoint) AfxMessageBox("SafeArrayCreate error!");
    double TransMatrix[4][4];
    int index1,index2;
    for(index1=0;index1<4;index1++)
   {
for(index2=0;index2<4;index2++)
{
TransMatrix[index1][index2]=0;
}
    }
    TransMatrix[0][0]=m_RSFactor;//4*4矩阵的对角线上的变量
    TransMatrix[1][1]=m_RSFactor;
    TransMatrix[2][2]=m_RSFactor;
    TransMatrix[3][3]=1;
    long indice[2];
    for(index1=0;index1<4;index1++)
    {
         indice[0]=index1;
  for(index2=0;index2<4;index2++)
{
             indice[1]=index2;
   SafeArrayPutElement(pStartPoint,indice,&TransMatrix[index1][index2]);
}//把数组赋值道SAFEARRAY里  
     }
     VARIANT pRS;
     VariantInit(&pRS);
     pRS.vt =VT_ARRAY|VT_R8;
     pRS.parray =pStartPoint;
         
     int m_LineNum=m_IMSpace.GetCount();
     VARIANT temp;
     VariantInit(&temp);
     temp.vt =VT_I2;
     temp.iVal =m_LineNum-1;
     Line=m_IMSpace.Item(temp);
     Line.TransformBy(pRS);//转置 (这里出现了问题)


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • VC和AUTOCAD的二次开发怎么联接???????????????
  • AutoCAD二次开发的问题

相关文章

  • 2017-06-05 为什么加载了ActiveX显示出来后其他JS代码会没法运行了
  • 2017-06-05 如何响应ActiveX控件的PreTranslateMessageMSGpMsg函数
  • 2017-06-05 Shell扩展问题,如何拦截文件夹的双击操作
  • 2017-06-05 服务方式隐藏运行
  • 2017-06-04 atl制作控件
  • 2017-06-04 VC中如何调用ocx
  • 2017-06-04 如何规划COM以避免使用全局变量和全局函数?
  • 2017-06-04 如何再IE的控件里来关闭IE窗口?
  • 2017-06-04 急,关于智能指针的一个小问题...
  • 2017-06-04 WTL::CFileDialog窗口位置

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何建立activex的控件容器(分设计模式和运行模式)
    • 一个罕见的不能注册DLL的问题?
    • Directshow问题,各位大侠进来看看!
    • ActiveX控件怎么设置主窗口的大小
    • VC6的调试问题
    • ATL开发ActiveX的背景怎样透明?
    • 满分求ActiveX在Xp下不能正确下载的问题,急~~
    • 询问进程间通信atl对象接口如何衔接?
    • 我遇到的情况是用VC做的OCX在WIN7下用regsvr32注册显示是注册成功,但在用时就是不能用。同样的东西同样的操作在XP下一切正常凌乱中
    • 我编写ATLCOM的时候遇到问题,是一个关于ADOException的问题,请大家帮忙

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有