首页 > 其他分享 >CAD 复制对象

CAD 复制对象

时间:2023-06-04 14:55:45浏览次数:30  
标签:AutoCAD 对象 创建 复制 acTrans acCirc using CAD

为了复制对象,要在对象上运用已提供的Clone函数。这个函数会创建一个与原始对象的重复的新对象。一旦创建了副本对象,就可以将其添加或附加到数据库之前对其进行修改。如果不变换对象或更改它们的位置 ,则新对象将位于与原对象相同的位置。

如果你需要复制大量的对象,可以添加每个对象的ids到ObjectIdCollction对象中,然后迭代每个对象。在迭代每个对象时,可以对每个对象使用Clone函数,然后将新对象添加或追加到数据库中。

复制单一对象

以下示例创建一个新圆,然后创建该圆的直接副本来创建第二个圆。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

namespace SingleCopy
{
    public class DYCopy
    {
        [CommandMethod("SingleCopy")]
        public static void SCopy()
        { 
            //获取当前文件和数据库
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            //开始事务管理
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                //以读的方式打开块表
                BlockTable acBlkTbl;
                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                //打开块表记录模型空间,用于写
                BlockTableRecord acBlkTblRec;
                acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //创建圆心为(2,3),半径为4.25的圆
                Circle acCirc = new Circle();
                acCirc.SetDatabaseDefaults();
                acCirc.Center = new Point3d(2, 3, 0);
                acCirc.Radius = 4.25;
                //添加新对象到块表记录和事务
                acBlkTblRec.AppendEntity(acCirc);
                acTrans.AddNewlyCreatedDBObject(acCirc, true);
                //创建圆的副本,并改变它的半径
                Circle acCircClone = acCirc.Clone() as Circle;
                acCircClone.Radius = 1;
                //添加圆的副本
                acBlkTblRec.AppendEntity(acCircClone);
                acTrans.AddNewlyCreatedDBObject(acCircClone, true);
                //将新对象保存到数据库中
                acTrans.Commit();
            }
        }
    }
}

标签:AutoCAD,对象,创建,复制,acTrans,acCirc,using,CAD
From: https://www.cnblogs.com/chenlight/p/17455672.html

相关文章

  • adm-jclass: 一个面向对象编程的js库
    [url]https://code.google.com/p/adm-jclass/[/url]:Ajavascriptlibrarythatallowshighlyobject-orientedapplicationprogramminginyourbrowser.介绍:[url]https://code.google.com/p/adm-jclass/wiki/jClassDocumentation[/url]jClassisa......
  • 移动对象
    可以沿着指定的向量移动所有绘制的图纸对象和属性参照对象。为了移动对象,要使用变换矩阵的Displacement函数。此函数需要Vector3d对象做为输入。如果你不知道你需要的向量是多少,你可以创建一个Point3d对象,然后使用GetVectorTo函数来返回位于两个点之间的向量。这个移动向量会显示......
  • MySQL主从复制
    MySQL主从复制一、复制概述将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行,从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。二、复制原理My......
  • 没有服务器的时候,需要自己构造对象的id时候用uuid
    uuid:制定了一套规则专门用于生成全球唯一的字符串编码 uuid有固定的包:但是uuid太大了,生成的字符串也太长了。可以使用uuid的变种:nanoid [nanoid把uuid在一定程度上做了精简]  生成单机版的什么有时候会用的上,实际上id在有服务器的时候,是后端给的。 1.不用停......
  • File类:对象的创建
         ......
  • 反射的作用之动态对实例对象进行操作
    前提:我认为,反射概念在JavaSE内容中算是一个比较绕的知识点,反射本身好理解,但实际运用起来总会让人感觉好像又不是很对;对于反射的学习,我是先学具体使用再了解的作用,对于反射的作用之一,在这里做个笔记。任务需求:对被Integer泛型约束的List集合,添加其他类型的元素一、必......
  • MySQL数据库复制技术2
    一:复制的概念。    可能很多人认为,复制很简单就是把之前的数据直接转移到新的数据库当中不就是复制吗。但是在MySQL数据库中:复制指的就是复制一个服务器上(称为主节点服务器或者简称主节点)的所有改变到另一个服务器(称为从节点服务器或简称从节点)。复制通常用来创建主节点的一......
  • Word复制过去源格式也不对问题
    我在做毕业论文的时候,各种材料文档要集成在一个文档。结果复制过去,不是表格断了就是字间距宽了,OpenType选项变灰等字体问题,等等。这其实是word文档的兼容模式,老文档字间距紧凑,而新文档间距拉长。结果可能造成表格断开到第二页。如果要转换成最新的版本,方法是:菜单栏的“文件”(“......
  • Go语言如何判断两个对象是否相等
    1.引言在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如:单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。数据结构操作:在使用map等数据结构时,可能需要判断两个对象是否相等以进行元素查找......
  • 集合,多线程,面向对象,方法覆盖
    集合:“父亲”collection"儿子":list:有序,有下标,查set:无序,无下标,修改(底层:内存存储方式)列表,不方便map:键值对,key(标号)-value(真实的值,储放的是分散的物品,小型数据库)多线程:进程(可以索取计算机运行资源)=多线程(不可以索取,只能进程的资源)oop面向对象=封装,继承,多态面向过程:按照......