最近研究了一下java绘制cad, 推荐大家用一gdal 来实现。绘制出了点,线,面,块,和标签等数据,下面是我这边绘制的效果图!后面有时间整理一下代码贴出来供大家参考
gdal javaAPI地址:https://gdal.org/java/overview-summary.html
gdal官方地址:https://gdal.org/drivers/vector/dxf.htmlliunx环境gdal编译
项目引入依赖
> <dependency>
> <groupId>org.gdal</groupId>
> <artifactId>gdal</artifactId>
> <version>3.2.0</version>
> <scope>system</scope>
> <systemPath>${project.basedir}/lib/linux/gdal.jar</systemPath>
> </dependency>
简单示例代码
public static void main(String[] args) {
String out="d://1.dxf";
// 注册驱动
ogr.RegisterAll();
// 支持中文路径
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 属性表字段支持中文
gdal.SetConfigOption("SHAPE_ENCODING","CP936");
//获取dxf驱动
Driver driver = ogr.GetDriverByName("DXF");
if(null == driver){
throw new NullPointerException("获取DXF驱动失败!");
}
DataSource dataSource = driver.CreateDataSource(out);
if(null == dataSource){
throw new NullPointerException("DataSource创建失败!");
}
Layer layer = dataSource.CreateLayer("layer");
if(null == layer){
throw new NullPointerException("Layer创建失败!");
}
//图层功定义
FeatureDefn featureDefn = layer.GetLayerDefn();
Feature feature = new Feature(featureDefn);
feature.SetField("layer","test");
feature.SetStyleString("PEN(c:#3333FF,w:55px)");
Geometry geometry = new Geometry(2);
geometry.AddPoint(0.0,0.0);
geometry.AddPoint(1.0,0.0);
geometry.AddPoint(1.0,1.0);
geometry.AddPoint(0.0,1.0);
geometry.AddPoint(0.0,0.0);
geometry.CloseRings();
feature.SetGeometry(geometry);
layer.CreateFeature(feature);
dataSource.delete();
}