首页 > 其他分享 >移动对象

移动对象

时间:2023-06-04 13:44:06浏览次数:28  
标签:对象 acCirc acTrans using 移动 Point3d

可以沿着指定的向量移动所有绘制的图纸对象和属性参照对象。

为了移动对象,要使用变换矩阵的Displacement函数。此函数需要Vector3d对象做为输入。如果你不知道你需要的向量是多少,你可以创建一个Point3d对象,然后使用GetVectorTo函数来返回位于两个点之间的向量。这个移动向量会显示选定的图元被移动了多长距离,且移动的方向在哪里。

本示例创建一个圆,然后将该圆沿着X轴移动两个单位。

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 MoveObjects
{
    public class Class1
    {
        [CommandMethod("MoveObject")]
        public static void MoveObject()
        { 
            //获取当前的文件和数据库
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            //开始事务处理
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                //以读的方式打开块表
                BlockTable acBlkTb1;
                acBlkTb1 = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                //以写的方式打开块表记录模型空间
                BlockTableRecord acBlkTblRec;
                acBlkTblRec = acTrans.GetObject(acBlkTb1[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //在2,2坐标点创建0.5直径的圆
                Circle acCirc = new Circle();
                acCirc.SetDatabaseDefaults();
                acCirc.Center = new Point3d(2, 2, 0);
                acCirc.Radius = 0.5;
                //创建矩阵,用向量从(0,0,0)到(2,0,0);
                Point3d acPt3d = new Point3d(0, 0, 0);
                Vector3d acVec3d = acPt3d.GetVectorTo(new Point3d(2, 2, 0));
                acCirc.TransformBy(Matrix3d.Displacement(acVec3d));
                //将新对象添加到块表记录和事务
                acBlkTblRec.AppendEntity(acCirc);
                acTrans.AddNewlyCreatedDBObject(acCirc, true);
                //将新对象保存到数据库中
                acTrans.Commit();
            }
        }
    }
}

 

标签:对象,acCirc,acTrans,using,移动,Point3d
From: https://www.cnblogs.com/chenlight/p/17455587.html

相关文章

  • 移动开发和互联网应用相关资料
    http://yun.baidu.com/xcloud/csdn/pan#dir/path=%2Fapps%2FCSDN%2FCSDN%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91%E8%B5%84%E6%BA%90%E7%B2%BE%E9%80%89%E7%A4%BC%E5%8C%85......
  • 没有服务器的时候,需要自己构造对象的id时候用uuid
    uuid:制定了一套规则专门用于生成全球唯一的字符串编码 uuid有固定的包:但是uuid太大了,生成的字符串也太长了。可以使用uuid的变种:nanoid [nanoid把uuid在一定程度上做了精简]  生成单机版的什么有时候会用的上,实际上id在有服务器的时候,是后端给的。 1.不用停......
  • m移动通信系统中越区切换算法的matlab仿真,对比MASN,ASUR,OP
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要硬切换,就是强制切换,其最大的特点是:“先断后连”。在硬切换过程中,用户移动设备仅仅保持与一个基站链接,一旦切换操作被激活,其马上会切断原有的连接,然后再与新的基站建立连接。从一个基站切换到另个基站的过程中,通信......
  • m移动通信系统中越区切换算法的matlab仿真,对比MASN,ASUR,OP
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要       硬切换,就是强制切换,其最大的特点是:“先断后连”。在硬切换过程中,用户移动设备仅仅保持与一个基站链接,一旦切换操作被激活,其马上会切断原有的连接,然后再与新的基站建立连接。从一个基......
  • File类:对象的创建
         ......
  • 反射的作用之动态对实例对象进行操作
    前提:我认为,反射概念在JavaSE内容中算是一个比较绕的知识点,反射本身好理解,但实际运用起来总会让人感觉好像又不是很对;对于反射的学习,我是先学具体使用再了解的作用,对于反射的作用之一,在这里做个笔记。任务需求:对被Integer泛型约束的List集合,添加其他类型的元素一、必......
  • IPC横向移动
    IPC横向移动目录IPC横向移动一、IPC介绍二、IPC利用条件三、IPC连接失败原因四、IPC连接常见错误五、IPC配合计划任务横向移动六、IPC配合系统服务横向移动一、IPC介绍IPC(InternetProcessConnection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。IPC可以......
  • Go语言如何判断两个对象是否相等
    1.引言在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如:单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。数据结构操作:在使用map等数据结构时,可能需要判断两个对象是否相等以进行元素查找......
  • echarts折线修改鼠标移动上去的内容
    tooltip:{trigger:'axis',backgroundColor:'#FFFFFF',//textStyle:{//color:'#E5353B',//fontSize:'16px'//},for......
  • 集合,多线程,面向对象,方法覆盖
    集合:“父亲”collection"儿子":list:有序,有下标,查set:无序,无下标,修改(底层:内存存储方式)列表,不方便map:键值对,key(标号)-value(真实的值,储放的是分散的物品,小型数据库)多线程:进程(可以索取计算机运行资源)=多线程(不可以索取,只能进程的资源)oop面向对象=封装,继承,多态面向过程:按照......