几何尺寸与公差论坛------致力于产品几何量公差标准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-20, 11:27 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】land

land
www.dimcax.com
land
[commandmethod("hd")] static public void test() { polyline3d pline=new polyline3d(); database db = hostapplicationservices.workingdatabase; editor ed = application.documentmanager.mdiactivedocument.editor; transaction trans = db.transactionmanager.starttransaction(); blocktable bt = (blocktable)trans.getobject(db.blocktableid, openmode.forread); blocktablerecord btr = (blocktablerecord)trans.getobject(db.currentspaceid, openmode.forwrite); promptpointoptions ppo=new promptpointoptions("请选择第一点"); promptpointresult ppores=ed.getpoint(ppo); point3d pt1=ppores.value; nextpoint: promptpointoptions ppo2=new promptpointoptions("请选择下一点或画线类型[
polylinesplineout]
"); ppo2.keywords.add("p","p","p",false,true); ppo2.keywords.add("s", "s", "s", false, true); ppo2.keywords.add("c", "c", "c", false, true); ppo2.keywords.default = "p"; ppo2.allownone=true; ppo2.usebasepoint=true; ppo2.basepoint=pt1; point3d pt2 ; promptpointresult ppres = ed.getpoint(ppo2); if (ppres.status == promptstatus.cancel) return; else if(ppres.status==promptstatus.ok) pt2= ppres.value; else if (ppres.stringresult == "c") goto kkk ; point3dcollection pts = new point3dcollection(); pts.add(pt1); pts.add(pt2); point3dcollection ptss = new point3dcollection(); if (pts.count > 2) { ptss.add(pts[pts.count - 1]); ptss.add(pts[pts.count - 2]); ptss.add(pts[pts.count - 3]); } else { ptss = pts; } switch (ppres.stringresult.toupper()) { case"p": pline= new polyline3d(poly3dtype.simplepoly,ptss,false); btr.appendentity(pline); trans.addnewlycreateddbobject(pline,true); break; case"s": pline = new polyline3d(poly3dtype.simplepoly,ptss,false); pline.splinefit(); btr.appendentity(pline); trans.addnewlycreateddbobject(pline,true); break; } goto nextpoint; kkk: promptselectionoptions pros = new promptselectionoptions(); pros.messageforadding = "请选择主线"; promptselectionresult prres = ed.getselection(pros); selectionset sset = prres.value; objectid[] ids = sset.getobjectids(); foreach (objectid id in ids) { entity ent = (entity)trans.getobject(id, openmode.forwrite); switch (ent.tostring()) { case "autodesk.autocad.databaseservices.polyline3d": //polyline2d pline = (polyline2d)ent; ex(re1(pline.startpoint, vector3d.xaxis, 10), pline); break; case "autodesk.autocad.databaseservices.spline": spline sp=(spline)ent; ex(re1(sp.startpoint,sp.startfittangent,30),sp); break; } } } //添加实体 public static objectid appende(entity ent) { database db = hostapplicationservices.workingdatabase; objectid entid; using (transaction trans = db.transactionmanager.starttransaction()) { blocktable bt = (blocktable)trans.getobject(db.blocktableid, openmode.forread); blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite); entid = btr.appendentity(ent); trans.addnewlycreateddbobject(ent, true); trans.commit(); } return entid; } //为巷道创建面域1 public static region re1(point3d pt,vector3d vv,double r) { circle cir = new circle(pt,vv,r); dbobjectcollection ent = new dbobjectcollection(); ent.add(cir); dbobjectcollection egion1 = region.createfromcurves(ent); region re = (region)egion1[0]; return re; } //创建拉伸函数 public static void ex(region reg,curve path) { solid3d so = new solid3d(); so.extrudealongpath(reg,path,0); appende(so); } } }
为什么当选择第二点时会出错呢,致命错误
因为你还没有选择参数就选择了点. 如果没有选择参数,下面的这句就会出现导致cad退出的错误! switch (ppres.stringresult.toupper()) 你可以设定一个默认的参数,比如: string str_res = ppres.stringresult; if (str_res = string.empty) str_res= "p" switch (str_res.toupper()) ......... 当然,可能不符合你的程序整体的要求,我只是建议,还需要你自己考虑. 另外你这个程序还有其它的问题,慢慢调试吧.
impossible is nothing
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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



所有的时间均为北京时间。 现在的时间是 07:50 PM.


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