大家全新创建一个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);