- 积分
- 554
- 明经币
- 个
- 注册时间
- 2024-5-8
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 幽兰聆雨 于 2024-6-17 14:26 编辑
动态绘图的时候出现这种情况咋解决啊?教学视频没出现这种情况。
lisp能用redraw解决,C#有类似的方法不?
2024.6.17,找到问题了,和屏幕刷新没关系,polyline修改顶点方法使用错误,应该是SetPointAt。
- public class JigPdmx : EntityJig
- {
- //定义JigPdmx的属性
- private Point2d _startPoint;//外部输入赋值后不变
- private Point2d _endPoint;//通过鼠标动态获取
- private double _size;//外部输入赋值后不变
- // 对象属性,不更新
- public JigPdmx(Point2d StartPoint, double Size) // 定义外部输入数据
- : base(new Polyline(6))//定义JigPdmx为具有6个点的polyline
- {
- this._startPoint = StartPoint;// 将JigPdmx的属性赋值
- this._size = Size;//将JigPdmx的属性赋值
- }
- //用于更新自定义对象(JigPdmx)属性
- protected override bool Update()
- {
- 在这儿写一个类似redraw的操作
- Point2d[] pts = _startPoint.GetPdmxPoint(_endPoint, _size);
- ((Polyline)Entity).AddVertexAt(0, _startPoint, 0, 0, 0);
- ((Polyline)Entity).AddVertexAt(1, pts[0], 0, 0, 0);
- ((Polyline)Entity).AddVertexAt(2, pts[1], 0, 0, 0);
- ((Polyline)Entity).AddVertexAt(3, pts[2], 0, 0, 0);
- ((Polyline)Entity).AddVertexAt(4, pts[3], 0, 0, 0);
- ((Polyline)Entity).AddVertexAt(5, _endPoint, 0, 0, 0);
- return true;
- }
- //给_endPoint赋值
- protected override SamplerStatus Sampler(JigPrompts prompts)
- {
- //声明提示信息
- JigPromptPointOptions jppo = new JigPromptPointOptions("\n指定第二点");
- jppo.UserInputControls = UserInputControls.Accept3dCoordinates;
- //获取鼠标位置
- PromptPointResult ppr = prompts.AcquirePoint(jppo);
- //将当前鼠标位置点赋予_endPoint
- _endPoint = ppr.Value.ToPoint2d();
- return SamplerStatus.NoChange;
- }
- }
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|