乐筑天下

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

请各位帮忙

[复制链接]

5

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
36
发表于 2006-8-10 12:54:00 | 显示全部楼层 |阅读模式
提示 用户选择两个点,将两点联成直线
为何不能实现啊 ,代码如下:
ads_point startPt, endPt;
acedGetPoint(NULL,"\nLocate start point : ", startPt);
acedGetPoint(NULL,"\nLocate end point : ", endPt);
  AcDbLine *pLine = new AcDbLine(startPt,endPt);
//error C2664: '__thiscall AcDbLine::AcDbLine(const class AcGePoint3d &,const class AcGePoint3d &)' : cannot convert parameter 1 from 'double [3]' to 'const class AcGePoint3d &'
        Reason: cannot convert from 'double [3]' to 'const class AcGePoint3d'
        No constructor could take the source type, or constructor overload resolution was ambiguous
请各位帮忙指点一二
回复

使用道具 举报

2

主题

54

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2006-8-13 23:09:00 | 显示全部楼层
第一点,AcDbLine接受的不是ads_point而是AcGePoint3d,要把ads_point 转换为AcGePoint3d,可以这样写:
(假定 ads_point s;AcGePoint3d p;)
p.set(s[0],s[1],s[2]);
但是你得程序可以有更快的写法:
AcDbLine *pLine = new AcDbLine(*(AcGePoint3d*)startPt,*(AcGePoint3d*)endPt);
第二点,你必须把你的图元加入到数据库中才行,这个可以参考SDK上的写法:
AcDbBlockTable *pBlockTable;
  acdbHostApplicationServices()->workingDatabase()
   ->getSymbolTable(pBlockTable, AcDb::kForRead);
  AcDbBlockTableRecord *pBlockTableRecord;
  pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
   AcDb::kForWrite);
  pBlockTable->close();
  AcDbObjectId lineId;
  pBlockTableRecord->appendAcDbEntity(lineId, pLine);
  pBlockTableRecord->close();
  pLine->close();
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 21:02 , Processed in 0.144185 second(s), 56 queries .

© 2020-2025 乐筑天下

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