乐筑天下

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

样条曲线的长度!

[复制链接]

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-19 11:22:56 | 显示全部楼层 |阅读模式
要使用autolisp查找样条长度,我使用
  1. (command "spline" pt1 pt2 pt3 pt4  "" pt1 pt4)                        
  2. (setq ent1(entlast))
  3. (setq lengthOfSpline(vlax-curve-getDistAtParam ent1        (vlax-curve-getEndParam ent1)))

如何在C++中做同样的事情?
  1. //this doesn't give right value
  2.         ptArray contains pt1, pt2, pt3, pt4
  3.         for( int i = 0 ; i getEndParam(dummy1);
  4.         retVal = spline->getDistAtParam(dummy1,dummy2);
  5.         delete spline;
  6.         return dummy2;
  7. //i think this is not right as the outputs are different.
  8.         //any other way to find it? is there a direct call like object.length() to find out?

谢谢,
帕万。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-19 20:13:38 | 显示全部楼层
是的,它们的长度相同
  1.   static void ExtTools_doit(void)
  2.   {
  3.     CPromptEntityResultPtr pRes = CEditor::GetEntity(_T("\nSelect Spline: "));
  4.     if(pRes->Status != Acad::eNormal){
  5.       return;
  6.     }
  7.     AcDbEntityPointer pEnt(pRes->ObjectId,AcDb::kForRead);
  8.     if(pEnt.openStatus() != eOk){
  9.       return;
  10.     }
  11.     AcDbSpline *pSpline = AcDbSpline::cast(pEnt);
  12.     if(pSpline == NULL){
  13.       return;
  14.     }
  15.     double endParam,length;
  16.     pSpline->getEndParam(endParam);
  17.     pSpline->getDistAtParam(endParam,length);
  18.     acutPrintf(_T("\nSpline Length is %g"),length);
  19.   }

回复

使用道具 举报

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-20 03:05:51 | 显示全部楼层
谢谢,但是我无法验证代码3]

AutoCAD 2009中的等效功能是什么?我在object arx 2009中找不到这个类。
回复

使用道具 举报

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-20 03:23:59 | 显示全部楼层
抱歉,那是我自己班上的,试试这个
  1.   static void ExtTools_doit(void)
  2.   {
  3.     ads_name ename = { 0L , 0L };
  4.     ads_point pnt  = {0.0, 0.0, 0.0};
  5.     AcDbObjectId eId;
  6.     if(acedEntSel(_T("\nSelect Spline: "),ename,pnt) == RTNORM){
  7.       acdbGetObjectId(eId,ename);
  8.     }
  9.     AcDbEntityPointer pEnt(eId, AcDb::kForRead);
  10.     if(pEnt.openStatus() != eOk){
  11.       return;
  12.     }
  13.     AcDbSpline *pSpline = AcDbSpline::cast(pEnt);
  14.     if(pSpline == NULL){
  15.       return;
  16.     }
  17.     double endParam,length;
  18.     pSpline->getEndParam(endParam);
  19.     pSpline->getDistAtParam(endParam,length);
  20.     acutPrintf(_T("\nSpline Length is %g"),length);
  21.   }

回复

使用道具 举报

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-20 06:04:38 | 显示全部楼层
谢谢!
你非常擅长ARX!
回复

使用道具 举报

6

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
40
发表于 2009-12-20 06:10:13 | 显示全部楼层

这是我的荣幸<谢谢!我觉得我只是ARX的新手……长大后我想像欧文一样
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 22:03 , Processed in 0.454055 second(s), 64 queries .

© 2020-2025 乐筑天下

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