cad复制粘贴后需要点或选项关键字怎么设置?

教程(一)(C#版):

(1)启用对象浏览器方法:

双击托管的类,会自动调用对象浏览器

应设2项,否则调试程序无法运行:

   (1)prPointRes = AutoCAD 向导生成的项目中调试项目中只加入了外部程序,没有加入工作目录,需手工加入。

(3)加入第2个cad命令的方法:将上一个命令原版拷贝过来,直接修改就可以了。

 教程(三)(C#版):

原文中部分变量与类型中没有空格。

World:访问来创建一个新的类库工程。通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。

托管封装类。这些托管封装类包含在两个托管模块中。要加入对这两个托管模块的引用,请用鼠标右键单击引用然后选择添加引用。在弹出的添加引用对话框中选择浏览。在选择组件对话框中,选择AutoCAD 2006\),在这个目录下找到查看>其它窗口>对象浏览器菜单项)来浏览加入的两个托管模块所提供的类。请展开“AutoCAD .NET Managed Wrapper”对象(在对象浏览器中显示为acmgd),在整个教程中我们将使用这个对象中的类。在本章中,我们将使用 Wrapper” 对象(在对象浏览器中显示为acdbmgd),这个对象中的类将被用来访问和编辑AutoCAD图形中的实体(这部分内容将在以后的章节中介绍)。

封装类后,我们就可以导入它们。在Class1类的声明语句(位于启动一个AutoCAD进程。在解决方案管理器中右键单击“Lab1”,然后选择属性。在Lab1的属性页对话框中,选择 配置属性>调试。在启动项中,选择调试模式程序,在启动程序的右边单击省略号按钮然后选择AutoCAD 2006安装目录下的组件的对话框。选择上面生成的,在调试菜单有好几项可以用来跟踪程序的运行。

如果有时间的话,请浏览一下CommandMethod属性。你会发现它有七种不同的形式。在上面的例子中,我们使用了最简单的形式,它只有一个输入参数(命令的名字)。你可以使用其它的形式来控制命令的工作方式,例如你可以确定命令组的名字、全局和局部名字、命令标识(命令如何来运行)等。

Symbol”将会使用你在安装ObjectARX向导时输入的值。单击”finish”按钮来创建工程。

2)    下面来看一下向导生成的工程。在解决方案浏览器中,你会看到acdbmgd 和 acmgd已经被引用了。在教程(三)(C#版)

打开Lab3文件夹下的Lab3工程文件,或或接着Lab2的代码。

在这一章中,我们将创建一个‘Employee 对象(包括一个圆,一个椭圆和一个多行文本对象),这个对象属于一个自定义的EmployeeBlock’块(这个块驻留在‘EmployeeLayer’层,当在模型空间插入这个块的时候,‘EmployeeLayer’层就会拥有这个块的一个块索引)。本章的每一个步骤中的代码都可以运行,这样做的目的可以使你更清楚地知道每一部分代码完成的功能。第一步将简要说明一下如何在模型空间创建一个圆。

这一章的重点是在AutoCAD中访问数据库的基础。主要内容包括事务处理(Transaction)、对象IdObjectId)、符号表(symboltables,如块表BlockTable和层表LayerTable)以及对象引用。使用的其它一些对象如颜色Color、三维点Point3d和三维向量Vector3d,都和各自的步骤有关,但重点应该放在数据库基础上。

4)    为了使代码紧凑,我们可以把许多变量的声明和初始化放在同一个语句中。现在,你的代码看起来应该是这样的:

所以基于上面的分析,Catch块其实并不是必须的,因为它只用来通知用户程序出现了一个错误。它将在下面的代码中被去掉。

(建议:创建一个名为‘center’而值为10,10,0Point3d变量来表示中心点)

API中的Try-Catch-Finally块结构,应该是异常观察者。实际上我们是在try块中实例化对象的,但没有显式地销毁它们。当产生异常的时候可能会产生问题,特别是当观察者注意到我们实际上用的是封装的非托管对象!记住,当资源不再使用的时候,垃圾收集机制就会回收内存。垃圾收集机制会不时的调用封装类的Dispose()方法,删除非托管对象。

这里还要注意的是Dispose()作用于封装的非托管类对象的方式取决于对象是否是数据库驻留对象。由非数据库驻留对象调用的Dispose()会删除非托管对象,而由数据库驻留对象调用的Dispose()只是关闭它们。

6) 接下来让我们来创建一个新的函数,它用来新建一个颜色为黄色,名字为“EmployeeLayer” AutoCAD层。

这个函数应该检查是否这个层已经存在,但不管这个层是否存在,函数都应该返回“EmployeeLayer”ObjectId。下面是这个函数的代码:

在这一章中,我们将创建一个新的字典对象,它用来表示我们雇员就职的 ‘Acme 公司‘(呵呵,当然是虚构的一家公司)的部门。这个“部门”字典对象将包含一个表示部门经理的记录。我们还会加入代码到雇员创建过程,这个过程会加入一个索引到雇员工作的部门。

我们要说明的是如何在DWG文件中创建自定义数据,包括“每个图形”的自定义数据和“每个实体”的自定义数据。“每个图形”的自定义数据是指只在整个图形中加入一次的数据,它表示对象可以引用的单一类型或特性。“每个实体”的自定义数据是指是为特定的对象或数据库中的实体加入的数据。

在下面的示例中,我们将加入“每个图形”的自定义数据到命名对象字典(简称NOD)。NOD存在于每一个DWG文件中。“每个实体”的自定义数据加入到一个名为“扩展字典”的字典(可选)中,它表示每一个雇员。每一个由DBObject派生的对象都拥有存储自定义数据的扩展字典。而在我们的示例中将包含这种自定义数据如名字、薪水和部门。

因此这一章的重点是字典对象和扩展记录(XRecord),它们是我们用来表示自定义数据的容器。

首先让我们来创建表示公司的条目。在本章的前几个步骤中,我们将创建如下所示的部门层次结构:

请打开Lab4文件夹下的Lab4工程,或接着Lab3的代码。

我们首先要做的是定义一个新的函数,它用来在命名对象字典(NOD)中创建公司字典对象。为这个函数取名为CreateDivision(),,并使用命令属性来定义CREATEDIVISION命令。

下面是这个函数的代码,它的形式非常简单,只是用来在NOD中创建一个ACME_DIVISION(用来表示公司)

Each(C#是foreach)来遍历它。请仔细研究一下下面的代码片断:

第 5 章 用户互操作:提示和选择

提示通常包含一个描述性信息,伴随一个停止以让用户理解所给的信息并输入数据。数据可以通过多种方式被输入,如通过命令行、对话框或AutoCAD编辑窗口。给出的提示要遵循一定的格式,格式要与一般的AutoCAD提示相一致,这一点是非常重要的。例如,关键字要用“/”号分隔并放在方括号“[]”中,缺省值要放在“<>”内。对于一个AutoCAD用户来说,坚持统一的格式将会减少信息理解错误的产生。

当用户在AutoCAD命令行中选择一个实体时,实体是使用选择机制被选择的。这种机制包括一个提示,用来让用户知道选择什么并怎样选择(如,窗口或单一实体),然后是一个停顿。

试一下诸如PINE这种命令来看一下提示的显示,PEDIT来看一下使用单一实体或多线来进行选择。

在本章中,我们将提示输入雇员名字、职位、薪水和部门来创建一个雇员块索引对象。如果输入的部门不存在,我们将提示输入部门经理的名字来创建一个新的部门。在我们继续之前,让我们试着重用以前的代码。

为了进行选择,我们将提示用户在一个窗口中进行选择或选择一个实体,而我们只显示选择集中的雇员对象。

在前面的章节中,我们创建了一个名叫“Earnest Shackleton”的雇员,名字被存储为“EmployeeBlock”块定义(块表记录)中的MText。如果我们多次插入这个块,那么我们看到的都是同一个雇员的名字。我们怎样才能自定义这个块以使每次插入这个块的时候显示不同雇员的名字?这就要使用块属性的功能了。属性是存储在每一个块索引实例中的文本,并被作为实例的一部分来被显示。属性从存储在块表记录中的属性定义中继承相关的属性。

//返回部门经理这个扩展记录的ObjectId

第6章  更多的用户界面:添加自定义数据

在本章中,我们将介绍.NET API的用户界面部分能做些什么。我们首先将介绍一个自定义上下文菜单(快捷菜单)。接下来我们将实现一个无模式可停靠的面板(一个真正的AutoCAD增强辅助窗口)来支持拖放操作。接着我们将介绍通过模式窗体选取实体。最后,我们将介绍使用AutoCAD的选项对话框来设置雇员的缺省值。

本章还会介绍和上面内容有关的API。

第一部分 自定义上下文菜单

到目前为止,我们所写的代码只与CommandMethod属性定义的命令行进行相互操作。一个AutoCAD .NET程序能通过一个特殊的类来实现装载时的初始化工作。这个类只要实现IExtensionApplication .NET接口并暴露一个组件级别的属性(此属性把类定义为ExtensionApplication),就可以响应一次性的装载和卸载事件。例子:

2) 添加一个‘ContextMenuExtension’成员变量和下面两个用来添加和移除自定义菜单的函数。请好好研究一下代码来看看究竟发生了什么。

4) 在解决方案浏览器中通过右击工程来添加一个用户控件。给它命名为ModelessForm。使用控件工具箱,加入如下所示的编辑框和标签控件。

使用属性窗口设置三个编辑框的属性。设置如下:

<首先是最上面的编辑框>

要使用.NET API实例化一个面板对象,你必须要实例化用户控件对象(无模式窗体)和‘PaletteSet’对象。调用PaletteSet的成员函数Add来传递用户控件对象。

5) 接下来,我们要加入一个命令来创建面板。在类中加入一个名为CreatePalette的函数和CommandMethod属性来定义名为“PALETTE”的命令。

请看一下下面的代码块。这是实例化面板的代码。

ps = new 的基类DropTarget来实现。要使用它,你只要创建从这个基类派生的类并实现你想要的函数。在我们这个例子中,我们需要的是OnDrop()。

9) 在工程中加入一个从 API来显示自定义多页对话框,需要两个步骤。首先,通过传入要调用的成员函数的地址,来知道什么时候选项对话框出现。其次是实现回调函数。传入到回调函数中的第二个参数是一个‘TabbedDialogEventArgs’对象,我们必须使用它来调用‘AddTab’函数。AddTab使用一个标题字符串和一个‘TabbedDialogExtension’对象的实例,此实例封装了我们的窗体(其实是用户控件)。在TabbedDialogExtension的构造函数中,我们输入窗体的实例和回调函数(OnOK,

本章将讨论AutoCAD中的事件。我们将介绍事件处理函数的使用,特别是监视AutoCAD命令的事件处理函数和监视被AutoCAD命令修改的对象的事件处理函数。在解释怎样在C#中实现AutoCAD的事件处理之前,我们将首先简要地讨论一下.NET中的事件。

第一部分  C#中的事件

事件只是用来通知一个行为已经发生的信息。在ObjectARX中,我们使用反应器(reactor)来处理AutoCAD的事件。而在AutoCAD .NET API中,ObjectARX反应器被换成了事件。

事件处理函数(或者叫回调函数)是用来监视和反馈程序中出现的事件。事件可以以不同的形式出现。

在介绍AutoCAD .NET API中的事件之前,让我们先来简单地了解一下代理。

代理是一个存储方法索引的类(概念与函数指针类似)。代理对方法是类型安全的(与C中的函数指针类似)。代理有特定的形式和返回类型。代理可以封装符合这种特定形式的任何方法。

代理的一个用途就是作为产生事件的类的分发器。事件是.NET环境中第一级别的对象。虽然C#把事件处理的许多细节给隐藏掉了,但事件总是由代理来实现的。事件代理可以多次调用(就是它们可以存储多于1个的事件处理方法的索引)。它们保存了用于事件的一个注册事件处理的列表。一个典型的代理有以下的形式:

第一个参数sender表示引发事件的对象。第二个参数e是一个EventArgs参数(或者是一个派生的类),这个对象通常包含用于事件处理函数的数据。

第1b部分 +=和-=语句

要使用事件处理函数,我们必须把它与事件联系起来。这要通过使用+=语句。+=和-=允许你在运行时连接、断开或修改与事件联系的处理函数。

当我们使用+=语句时,我们要确定事件引发者的名字,并要使用new语句来确定事件处理函数,例如:

通常,处理AutoCAD事件的步骤如下:

第4步 创建第二个文档事件处理函数(回调函数)

当一个命令结束时,第三个事件处理函数被调用。同样地,我们要检查全局变量来验证这个将要结束的命令是我们监视的命令。如果是我们监视的,那么我们要重置这个变量:

这个回调函数执行的动作将会再次触发ObjectOpenedForModify事件。我们必须确定在这个回调函数中跳过了所有与此事件有关的动作。

这个回调函数的剩余代码用来把EMPLOYEE块索引和它的关联属性引用的当前(修改过的)位置与它们的初始位置作比较。如果位置改变了,我们在这个回调函数中把它们重置这初始的位置。下面的代码可以被粘贴到这个事件处理函数中。

第5步  创建命令来注册/断开事件处理函数

创建一个ADDEVENTS命令,使用+=语句来把上面的3个事件处理函数连接到各自的事件。在这个命令中,我们还应该设置全局Boolean变量:

创建另外一个命令REMOVEEVENTS,使用-=语句把事件处理函数与事件断开。

要测试这个工程,请使用CREATE命令创建一个或多个EMPLOYEE块索引。如果你要作比较的话,你也可以插入一些非EMPLOYEE的块索引。

在命令行中键入ADDEVENTS命令来执行它。

在命令行中输入MOVE命令,然后选择你想要的块索引。注意,当MOVE命令结束时,EMPLOYEE块索引(包括属性)还留在原处。

执行REMOVEEVENTS命令,然后在试一下MOVE命令。注意,EMPLOYEE块索引现在可以被移动了。

附加的问题:添加一个附加的回调函数,当用户改变EMPLOYEE块索引的”Name”属性时,这个回调函数被触发。 
}

回答:2 浏览量:827

怎么才能取消CAD中需要点或选项关键字指定基点?选择不了啊?怎么办?

  • 这是因为snap捕捉步长设置得太大了,你把snap步长设成1,试试看

    赞(0) 回复 采纳答案

    群里免费提供各软件版本安装包,专业老师为您解答室内设计各种问题,每天下午和晚上免费直播课+多功能插件+零基础教程等福利。

  • 这是要你在屏幕上指定一个点,你点左键选一个点不就得了

    赞(0) 回复 采纳答案

    群里免费提供各软件版本安装包,专业老师为您解答室内设计各种问题,每天下午和晚上免费直播课+多功能插件+零基础教程等福利。

基础入门 讲师: 王青蓝

入职场必学CAD施工图入门到精通系列视频课程,非常适合于那些在校大学生 、应届毕业生和零基础想从事室内设计行业者,有兴趣的赶快加入一起学习吧~

与“怎么才能取消CAD中需要点或选项关键字指定基点?选择不了啊?怎么办?”相关问答

  • 只需要输入长宽就可以,不要输入两个点坐标,即:点击画矩形命令后,输入@200,100(输入方式要英文输入,中文输入方式没用),确定就可以了。而且,前面一个数据是画出来的矩形的x轴向长度,后一个数据是Y向的长度。圆角命令时要求你所选的两条线在同一个平面,估计不同平面吧再看看别人怎么说的。

  • 2.38万人在看 基础入门 讲师: 敖金林

    零基础快速学习AutoCAD、如何迅速成为CAD绘图高手。要认真地听敖老师讲的每一节课,课后完成每一节课所讲授的知识点并亲自操作完成,坚持到课程结束,你会欣喜地发现自己已经是一名CAD绘图大师了,能熟练地运用CAD计算机辅助设计软件设计建筑图、机械图、电子线路图、服装设计图、景观绿化图、室内外设计图等作品,并能在设计院所、各类设计工作室、装饰公司、行政事业单位、企业设计部门等从事设计工作。

  • 是不是选择就会连图表一起会被选中,如果是,文字是在块中。(有两种情况,一种是纯属块,一种是属性块,双击一下,如出现可编辑的文字,即为属性块,如不是即为第一种)可将表格打散再选取。试ctrl+a看能不能选中。

  • 需要设置线宽。原来线宽为0,所以画不出多义线

}

我要回帖

更多关于 怎么搜索cad图纸里的关键字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信