原来有代码块功能,尴了个尬,以前不知道。。。
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using IFoxCAD.Cad;
using System;
namespace DYH.Action
{
public class _07画跑道
{
[CommandMethod("HPD")]
public void HPD()
{
var r1 = Env.Editor.GetPoint("\n选择插入点");//获取插入点
if (r1.Status != PromptStatus.OK) return;//如果用户没有正确输入则程序结束
var pt0 = r1.Value.Ucs2Wcs();//拿到坐标点
var pdo2 = new PromptDoubleOptions("\n输入中线长度") { AllowNone = true, AllowZero = false, AllowNegative = false };//设置实数获取选项,限值≥0
var r2 = Env.Editor.GetDouble(pdo2);//提示用户输入长度
if (r2.Status != PromptStatus.OK) return;//吐过用户没有正确输入长度则程序结束
var length = r2.Value;//拿到长度
var j1 = new JigEx((mp, de) =>//新建拖拽
{
var raidus = Math.Abs(mp.Y - pt0.Y);//半径等于Y的差值的绝对值
var width = (length - raidus * Math.PI * 2) * 0.5;//直段宽等于总长度减圆的周长再除以二//这个地方应该是乘0.5
if (width < 0) { width = 0;raidus = length / Math.PI / 2; }//直段长度<0时,图形是不成立的,这时候会是个圆,让width等于0,半径最大
var pt1 = new Point2d(pt0.X - width * 0.5, pt0.Y - raidus);//计算多段线4个角点位置,竖直的两边设置凸度变成半圆
var pt2 = new Point2d(pt1.X + width, pt1.Y);
var pt3 = new Point2d(pt2.X, pt0.Y + raidus);//
var pt4 = new Point2d(pt1.X, pt3.Y);
var pl = new Polyline();//新建多段线
pl.AddVertexAt(0, pt1, 0, 0, 0);
pl.AddVertexAt(1, pt2, 1, 0, 0);
pl.AddVertexAt(2, pt3, 0, 0, 0);
pl.AddVertexAt(3, pt4, 1, 0, 0);
pl.Closed = true;//曲线为闭合曲线
var dbc1 = pl.GetOffsetCurves(2);//将多段线往两边分别偏移2mm
var dbc2 = pl.GetOffsetCurves(-2);
//将所有线加入拖拽队列
foreach (var obj in dbc1)
{
if (obj is Entity ent) de.Enqueue(ent);
}
foreach (var obj in dbc2)
{
if (obj is Entity ent) de.Enqueue(ent);
}
pl.ColorIndex = 1;//中间线改为红色
de.Enqueue(pl);
});
j1.SetOptions(pt0.Ucs2Wcs(), msg: "\n选择拖拽点");//设置拖拽选项
var r3 = j1.Drag();//开始拖拽
if (r3.Status == PromptStatus.OK)//如果用户正确点击
{
using (var tr = new DBTrans())//建事务
{
tr.CurrentSpace.AddEntity(j1.Entitys);//将拖拽的图形加入图纸
}
}
else return;//其他情况程序结束
}
}
}
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...