乐筑天下

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

画一个临时的红圈(在重生时被移除)

[复制链接]

25

主题

117

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2011-6-19 06:20:00 | 显示全部楼层 |阅读模式
我需要帮助绘制临时红色圆圈(就像在未找到有效边界时填充命令中的圆圈一样)。
这甚至可以从.net实现吗?
我知道Editor.DrawVector,但那只是为了绘制直线和另一个问题,它在缩放
时被删除 从图案填充中进行功能描述:错误被标记为红色圆圈,即使在放大/缩小后也会保留在屏幕上,它会自动缩放,但在Regen/Redraw时会被删除...
提前感谢任何指示

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

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

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2011-6-19 07:07:16 | 显示全部楼层
嗨,
也许实现一个继承抽象Autodesk.AutoCAD.GraphicsInterface.Glyph类的类。
回复

使用道具 举报

25

主题

117

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2011-6-19 10:04:28 | 显示全部楼层
我想知道的是我能不能接触到?当autocad试图标记错误时执行的net命令/包装程序(如在未连接边界的剖面线实体之后)
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2011-6-19 13:19:41 | 显示全部楼层
对这里有一个简单的例子。要根据屏幕大小自动缩放圆,还需要做更多的工作,但这应该可以让您开始了。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.EditorInput;
  7. using Autodesk.AutoCAD.Runtime;
  8. using Autodesk.AutoCAD.Geometry;
  9. using aGi = Autodesk.AutoCAD.GraphicsInterface;
  10. namespace MyTest
  11. {
  12.     public class testing
  13.     {
  14.         private DBObjectCollection m_mrkers = new DBObjectCollection();
  15.         private IntegerCollection intColl = new IntegerCollection();
  16.         [CommandMethod("TempCirc")]
  17.         public void tempcirc()
  18.         {
  19.             Document doc = Application.DocumentManager.MdiActiveDocument;
  20.             Database db = doc.Database;
  21.             doc.CommandWillStart += new CommandEventHandler(doc_CommandWillStart);
  22.             Point3d ctrPt = new Point3d(100,100,0);
  23.             Circle circ = new Circle(ctrPt, Vector3d.ZAxis, 5);
  24.             circ.ColorIndex = 1;
  25.             aGi.TransientManager.CurrentTransientManager.AddTransient(circ, aGi.TransientDrawingMode.DirectTopmost, 128, intColl);
  26.             m_mrkers.Add(circ);
  27.         }
  28.         void doc_CommandWillStart(object sender, CommandEventArgs e)
  29.         {
  30.             if (e.GlobalCommandName.Contains("REGEN"))
  31.             {
  32.                 ClearMarkers();
  33.                 Document doc = Application.DocumentManager.MdiActiveDocument;
  34.                 doc.CommandWillStart -= new CommandEventHandler(doc_CommandWillStart);
  35.             }
  36.         }
  37.         private void ClearMarkers()
  38.         {
  39.                 aGi.TransientManager.CurrentTransientManager.EraseTransient(m_mrkers[0], intColl);
  40.                 m_mrkers[0].Dispose();
  41.                 m_mrkers.Clear();
  42.             }
  43.         }
  44.     }

回复

使用道具 举报

1

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
9
发表于 2011-10-25 16:27:23 | 显示全部楼层
我试图用线而不是圆来做类似的事情,但我使用的是VB.NET。我已经用C#to VB转换器转换了Jeff_M的代码,但他的两行代码有问题
…转换为VB代码
文档。CommandWillStart+=新的CommandEventHandler(doc_CommandWillStart的地址)
doc。CommandWillStart-=新的CommandEventHandler(doc_CommandWillStart的地址)
它不理解doc。CommandWillStart并给我一条消息,“公共事件CommandWillStart(…)是一个事件,不能直接调用。当我将鼠标悬停在其蓝色波浪形下划线上时,使用'RaiseEvent'语句引发事件”。intellisense给我的最接近的选项是doc.CommandInProgress。我不明白“举办活动”是什么意思
我是VB.NET和AutoCAD API的新手,因此我提前为自己的密集性道歉。
乔治
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2011-10-25 17:19:02 | 显示全部楼层
而不是这一行(转换后)
  1. doc.CommandWillStart += New CommandEventHandler(AddressOf doc_CommandWillStart)

使用这个
  1. AddHandler doc.CommandWillStart, New CommandEventHandler(AddressOf doc_CommandWillStart)

而不是这一行
  1. 'doc.CommandWillStart -= New CommandEventHandler(AddressOf doc_CommandWillStart)

使用下一个:
  1. RemoveHandler doc.CommandWillStart, AddressOf doc_CommandWillStart

此外,如果要绘制多个圆,请尝试以下操作:
  1.         Private Sub ClearMarkers()
  2.             If (m_mrkers.Count) > 0 Then
  3.                 For i As Integer = 0 To m_mrkers.Count - 1
  4.                     aGi.TransientManager.CurrentTransientManager.EraseTransient(m_mrkers(i), intColl)
  5.                     m_mrkers(i).Dispose()
  6.                 Next
  7.             End If
  8.         End Sub

杰夫抢先一步
回复

使用道具 举报

1

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
9
发表于 2011-10-26 12:50:44 | 显示全部楼层
哇,谢谢fixo,这很快,它像一个魅力。 我不认为我能在很长一段时间内偶然发现这一点。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2013-11-1 03:34:04 | 显示全部楼层
我遇到了类似的问题,如上所述。
我正在绘制瞬态图形以指示设计中的问题。
当我缩放圆圈时保持原位,但当我重新缩放时,我的圆圈会移动。
我找不到在重新缩放后触发更新图形的事件。有这样的事件吗?
或者与瞬态管理器有关吗?
或者在重新缩放瞬态图形时会发生什么?
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2016-3-22 06:40:59 | 显示全部楼层

如何使用aGi。autocad 2008中的transient manager . currenttransientmanager . add transient?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 18:45 , Processed in 0.228978 second(s), 70 queries .

© 2020-2025 乐筑天下

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