from pyautocad import Autocad, APoint

def copy_layer_contents(source_file, target_file, layer_name):
    acad = Autocad(create_if_not_exists=True)

    # 打开源文件
    acad.Documents.Open(source_file)

    # 选择指定图层的所有对象
    source_doc = acad.ActiveDocument
    source_objects = []
    for obj in source_doc.ModelSpace:
        if obj.Layer == layer_name:
            source_objects.append(obj)

    # 复制指定图层的对象
    source_doc.SelectionSets.Add('source_objects')
    source_objects_ss = source_doc.SelectionSets.Item('source_objects')
    source_objects_ss.Clear()
    for obj in source_objects:
        source_objects_ss.SelectByObject(obj)

    source_doc.CopyObjects(source_objects_ss)

    # 打开目标文件
    acad.Documents.Open(target_file)

    # 将复制的对象粘贴到目标文件
    target_doc = acad.ActiveDocument
    target_doc.ModelSpace.Paste()

    # 保存目标文件并关闭源文件
    target_doc.Close(SaveChanges=True)
    source_doc.Close(SaveChanges=False)

source_file = r"C:\path\to\source.dwg"
target_file = r"C:\path\to\target.dwg"
layer_name = "LayerName"  # 要复制的图层名称

copy_layer_contents(source_file, target_file, layer_name)
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐