CAD开发 选择实体并拖动

news/2025/11/15 4:51:42/文章来源:https://www.cnblogs.com/miki969696/p/19224057

CAD开发 选择实体并拖动

using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;namespace DragExample
{public class DragCommands{[CommandMethod("DragSelection")]public void DragSelection(){Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;Editor ed = doc.Editor;// 提示用户选择实体PromptSelectionOptions pso = new PromptSelectionOptions();pso.MessageForAdding = "选择要拖拽的实体: ";PromptSelectionResult psr = ed.GetSelection(pso);if (psr.Status != PromptStatus.OK)return;SelectionSet ss = psr.Value;if (ss.Count == 0){ed.WriteMessage("\n未选择任何实体。");return;}// 获取基点PromptPointOptions ppo = new PromptPointOptions("\n指定基点: ");PromptPointResult pprBase = ed.GetPoint(ppo);if (pprBase.Status != PromptStatus.OK)return;Point3d basePoint = pprBase.Value;// 定义拖拽回调,用于计算变换矩阵DragCallback dragCallback = (Point3d pt, ref Matrix3d mat) =>{if (basePoint.Equals(pt))return SamplerStatus.NoChange;mat = Matrix3d.Displacement(basePoint.GetVectorTo(pt));return SamplerStatus.OK;};// 开始拖拽操作PromptPointResult ppr = ed.Drag(ss, "\n指定第二点: ", dragCallback);if (ppr.Status == PromptStatus.OK){// 获取最终点并应用变换Point3d secondPoint = ppr.Value;Matrix3d finalMat = Matrix3d.Displacement(basePoint.GetVectorTo(secondPoint));using (Transaction tr = db.TransactionManager.StartTransaction()){ObjectId[] ids = ss.GetObjectIds();foreach (ObjectId id in ids){Entity ent = (Entity)tr.GetObject(id, OpenMode.ForWrite);ent.TransformBy(finalMat);}tr.Commit();}ed.WriteMessage($"\n成功拖拽了 {ss.Count} 个实体。");}else{ed.WriteMessage("\n拖拽操作已取消。");}}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/965821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAD开发 各个文档的说明

CAD开发 各个文档的说明AutoCAD ARX二次开发的帮助文件(.chm格式),专门用于ARX开发相关的查询参考,不是可编辑的CAD图纸。 各文件核心用途arxref.chm:ARX开发的参考文档,包含基础语法、函数索引等。 arxmgd.ch…

revit api 事务与事务组

revit api 事务与事务组在 Revit API 开发中,理解事务(Transaction)、事务组(TransactionGroup)及文档再生(Regenerate)的机制是确保操作正确性和效率的核心。以下从三者的作用、使用场景、代码示例及核心区别展…

RHEL8登录提示This system is not registered to Red Hat Insights. See https://cloud.redhat.com/怎样去除

登录后提示Activate the web console with: systemctl enable --now cockpit.socket This system is not registered to Red Hat Insights. See https://cloud.redhat.com/To register this system, run: insights-cli…

CAD二次开发--helloworld

CAD二次开发--helloworldusing Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.R…

20232304 2025-2026-1 《网络与系统攻防技术》实验八实验报告

20232304 2025-2026-1 《网络与系统攻防技术》实验八实验报告 1.实验内容 1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaSc…

CAD开发的几种方式

CAD开发的几种方式1. AutoLISP 与 DCLAutoLISP:AutoCAD 内置的 LISP 方言,语法简单、入门门槛低,适合快速编写小型工具(如自定义命令、批量处理图元)。优势:直接访问 AutoCAD 命令和图元,无需编译,脚本可即时运…

KMP(Knuth-Morris-Pratt )算法-模式串lps(Longest Prefix Suffix)最长相同前后缀长度数组算法证明

KMP(Knuth-Morris-Pratt )算法-模式串lps(Longest Prefix Suffix)最长相同前后缀长度数组算法证明被KMP算法折磨了几天,在chatgpt的帮助下终于了解了lps数组,或者叫next数组计算过程中非常关键点的原理,这里着重…

Universal Flip Key Remote KD NB59-3 – 5-Pack for Easy Car Key Replacement

Today were featuring an excellent product: **KEYDIY KD NB59-3 Universal Flip Remote Key 3 Buttons 5pcs/lot**. **KEYDIY KD NB59-3 Universal Flip Remote Key 3 Buttons 5pcs/lot** This tool is designed to …

Autel MK900TS: Advanced Wireless TPMS Scanner with Android 11 40+ Services

Today were featuring an excellent product: **Autel MaxiCOM MK900TS MK900-TS Wireless TPMS Diagnostic Scanner with Android 11 Support DoIP/CAN FD Protocols and 40+ Services Upgraded of MK808TS**. **Aute…

RimWorld 断点调试——第一回

本文记录了一种能逐步调试 RimWorld Mod 代码的方法。众所周知,写 RimWorld Mod 时,没法儿直接对代码进行断点调试,那如何才能实现这个功能就成为了一个问题。现在介绍我第一个成功使用的办法。该方法依赖 Windows …

gateway网关实现路由基于nacos注册中心

首先你需要启动nacos服务,才能开始下面的效果 这里10010为网关端口 nacos你需要当服务都启动后,你应该看到如下服务 好了,下面开始上代码了 首先是网关部分<project xmlns="http://maven.apache.org/POM/…

Upgrade Your Diagnostics with OTOFIX VCI V1 Bluetooth Connector for Seamless Scanning

Today were featuring an excellent product: **OTOFIX VCI V1 Bluetooth Connector Used with OTOFIX Diagnostic Tablets D1, D1 Lite, D1 Pro, D1 MAX, D1 Plus, IM1, BT1**. **OTOFIX VCI V1 is a VCI (Vehicle Co…

Unlock BOSCH MPC5xx ECU Data with CG FC200 Programmer – Bench Read/Write Tool

Today were featuring an excellent product: **CG FC200 ECU Programmer Full Version with MPC5XX Adapter for BOSCH MPC5xx Read/Write Data on Bench**. **CG FC200 ECU Programmer Full VersionWith MPC5XX Adap…

2025 Autel IM608 PRO II Full Kit – Advanced Diagnostics with Free G-Box3

Today were featuring an excellent product: **2025 Autel MaxiIM IM608 PRO II (Autel IM608 II) Full Kit with JVCI+ Plus IMKPA Accessories Get Free G-Box3 APB112**. **Autel MaxiIM IM608 PRO II (IM608S II)…

Python 在 Windows 上提示文本消息的实现(模拟安卓手机上的 Toast 效果)

用 tkinter 实现,在桌面上即时显示文字消息(置顶显示、可拖动),经过 duration 毫秒后消失。 效果演示:代码实现:"""使用方法: toast(message_text, bg="#075077", duration=3000)&quo…

小红书-强共鸣、高热度的话题----每一个都精准命中测试员的日常,非常适合在小红书打造“测试职场达人”人设。

1、 类似“被老板问:这个问题为什么没有测试出来?”的热门话题还有哪些?请结合软测职场高频场景(面试压力提问、工作追责、能力考察),整理排名靠前的 20 个热门话题,贴合真实职场痛点,适配小红书 “强共鸣 + 干…

每日一导4

Problem 已知函数 $ g(x) =\sin x $ , 点列 $ A_n( 2^{-n} , g(2^{-n} ) ) \hspace {0.2cm} (n\in N^*) $ . 设直线 $ A_nA_{n+1} $ 斜率为 $ k_n$ ,求证: $ \sum_{i=1}^{n}k_i >n-\frac{1}{9} $ .分析 原题前面的…

基于FPGA的BPSK+costas环实现,包含testbench,高斯信道,误码统计,可设置SNR

1.算法仿真效果 加入频偏:设置SNR=30db(无误码,上图中误码个数8为costas锁定过程中带来的) 设置SNR=15db(无误码,上图中误码个数8为costas锁定过程中带来的) 设置SNR=5db (误码2400个测试符号,错误30个,其中…

一个基于 .NET 8 + DDD 搭建的模块化微服务框架

前言 今天大姚给大家分享一个基于 .NET 8 + DDD 搭建的模块化微服务框架:NetCoreKevin。 项目介绍 NetCoreKevin 是一个基于 .NET 8 + DDD 搭建的模块化微服务框架,其模块化设计使得每个功能都可以独立引用,非常适…

【硬件测试】基于FPGA的BPSK+costas环系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

1.算法硬件测试效果 vio设置SNR=30 vio设置SNR=8硬件测试操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 Costas环是一种用于载波同步的常见方法,特别是在调制解调中,它被广泛用于解调相位调制信号,如…