明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1258|回复: 2

用JIG的时候出现没有为该对象定义无参数的构造函数

[复制链接]
发表于 2014-4-20 19:27:51 | 显示全部楼层 |阅读模式

目的是创建一个对齐标注,获取标注的两点后,在选取第三个点时用jig动态显示标注的方向

  1. using System;
  2. using System.Text;
  3. using System.Linq;
  4. using System.Xml;
  5. using System.Reflection;
  6. using System.ComponentModel;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.Diagnostics;
  10. using System.Windows;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Forms;
  13. using System.Drawing;
  14. using System.IO;

  15. using Autodesk.AutoCAD.ApplicationServices;
  16. using Autodesk.AutoCAD.DatabaseServices;
  17. using Autodesk.AutoCAD.Runtime;
  18. using Autodesk.AutoCAD.EditorInput;
  19. using Autodesk.AutoCAD.Geometry;
  20. using Autodesk.AutoCAD.Windows;
  21. using Autodesk.AutoCAD.GraphicsInterface;

  22. using MgdAcApplication = Autodesk.AutoCAD.ApplicationServices.Application;
  23. using MgdAcDocument = Autodesk.AutoCAD.ApplicationServices.Document;
  24. using AcWindowsNS = Autodesk.AutoCAD.Windows;

  25. using DotNetARX;
  26. namespace SageDesign
  27. {
  28.     class DCBZJig:DrawJig
  29.     {
  30.         public AlignedDimension m_AlignedDimension;
  31.         private Point3d m_dimLinePoint;

  32.         public DCBZJig(AlignedDimension aliDim)
  33.         {
  34.             m_AlignedDimension = aliDim;
  35.         }

  36.         protected override bool WorldDraw(WorldDraw draw)
  37.         {
  38.             draw.Geometry.Draw(m_AlignedDimension);
  39.             return true;
  40.         }

  41.         protected override SamplerStatus Sampler(JigPrompts prompts)
  42.         {
  43.             Editor ed = MgdAcApplication.DocumentManager.MdiActiveDocument.Editor;
  44.             Matrix3d mt = ed.CurrentUserCoordinateSystem;

  45.             JigPromptPointOptions optJig = new JigPromptPointOptions
  46.                 ("\n请指定标注方向");
  47.             PromptPointResult resJigDis = prompts.AcquirePoint(optJig);
  48.             Point3d curPt = resJigDis.Value;
  49.             if (resJigDis.Status == PromptStatus.Cancel)
  50.             {
  51.                 return SamplerStatus.Cancel;
  52.             }
  53.             if (m_dimLinePoint != curPt)
  54.             {
  55.                 Line l1 = new Line(this.m_AlignedDimension.XLine1Point,this.m_AlignedDimension.XLine2Point);
  56.                 Point3d tempDimLinePt2 = l1.GetClosestPointTo(curPt, true);
  57.                 Vector3d vect = new Vector3d(curPt.X - tempDimLinePt2.X, curPt.Y - tempDimLinePt2.Y, curPt.Z - tempDimLinePt2.Z);
  58.                 Point3d dimLinePt = tempDimLinePt2.Add(vect.GetNormal() * 500);
  59.                 // 保存当前点.
  60.                 m_dimLinePoint = dimLinePt;
  61.                 return SamplerStatus.OK;
  62.             }
  63.             else
  64.             {
  65.                 return SamplerStatus.NoChange;
  66.             }
  67.         }

  68.         [CommandMethod("DCBZ")]
  69.         public void Dim()
  70.         {
  71.             Database db = HostApplicationServices.WorkingDatabase;
  72.             Editor ed = MgdAcApplication.DocumentManager.MdiActiveDocument.Editor;
  73.             PromptPointOptions pPtOpts = new PromptPointOptions("\n点取要标注的第一点:");
  74.             PromptPointResult pPtRes = ed.GetPoint(pPtOpts);
  75.             Point3d xLine1Point = pPtRes.Value;
  76.             if (pPtRes.Status == PromptStatus.OK)
  77.             {
  78.                 pPtOpts.Message = "第二点";
  79.                 pPtOpts.BasePoint = xLine1Point;
  80.                 pPtOpts.UseBasePoint = true;
  81.                 pPtRes = ed.GetPoint(pPtOpts);
  82.                 if (pPtRes.Status == PromptStatus.OK)
  83.                 {
  84.                     Point3d xLine2Point = pPtRes.Value;
  85.                     AlignedDimension aliDim = new AlignedDimension(xLine1Point,xLine2Point,xLine1Point,"<>",db.Dimstyle);
  86.                     DCBZJig dcbzjig = new DCBZJig(aliDim);
  87.                     PromptResult resJig = ed.Drag(dcbzjig);
  88.                     if (resJig.Status == PromptStatus.OK)
  89.                     {
  90.                         Tools.AddToModelSpace(db,dcbzjig.m_AlignedDimension);
  91.                     }
  92.                 }
  93.             }
  94.         }
  95.     }
  96. }

本帖子中包含更多资源

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

x
发表于 2014-4-22 11:15:48 | 显示全部楼层
public DCBZJig()
{
}
--------------
加这个试试
 楼主| 发表于 2014-4-23 22:41:26 | 显示全部楼层
sieben 发表于 2014-4-22 11:15
public DCBZJig()
{
}

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

本版积分规则

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

GMT+8, 2024-11-25 13:44 , Processed in 0.161399 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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