liminnet 发表于 2009-10-19 17:52:00

雪山飞狐_lzh 发表于 2009-10-19 18:15:00

<p>自己做个枚举</p><p>using System;<br/>using System.Collections.Generic;<br/>using System.ComponentModel;<br/>using System.Data;<br/>using System.Drawing;<br/>using System.Linq;<br/>using System.Text;<br/>using System.Windows.Forms;</p><p>namespace WindowsFormsApplication2<br/>{</p><p>&nbsp;&nbsp;&nbsp; //相关数据查询Cad帮助,下面只是示例<br/>&nbsp;&nbsp;&nbsp; public enum OSMode<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByEnd = 1,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByMid = 2<br/>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; public partial class Form1 : Form<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Form1()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InitializeComponent();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Form1_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OSMode osm = OSMode.ByEnd | OSMode.ByMid;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((osm &amp; OSMode.ByEnd) == OSMode.ByEnd)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show("ByEnd");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //去除ByEnd<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; osm = osm ^ OSMode.ByEnd;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; }<br/>}</p>

wylong 发表于 2009-10-19 18:54:00

<p class="table_body">类型:整数<br/>保存位置:注册表<br/>初始值: 4133 </p><p class="table_body">使用下列位码设置“对象捕捉”的运行模式: <br/></p><p class="table_list">0 NON(无) </p><p class="table_list">1 END(端点) </p><p class="table_list">2 MID(中点) </p><p class="table_list">4 CEN(圆心) </p><p class="table_list">8 NOD(节点) </p><p class="table_list">16 QUA(象限点) </p><p class="table_list">32 INT(交点) </p><p class="table_list">64 INS(插入点) </p><p class="table_list">128 PER(垂足) </p><p class="table_list">256 TAN(切点) </p><p class="table_list">512 NEA(最近点) </p><p class="table_list">1024 QUI(快速) </p><p class="table_list">2048 APP(外观交点) </p><p class="table_list">4096 EXT(尺寸线) </p><p class="table_list">8192 PAR(平行)<br/></p><p class="table_body">要指定多个对象捕捉方式,请输入各个位码值之和。例如,输入 3 指定“端点”(位码 1) 和“中点”(位码 2) 对象捕捉。输入 16383 指定全部对象捕捉方式。<br/></p><p class="table_body">使用状态行的“对象捕捉”按钮关闭对象捕捉模式,除了返回 OSMODE 的普通值,还将返回位码 16384 (0x4000)。这个附加值有助于开发人员编写 AutoCAD 应用程序并将此模式与“绘图设置”对话框关闭的对象捕捉模式区别开来。设置此位码值将关闭对象捕捉。在该位码值关闭时将 OSMODE 设置为其他值可以打开对象捕捉。</p>

wylong 发表于 2009-10-19 18:56:00

Autocad用户手册中系统变量里面就有的,上面的就是复制Autocad用户手册的相关说明。

雪山飞狐_lzh 发表于 2009-10-19 21:29:00

完整的代码:)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
    public enum OSMode
    {
      None = 0,
      End = 1,
      Middle = 2,
      Center = 4,
      Node = 8,
      Quadrant = 16,
      Intersection = 32,
      Insert = 64,
      Pedal = 128,
      Tangent = 256,
      Nearest = 512,
      Quick = 1024,
      Appearance = 2048,
      Extension = 4096,
      Parallel = 8192
    }
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }
      private void Form1_Load(object sender, EventArgs e)
      {
            //设置端点、中点、插入点
            OSMode osm =
                OSMode.End |
                OSMode.Middle |
                OSMode.Insert;
            MessageBox.Show(osm.ToString());
            //查询是否包含端点捕捉
            if ((osm & OSMode.End) == OSMode.End)
            {
                MessageBox.Show("ByEnd");
                //去除端点捕捉
                osm = osm ^ OSMode.End;
                MessageBox.Show(osm.ToString());
            }
      }
    }
}

liminnet 发表于 2009-10-20 12:59:00

页: [1]
查看完整版本: 狐哥,C#可以设置OSMODE 的值,那用代码可以设置个别的吗