基于浩辰CAD2019

需求:

开发线转圆简单命令。
命令过程:
1) 请选择图中直线(要求支持一次选多个):
2) 弹出对话框,输入圆的图层名和半径
3) 点对话框中确定按钮,结束命令。
命令执行效果:
所选每条直线的起点和终点处,自动生成两个圆;同时,所有直线自动整体平移MOVE一个向量AcGeVector3d(1000,1000,0)。

代码如下

using System;
using GrxCAD.Runtime;
using GrxCAD.ApplicationServices;
using GrxCAD.EditorInput;
using GrxCAD.Geometry;
using GrxCAD.DatabaseServices;
using GrxCAD.Windows;
//using System.Windows.Forms;

namespace ArxFirstTest
{
public class Class1
{

[CommandMethod("LineToCircle")]
public void LinetoCircle()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor editor = doc.Editor;
Database db = doc.Database;
SelectionSet acSSet = null;
Form1 form = new Form1();
PromptSelectionOptions pso = new PromptSelectionOptions()
{
AllowDuplicates = false,
SelectEverythingInAperture = true,
SingleOnly = false,
RejectObjectsFromNonCurrentSpace = false,
//Keywords = { "0","1"},

};
PromptSelectionResult ssPsr = editor.GetSelection(pso);
if (ssPsr.Status != PromptStatus.OK)
{
return;
}
else
{
acSSet = ssPsr.Value;
}
using (Transaction transaction = db.TransactionManager.StartTransaction())
{
form.ShowDialog();
foreach (SelectedObject acSSobj in acSSet)
{
if (acSSobj!=null)
{
Entity entity = transaction.GetObject(acSSobj.ObjectId, OpenMode.ForWrite) as Entity;
if (entity is Line)
{

string s = form.comboBox1.Text;
double d = Double.Parse(form.textBox2.Text);
Line line = (Line)entity;
Circle cir1 = new Circle();
cir1.Center = line.StartPoint;
cir1.Radius = d;
cir1.Layer = s;
Circle cir2 = new Circle();
cir2.Center = line.EndPoint;
cir2.Radius = d;
cir2.Layer = s;
line.TransformBy(Matrix3d.Displacement(new Vector3d(1000, 1000, 0)));
ObjectId idModelSpace = SymbolUtilityServices.GetBlockModelSpaceId(db);
BlockTableRecord btr = transaction.GetObject(idModelSpace, OpenMode.ForWrite) as BlockTableRecord;
btr.AppendEntity(line);
btr.AppendEntity(cir1);
btr.AppendEntity(cir2);
transaction.AddNewlyCreatedDBObject(line, true);
transaction.AddNewlyCreatedDBObject(cir1, true);
transaction.AddNewlyCreatedDBObject(cir2, true);

}
else
{
Application.ShowAlertDialog("选择的实体中有为非直线,请重新选择!");
return;
}

}

}

transaction.Commit();
}

}
}
}

using System;
using GrxCAD.Runtime;
using GrxCAD.ApplicationServices;
using GrxCAD.EditorInput;
using GrxCAD.Geometry;
using GrxCAD.DatabaseServices;
using System.Collections;
//using System.Windows.Forms;

namespace ArxFirstTest
{
public partial class Form1 : System.Windows.Forms.Form
{

public Form1()
{

InitializeComponent();
}

public void textBox1_TextChanged(object sender, EventArgs e)
{

}

public void Form1_Load(object sender, EventArgs e)
{
using (Database db = HostApplicationServices.WorkingDatabase)
{
using (Transaction trans = db.TransactionManager.StartTransaction())
{
using (LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead))
{
foreach (ObjectId id in lt)
{
LayerTableRecord ltr = (LayerTableRecord)trans.GetObject(id, OpenMode.ForRead);
comboBox1.Items.Add(ltr.Name);
}
}
trans.Commit();
}
}
}

private void textBox2_TextChanged(object sender, EventArgs e)
{

}

public void button1_Click(object sender, EventArgs e)
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor editor = doc.Editor;
if (Double.TryParse(textBox2.Text, out double b))
{
//editor.Command("Enter");
this.Close();
}
else
{
Application.ShowAlertDialog("数据输入有误,请重新输入");
}
}

public void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

}
}
}

.NET CAD二次开发学习第一天的更多相关文章

  1. 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

    1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...

  2. 基于.NET的CAD二次开发学习笔记一:CAD开发入门

    1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...

  3. .NET CAD二次开发学习 对称画线功能

    [CommandMethod("CBline")] //对称画线 public void CBline() { Document doc = Application.Documen ...

  4. .NET CAD二次开发学习 直线画矩形并转换成组

    主要代码: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System ...

  5. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...

  6. CAD二次开发起步

    1 环境搭建(VS 2017 + CAD 2019) CAD版本一般要比VS版本晚两年以上,比如我现在使用VS2017,则CAD要用2019版,至于CAD2018能不能用没试验过,有兴趣的小伙伴可以试 ...

  7. CAD二次开发

    用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...

  8. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  9. Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试

    CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...

随机推荐

  1. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0

    起因是我运行wordcount测试一直卡主,不能执行,一直处于 Accept 状态,等待被执行,刚开始是各种配置yarn参数,以及host配置,后来发现还是不行 hadoop 集群安装完成后,在500 ...

  2. 谈谈 ANR 之 Service 超时

    1. 核心源码 关键类 路径(/frameworks/base/) ActiveServices.java services/core/java/com/android/server/am/Activ ...

  3. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  4. Java关于static的作用

    概述 只要是有学过Java的都一定知道static,也一定能多多少少说出一些作用和注意事项.如果已经对static了如指掌的请点击关闭按钮,看下去也只是浪费您宝贵时间而已.这篇随笔只是个人的习惯总结. ...

  5. Arduino入门笔记(6):温度传感器及感温杯实验

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 :https://item.taob ...

  6. 描述性统计指标 - 众数 Mode

    定义- 数值型数据 - 出现频数最多的变量值- 品质型数据.单项式分组数据 - 频数最多的组为众数组,该组的变量值(类型)就是众数- 组距式分组数据 - 频数最多的组为众数组,通过公式求得众数 - 公 ...

  7. C#判断字符串是不是英文或数字

    利用正则.   u4e00-u9fa5; //中文  ^[A-Za-z]+$  //英文字母 //截取冲击式样形状 public string SubStringForXingZhuang(strin ...

  8. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  9. Python:轻量级 ORM 框架 peewee 用法详解(二)——增删改查

    说明:peewee 中有很多方法是延时执行的,需要调用 execute() 方法使其执行.下文中不再特意说明这个问题,大家看代码. 本文中代码样例所使用的 Person 模型如下: class Per ...

  10. POLARDB · 最佳实践 · POLARDB不得不知道的秘密(二)

    前言 POLARDB For MySQL(下文简称POLARDB)目前是阿里云数据库团队主推的关系型数据库.线上已经有很多企业用户在使用并且稳定运行了很久.当然,由于POLARDB是为云上环境专门打造 ...