.NET CAD二次开发学习 对称画线功能
[CommandMethod("CBline")] //对称画线
public void CBline()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor edit = doc.Editor;
Database db = doc.Database;
using(Transaction trans=doc.TransactionManager.StartTransaction())
{
PromptEntityOptions peo = new PromptEntityOptions("请指定基准线\n");
PromptEntityResult per = edit.GetEntity(peo);
Entity ent = trans.GetObject(per.ObjectId, OpenMode.ForWrite) as Entity;
//if (ent.GetType()!=typeof(Line))
if(!(ent is Line))
{
edit.WriteMessage("指定的实体不是基准线!");
return;
}
Line line = (Line)ent;
line.ColorIndex = 1;
PromptPointOptions ppo = new PromptPointOptions("请指定第一点\n");
PromptPointResult ppr = edit.GetPoint(ppo);
Point3d pt1=ppr.Value;
PromptPointOptions ppo1 = new PromptPointOptions("请指定第二点\n");
PromptPointResult ppr1 = edit.GetPoint(ppo);
Point3d pt2=ppr1.Value;
Point3d pt3 = line.GetClosestPointTo(pt1,true);
Vector3d vt1 = pt3 - pt1;
Point3d pt4 = new Point3d(vt1.X+pt3.X,vt1.Y+pt3.Y,0);
Point3d pt5 = line.GetClosestPointTo(pt2, true);
Vector3d vt2 = pt5 - pt2;
Point3d pt6 = new Point3d(vt2.X + pt5.X, vt2.Y + pt5.Y, 0);
Line line1 = new Line(pt1, pt2);
Line line2 = new Line(pt4, pt6);
ObjectId idModelSpace = SymbolUtilityServices.GetBlockModelSpaceId(db);
BlockTableRecord btr = trans.GetObject(idModelSpace, OpenMode.ForWrite) as BlockTableRecord;
btr.AppendEntity(line1);
btr.AppendEntity(line2);
trans.AddNewlyCreatedDBObject(line1, true);
trans.AddNewlyCreatedDBObject(line2, true);
trans.Commit();
}
}
.NET CAD二次开发学习 对称画线功能的更多相关文章
- 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象
1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...
- 基于.NET的CAD二次开发学习笔记一:CAD开发入门
1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...
- .NET CAD二次开发学习第一天
基于浩辰CAD2019 需求: 开发线转圆简单命令.命令过程:1) 请选择图中直线(要求支持一次选多个):2) 弹出对话框,输入圆的图层名和半径3) 点对话框中确定按钮,结束命令.命令执行效果:所选每 ...
- .NET CAD二次开发学习 直线画矩形并转换成组
主要代码: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System ...
- MFC画线功能总结
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...
- CAD二次开发
用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...
- C#进行CAD二次开发环境配置
最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...
- CAD二次开发起步
1 环境搭建(VS 2017 + CAD 2019) CAD版本一般要比VS版本晚两年以上,比如我现在使用VS2017,则CAD要用2019版,至于CAD2018能不能用没试验过,有兴趣的小伙伴可以试 ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
随机推荐
- Linux 下 Redis 安装与配置
1.Redis 的安装 在 Ubuntu 系统安装 redis 可以使用以下命令: $ sudo apt-get update $ sudo apt-get install redis-server ...
- 洛谷 P2725 解题报告
P2725 邮票 Stamps 题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K -- 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描 ...
- IntelliJ IDEA添加jar包
以JDBC-MySQL驱动包为例 1.在IntelliJ IDEA中打开要添加jar包的Project 2.File – Project Structure如下图 3.选择Moudules – 再选择 ...
- 【转】MySQL int转换成varchar引发的慢查询
转自http://www.cnblogs.com/billyxp/archive/2013/05/31/3110016.html 最近一周接连处理了2个由于int向varchar转换无法使用索引,从而 ...
- Java公开课-02.抽象类和接口
在讲述抽象类和接口之前,扯点别的:封装,继承,多态,我只做个简单的涉略 一,封装 1.体现: 将变量和方法放到一个类中 私有字段封装成共有属性 2.this: 如果发现成员变量的名称和方法参数的名称相 ...
- Day3 《机器学习》第三章学习笔记
这一章也是本书基本理论的一章,我对这章后面有些公式看的比较模糊,这一会章涉及线性代数和概率论基础知识,讲了几种经典的线性模型,回归,分类(二分类和多分类)任务. 3.1 基本形式 给定由d个属性描述的 ...
- Java Persistence/ManyToMany
A ManyToMany relationship in Java is where the source object has an attribute that stores a collecti ...
- eclipse如何新建项目发布到git
1.首先去查询本地git仓库地址 2.找到项目位置 删除git版本 3.更换git提交目标地址 目标地址是新建的git仓库地址 4.提交
- [ Java面试题 ]WEB篇
1.AJAX有哪些有点和缺点? 优点: 1.最大的一点是页面无刷新,用户的体验非常好. 2.使用异步方式与服务器通信,具有更加迅速的响应能力. 3.可以把以前一些服务器负担的工作转嫁到客户端,利用客户 ...
- GO语言.树莓派.环境安装和测试
Go是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.为了方便搜索和识别,有时会将其称为Golang 记录一下如何在树莓派上安装语言环境 第一步: 下载安装包 http ...