一、CAD图纸读取
对于图纸的读取,看我们是想读取哪些内容,比如简单的圆、圆弧、直线,还是整个图纸,在我使用的过程中,我就只读取了圆等简单图形,其他的需要大家去探索了,针对数据的读取,我有两种思路
1.使用CAD自带的读取功能
(1)打开我们需要读取的图纸
(2)插入----提取数据(CAD2017版本)
(3)一直点下一步就行
(4)勾选自己需要的内容
(5)检查一下内容(都是以图纸原点为参考坐标)
(6)选择生成Excel
(7)效果如下
2.使用C#中的netDxf程序包读取
(1)打开VS,点开引用---管理NuGet程序包
(2)搜索netDxf,安装这个包即可
(3)安装成功后
(4)引入命名空间
using netDxf;
using netDxf.Entities;
using netDxf.Header;
using netDxf.Collections;
(5)读取图纸,读取的图纸要把DWG格式保存为DXF格式(重要),代码如下
//dxf文件读取
DxfDocument dxf = DxfDocument.Load("路径");//读取dxf文件
IEnumerable<Circle> circles = dxf.Entities.Circles;
circleCount = circles.Count();
//圆形统计
for (int i = 0; i < circleCount; i++)
{
Circle circle = circles.ElementAt(i);
X[i] = circle.Center.X;
Y[i] = circle.Center.Y;
R[i] = circle.Radius;
}
二、CAD图纸插入
将CAD图纸插入不难,如果要做一些拉伸的话,就需要一些基本处理,因为能拉伸的图形有限制这个需要注意一下,下面的代码我融合了图纸的插入与拉伸
public void Dxf_Insert()
{
//声明领导
ISldWorks swApp =Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application")) as SldWorks;
//插入相关设置
ImportDxfDwgData importData = (ImportDxfDwgData)swApp.GetImportFileData("路径");
importData.set_LengthUnit("", (int)swLengthUnit_e.swMM);//设置插入单位
importData.SetPosition("", (int)swDwgImportEntitiesPositioning_e.swDwgEntitiesCentered, 0, 0);//插入到中间位置
importData.ImportMethod[""] (int)swImportDxfDwg_ImportMethod_e.swImportDxfDwg_ImportToPartSketch;
int longerrors = 0;
var NewDoc = swApp.LoadFile4(path, "", importData, ref longerrors);
//我进行了拉伸
//部分草图选择(因为我的图纸内容挺多的,我只选择了部分进行拉伸)
ModelDoc2 Part = swApp.ActiveDoc;//激活ModelDoc2,激活需要上一层激活
((SelectionMgr)(Part.SelectionManager)).EnableContourSelection = true;
Part.Extension.SelectByID2("Model", "SKETCHREGION", -0.21, -0.21, 0, true, 4, null, 0);
//textBox2.Text输入拉伸的数据
Part.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, Convert.ToDouble(textBox2.Text) / 1000, 0.02, false, false, false, false, 1.74532925199433E-02, 1.74532925199433E-02, false, false, false, false, true, true, true, 0, 0, false);
//将模型保存
Part.SaveAs3("路径", 0, 1);
}
效果如下