关于创建dwg

大家全新创建一个dwg,然后加入图块insert,线,圆,圆弧,文字,多段线的例子么,
目前我是需要从磁盘加载A.dwg,然后新建一个B.dwg,将A的某些元素拷贝B.dwg,然后保存,一直都没有成功过,寻求大伙的帮助。

@easycalc.163.com,
DWG 是一种非常严格的格式,即使是空文件也包含大量关于图层、样式等信息。更可靠的方法是从现有的空模板文件创建新的 DWG 文件,加载、修改后再保存。

请看看这个示例是否对您有用(已使用 Aspose.CAD for Java 26.4 测试,两个文件均为 DWG 2018 格式):

String inputFile = "circle2018.dwg";
String inputTemplate = "EmptyDrawing.dwg";
String outPath = "out.dwg";

CadImage cadInputImage = (CadImage)CadImage.load(inputFile);
CadImage cadTemplateImage = (CadImage)CadImage.load(inputTemplate);

List<CadEntityBase> newEntities = new ArrayList<>();

// grab first entity from another drawing
CadEntityBase entityFromSource = cadInputImage.getEntities().get(0);

newEntities.add(entityFromSource);

// new CadLwPolyline entity
List<Cad2DPoint> cadPoints = new ArrayList<>();
Cad2DPoint point = new Cad2DPoint(-5, -5);
cadPoints.add(point);
Cad2DPoint point2 = new Cad2DPoint(-5, 10);
cadPoints.add(point2);
Cad2DPoint point3 = new Cad2DPoint(20, 10);
cadPoints.add(point3);
Cad2DPoint point4 = new Cad2DPoint(20, -5);
cadPoints.add(point4);

CadLwPolyline cadPolyline = new CadLwPolyline();
cadPolyline.setCoordinates(cadPoints);
cadPolyline.setFlag(CadLwPolylineFlag.Closed);
cadPolyline.setConstantWidth(0.1);
cadPolyline.setPointCount(cadPoints.size());

newEntities.add(cadPolyline);

// new CadLine entity
CadLine cadLine = new CadLine();
cadLine.setFirstPoint(new Cad3DPoint(0, 0, 0));
cadLine.setSecondPoint(new Cad3DPoint(0, 100, 0));
cadLine.setLayerName("0");
cadLine.setColorId((short) 256);
cadLine.setLineWeight((short) 50);

newEntities.add(cadLine);

// new CadCircle entity
CadCircle cadCircle = new CadCircle();
cadCircle.setCenterPoint(new Cad3DPoint(0, 0, 0));
cadCircle.setRadius(100);
cadCircle.setLayerName("0");
cadCircle.setColorId((short) 256);
cadCircle.setLineWeight((short) 50);

newEntities.add(cadCircle);

// new CadText entity
CadText cadText = new CadText();
cadText.setStyleType("Standard");
cadText.setDefaultValue("Some custom text");
cadText.setColorId((short) 256);
cadText.setLayerName("0");
cadText.getFirstAlignment().setX(47.9);
cadText.getFirstAlignment().setY(5.56);
cadText.setTextHeight(0.8);
cadText.setScaleX(0);

newEntities.add(cadText);

CadBlockEntity modelSpace = cadTemplateImage.getBlockEntities().get_Item("*Model_Space");
for (CadEntityBase newEntity: newEntities)
{
	// required properties to set for all entities
	newEntity.setObjectHandle(NextAvailableHandle(cadTemplateImage));
	newEntity.setEntmode((byte)2);
	newEntity.setXDirMissingFlag(true);

	modelSpace.addEntity(newEntity);
}

// add entities to main Entities collection
List<CadEntityBase> entities = cadTemplateImage.getEntities();
entities.addAll(newEntities);
cadTemplateImage.setEntities(entities);

// update size to guarantee it is correct after addition of new entity
cadTemplateImage.updateSize();

cadTemplateImage.save(outPath);