明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3007|回复: 3

[几何] [求助]版主帮忙调试一下曲线等分程序

  [复制链接]
发表于 2010-2-9 16:38 | 显示全部楼层 |阅读模式

又要麻烦版主了;我把vb.net(vb.net代码见本论坛的我的“关于曲率问题”)改写为c#的,调试时出现cad崩溃现象,不知哪里出了问题

帮吗调试一下,主要为了学习用,谢谢!!!见附件

我的系统:cad2008,vs2008

czlj2008@163.com

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-2-9 18:11 | 显示全部楼层
  1.         [CommandMethod("DFX")]
  2.         public void Test()
  3.         {
  4.             Database db = HostApplicationServices.WorkingDatabase;
  5.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  6.             int n;
  7.             string ts = "\r请选择线条(圆弧、直线或者多义线):";
  8.             PromptEntityOptions opt = new PromptEntityOptions(ts);
  9.             //PromptEntityOptions opt = New PromptEntityOptions(ts);
  10.             //opt.SetRejectMessage();
  11.             //opt.SetRejectMessage(intCount & "只能线条");
  12.             opt.SetRejectMessage("只能线条");
  13.             opt.AddAllowedClass(typeof(Polyline), true);
  14.             opt.AddAllowedClass(typeof(Arc), true);
  15.             opt.AddAllowedClass(typeof(Line), true);
  16.             PromptEntityResult res = ed.GetEntity(opt);
  17.             if (res.Status != PromptStatus.OK)
  18.             {
  19.                 ed.WriteMessage("\r用户自行退出!");
  20.             }
  21.             else
  22.             {
  23.                 PromptIntegerOptions iop = new PromptIntegerOptions("指定等分段的数量:");
  24.                 iop.DefaultValue = 10;
  25.                 PromptIntegerResult irt = ed.GetInteger(iop);
  26.                 if (irt.Status != PromptStatus.OK || irt.Value < 2)
  27.                 {
  28.                     return;
  29.                 }
  30.                 else
  31.                 {
  32.                     n = irt.Value;
  33.                 }
  34.                 using (Transaction trans = db.TransactionManager.StartTransaction())
  35.                 {
  36.                     Curve cv = (Curve)(trans.GetObject(res.ObjectId, OpenMode.ForWrite));
  37.                     double len = cv.GetDistanceAtParameter(cv.EndParam);
  38.                     int i;
  39.                     for (i = 0; i <= n; i++)
  40.                     {
  41.                         Point3d p = cv.GetPointAtDist(i * len / n);
  42.                         Vector3d kp = cv.GetFirstDerivative(cv.GetParameterAtDistance(i * len / n));
  43.                         double ka = kp.GetAngleTo(Vector3d.XAxis) - Math.PI / 2;
  44.                         AddText(p, "等分点" + i.ToString(), 3, ka, 1, 1);
  45.                     }
  46.                     trans.Commit();
  47.                 }
  48.             }
  49.         }
 楼主| 发表于 2010-2-10 09:18 | 显示全部楼层

感谢lzh741206版主,这么晚了还帮忙调试程序,很感动!谢谢!!

提前给您以及MJTD.COM的各位版主拜个早年了,祝各位工作顺利,万事如意,身体健康,合家欢乐!!!

 楼主| 发表于 2020-4-30 15:31 | 显示全部楼层
雪山飞狐_lzh版主您好,addtext的函数已经有了,好多年没有写代码了,忘记了。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 15:19 , Processed in 0.165720 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表