画一个临时的红圈(在重生时被移除)
我需要帮助绘制临时红色圆圈(就像在未找到有效边界时填充命令中的圆圈一样)。这甚至可以从.net实现吗?
我知道Editor.DrawVector,但那只是为了绘制直线和另一个问题,它在缩放
时被删除 从图案填充中进行功能描述:错误被标记为红色圆圈,即使在放大/缩小后也会保留在屏幕上,它会自动缩放,但在Regen/Redraw时会被删除...
提前感谢任何指示
**** Hidden Message ***** 嗨,
也许实现一个继承抽象Autodesk.AutoCAD.GraphicsInterface.Glyph类的类。 我想知道的是我能不能接触到?当autocad试图标记错误时执行的net命令/包装程序(如在未连接边界的剖面线实体之后) 对这里有一个简单的例子。要根据屏幕大小自动缩放圆,还需要做更多的工作,但这应该可以让您开始了。
using System;
using System.Collections.Generic;
using System.Text;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
using aGi = Autodesk.AutoCAD.GraphicsInterface;
namespace MyTest
{
public class testing
{
private DBObjectCollection m_mrkers = new DBObjectCollection();
private IntegerCollection intColl = new IntegerCollection();
public void tempcirc()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
doc.CommandWillStart += new CommandEventHandler(doc_CommandWillStart);
Point3d ctrPt = new Point3d(100,100,0);
Circle circ = new Circle(ctrPt, Vector3d.ZAxis, 5);
circ.ColorIndex = 1;
aGi.TransientManager.CurrentTransientManager.AddTransient(circ, aGi.TransientDrawingMode.DirectTopmost, 128, intColl);
m_mrkers.Add(circ);
}
void doc_CommandWillStart(object sender, CommandEventArgs e)
{
if (e.GlobalCommandName.Contains("REGEN"))
{
ClearMarkers();
Document doc = Application.DocumentManager.MdiActiveDocument;
doc.CommandWillStart -= new CommandEventHandler(doc_CommandWillStart);
}
}
private void ClearMarkers()
{
aGi.TransientManager.CurrentTransientManager.EraseTransient(m_mrkers, intColl);
m_mrkers.Dispose();
m_mrkers.Clear();
}
}
}
我试图用线而不是圆来做类似的事情,但我使用的是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的新手,因此我提前为自己的密集性道歉。
乔治 而不是这一行(转换后)
doc.CommandWillStart += New CommandEventHandler(AddressOf doc_CommandWillStart)
使用这个
AddHandler doc.CommandWillStart, New CommandEventHandler(AddressOf doc_CommandWillStart)
而不是这一行
'doc.CommandWillStart -= New CommandEventHandler(AddressOf doc_CommandWillStart)
使用下一个:
RemoveHandler doc.CommandWillStart, AddressOf doc_CommandWillStart
此外,如果要绘制多个圆,请尝试以下操作:
Private Sub ClearMarkers()
If (m_mrkers.Count) > 0 Then
For i As Integer = 0 To m_mrkers.Count - 1
aGi.TransientManager.CurrentTransientManager.EraseTransient(m_mrkers(i), intColl)
m_mrkers(i).Dispose()
Next
End If
End Sub
杰夫抢先一步 哇,谢谢fixo,这很快,它像一个魅力。 我不认为我能在很长一段时间内偶然发现这一点。 我遇到了类似的问题,如上所述。
我正在绘制瞬态图形以指示设计中的问题。
当我缩放圆圈时保持原位,但当我重新缩放时,我的圆圈会移动。
我找不到在重新缩放后触发更新图形的事件。有这样的事件吗?
或者与瞬态管理器有关吗?
或者在重新缩放瞬态图形时会发生什么?
如何使用aGi。autocad 2008中的transient manager . currenttransientmanager . add transient?
页:
[1]