1. 沿多段线顶点标注坐标
-
选择对象
PromptEntityOptions peo = new PromptEntityOptions("\n选择要标注坐标的多段线"); peo.SetRejectMessage("\n只能选择多段线(Polyline)"); peo.AddAllowedClass(typeof(Polyline), false); PromptEntityResult per = ed.GetEntity(peo); if (per.Status != PromptStatus.OK) return; Polyline pl=new Polyline();
-
遍历所有顶点
using (var tr=db.TransactionManager.StartOpenCloseTransaction()) { pl =tr.GetObject(per.ObjectId,OpenMode.ForRead) as Polyline; double length = 0; if (pl != null) { int vn = pl.NumberOfVertices; for (int i = 0; i < vn; i++) { //逐个拾取标注位置 } } tr.Commit(); }
逐个拾取标注位置
using (var tr2=db.TransactionManager.StartOpenCloseTransaction()) { var btr = tr2.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord; //此处代码省略,需要注意的是如果需要在每执行完一步需要显示所画内容时,要再开启一个事务,并且要将对象添加到该事务 tr2.AddNewlyCreatedDBObject(entity, true); tr2.Commit(); }
2. wpf添加超链接
<TextBlock Margin="3" HorizontalAlignment="Center" TextDecorations="Underline" Foreground="#FF0351F9">
<Hyperlink NavigateUri="https://www.5616760.com/" Name="linkHelp" Click="linkDmsite_Click">
C3D.Club
</Hyperlink>
</TextBlock>
using System.Diagnostics;//需要添加这两个引用
using System.Windows.Documents;
private void linkDmsite_Click(object sender, RoutedEventArgs e)
{
Hyperlink link = sender as Hyperlink;
Process.Start(new ProcessStartInfo(link.NavigateUri.AbsoluteUri));
}
3. 在横断面中快速标注标高
- 获取系统变量:捕捉、图层
- 重新设置捕捉、图层、文字样式
- 判断块是否存在、创建块
- 选择基点
- 输入基点标高
- 选择点
- 恢复图层
- 选择多段线
4.在横断面中快速标注坡度
- 选择直线
- 根据直线的斜率进行判断,如果大于10%,则标注为1:N的形式
- 插入块、标注坡度
- 选择多段线批量标注