几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-29, 05:35 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】新手的第一个画直线的程序和新手分享 - 精华帖集合

新手的第一个画直线的程序和新手分享 - 精华帖集合
www.dimcax.com
新手的第一个画直线的程序和新手分享

初学c#,望大家以后多多指教.
[commandmethod("netline")]
public void netline()
{
editor ed = application.documentmanager.mdiactivedocument.editor;
database db = hostapplicationservices.workingdatabase;
promptpointoptions oppt = new promptpointoptions("");
oppt.allownone = true;
objectidcollection ids = new objectidcollection();
point3dcollection pts = new point3dcollection();
promptpointresult respt;
point3d pt1=new point3d(0, 0, 0), pt2, spt=new point3d(0, 0, 0);
int n = 0;
do
{
switch (n)
{
case 0:
oppt.message = "\n指定第一点: ";
oppt.usebasepoint = false;
break;
case 1:
case 2:
oppt.message = "\n指定下一点或 [放弃(u)]";
oppt.keywords.add("u", "u", "u", false, true);
oppt.usebasepoint = true;
oppt.basepoint = pt1;
break;
default:
oppt.message = "\n指定下一点或 [闭合(c)/放弃(u)]";
oppt.usebasepoint = true;
oppt.basepoint = pt1;
oppt.keywords.add("u", "u", "u", false, true);
oppt.keywords.add("c", "c", "c", false, true);
break;
}
respt = ed.getpoint(oppt);
if(respt.status == promptstatus.none || respt.status == promptstatus.cancel)
return;
else
{
if(respt.status == promptstatus.keyword)
{
switch(respt.stringresult)
{
case "u":
if(n > 1 )
{
objectid objid = ids[ids.count-1];
ids.removeat(ids.count-1);
using(transaction trans = db.transactionmanager.startopenclosetransaction())
{
entity ent2 = (entity)trans.getobject(objid, openmode.forwrite, false)as entity;
ent2.erase();
trans.commit();
}
}
pts.removeat(pts.count-1);
if(pts.count > 0)
pt1 = pts[pts.count-1];
else
ed.writemessage("\n已经放弃所有线段。");
n--;
break;
case "c":
line ent1 = new line(pt1, spt);
using(transaction trans = db.transactionmanager.startopenclosetransaction())
{
blocktable bt = (blocktable)trans.getobject(db.blocktableid, openmode.forread);
blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite);
objectid id = btr.appendentity(ent1);
ids.add(id);
trans.addnewlycreateddbobject(ent1, true);
trans.commit();
}
return;
}
}
else
{
pt2 = respt.value;
if(n > 0)
{
line ent = new line(pt1, pt2);
pts.add(pt2);
pt1 = pt2;
n++;
using(transaction trans = db.transactionmanager.startopenclosetransaction())
{
blocktable bt = (blocktable)trans.getobject(db.blocktableid, openmode.forread);
blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite);
objectid id = btr.appendentity(ent);
ids.add(id);
trans.addnewlycreateddbobject(ent, true);
trans.commit();
}

}
else
{
spt = pt2;
pt1 = pt2;
pts.add(pt2);
n++;
}
}

}
oppt.keywords.clear();
}while(respt.status == promptstatus.ok || respt.status == promptstatus.keyword);
}
复制代码
很好!相信你已不是“新手”了!!
不错,加精了
c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。
卢大哥和才大哥,过奖了,需要学习的地方太多了,加上不懂英文学起来很吃力,要是才大哥能组织人把objectarx.net的帮助文件翻译一下就好了. [ ]
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 09:33 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多