- UID
- 76071
- 积分
- 1505
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-8-30
- 最后登录
- 1970-1-1
|
发表于 2016-10-31 00:10:13
|
显示全部楼层
总觉得lisp括号看着头疼...
![](source/plugin/imc_colorcode/images/loading.gif) - [CommandMethod("TTTT")]
- public static void Test()
- {
- var doc = AcadApp.DocumentManager.MdiActiveDocument;
- var ed = doc.Editor;
- var db = doc.Database;
- var resCenter = ed.GetPoint("\n请输入圆心:");
- if (resCenter.Status != PromptStatus.OK) return;
- var resRadius = ed.GetDouble("\n请输入半径:");
- if (resRadius.Status != PromptStatus.OK) return;
- var resNum = ed.GetInteger("\n请输入等分数:");
- if (resNum.Status != PromptStatus.OK) return;
- var resLen = ed.GetDouble("\n请输入尖角水平距离:");
- if (resLen.Status != PromptStatus.OK) return;
- var radius = resRadius.Value;
- var diameter = radius * 2;
- var num = resNum.Value;
- var len = resLen.Value;
- Polyline pline = new Polyline();
- var x0 = -radius;
- var y0 = radius;
- var i = 0;
- pline.AddVertexAt(i++, new Point2d(x0, y0), 0, 0, 0);
- var setp = diameter / num;
- var y = radius - setp;
- var sign = 1;
- while (y >= -radius)
- {
- var x = sign * Math.Sqrt(radius * radius - y * y);
- x0 = y >= 0 ? x : -x0;
- pline.AddVertexAt(i++, new Point2d(x0, y0), 0, 0, 0);
- pline.AddVertexAt(i++, new Point2d(x0 + sign * len, y0 - setp / 2), 0, 0, 0);
- y0 -= setp;
- pline.AddVertexAt(i++, new Point2d(x0, y0), 0, 0, 0);
- if (y < 0) x0 = x;
- sign = -sign;
- y -= setp;
- }
- x0 = -radius * sign;
- pline.AddVertexAt(i++, new Point2d(x0, y0), 0, 0, 0);
- using (var tr = db.TransactionManager.StartTransaction())
- {
- var center = resCenter.Value;
- var btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
- var cir = new Circle(center, Vector3d.ZAxis, radius);
- pline.TransformBy(Matrix3d.Displacement(center - Point3d.Origin));
- btr.AppendEntity(cir);
- tr.AddNewlyCreatedDBObject(cir, true);
- btr.AppendEntity(pline);
- tr.AddNewlyCreatedDBObject(pline, true);
- tr.Commit();
- }
- }
|
评分
-
查看全部评分
|