重新编号点
此代码自动为点编号,但我需要控制从左上角开始排列点编号,以及如何根据位置x对点集合进行排序公共无效tpoint()
{
Document doc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
数据库db=doc.Database
编辑器ed=doc.Editor
使用(Transaction trans=db.TransactionManager.StartTransaction())
{
BlockTable bt=trans.GetObject(db.BlockTableId,OpenMode.ForRead)作为BlockTable
BlockTableRecord btr=trans.GetObject(bt,OpenMode.ForWrite)作为blockTable记录
int-num=1
TypedValue[]tv=新的TypedValue
tv.SetValue(新类型dValue((int)DxfCode)。开始,“点”),0)
SelectionFilter=新的selectionfiller(电视)
PromptSelectionResult:ssPrompt
ssPrompt=ed.GetSelection(过滤器)
如果(ssPrompt.Status==PromptStatus.OK)
{
SelectionSet ss=ssPrompt.Value
foreach(在ss中选择对象sObj)
{
DBPoint spoint=trans.GetObject(sObj.ObjectId,OpenMode.ForWrite)作为DBPoint
DBText.txt=new DBText()
txt.SetDatabaseDefaults()
txt。TextString=num.ToString()
txt。位置=新点3d(点位置X,点位置Y,点位置Z)
txt。旋转=0
txt。高度=2
btr.AppendEntity(txt)
trans。AddNewlyCreatedDBObject(txt,true)
num++
}
trans.Commit()
}
}
}
例如,我附上图片
**** Hidden Message ***** 只是在这里吐出球,但你能用Linq对物体进行分类吗?创建实际点实体的列表,然后对其进行排序。类似:var sortedPointsList = pointsList.OrderBy(p => p.X).ThenBy(p => p.Y);。
然后在新列表上预先添加您的编号?。
嗨,
假设点是垂直和地平线
谢谢您,先生 谢谢你先生
页:
[1]