几何尺寸与公差论坛------致力于产品几何量公差标准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, 05:36 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】一个生成管道的交互代码

一个生成管道的交互代码
www.dimcax.com
一个生成管道的交互代码
我做了一个这东西,可是接口出不够真实,希望有知道好方法的给改改,谢先 using system; using system.collections; using autodesk.autocad.runtime; using autodesk.autocad.databaseservices; using autodesk.autocad.geometry; using autodesk.autocad.applicationservices; using autodesk.autocad.editorinput; using autodesk.autocad.colors; using dbtransman = autodesk.autocad.databaseservices.transactionmanager; [assembly: commandclass(typeof(巷道.commands))] namespace 巷道 { public class commands { public commands() { } [commandmethod("hd")] public void test() { database db=hostapplicationservices.workingdatabase; editor ed=application.documentmanager.mdiactivedocument.editor; promptpointoptions ppo1 = new promptpointoptions("请选择点"); promptpointresult ppr1 = ed.getpoint(ppo1); point3d pt1 = ppr1.value; point3dcollection pts = new point3dcollection(); pts.add(pt1); nextpoint: promptpointoptions ppo2 = new promptpointoptions("请选择下一点"); promptpointresult ppr2 = ed.getpoint(ppo2); if (ppr2.status == promptstatus.cancel) return; point3d pt2 = ppr2.value; pts.add(pt2); point3dcollection ptss = new point3dcollection(); region region = new region(); int h=pts.count; if (pts.count > 3) { ptss.add(pts[h - 1]); ptss.add(pts[h - 2]); ptss.add(pts[h - 3]); vector3d vv1 = pts[h - 1].getvectorto(pts[h - 2]); region=re(vv1,pts[h-1]); } else { ptss = pts; vector3d vvv = pt1.getvectorto(pts[1]); region = re(vvv, pt1); } polyline3d pline = new polyline3d(poly3dtype.simplepoly,ptss,false); solid3d land = new solid3d(); land.extrudealongpath(region, pline, 0); appendentity(land); goto nextpoint; } public static objectid appendentity(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; } //创建巷道面域 public static region re(vector3d vv, point3d pt) { arc arc1=new arc(pt,vv,50,math.pi,0.75*math.pi); arc arc2 = new arc(pt, vv, 45, math.pi, 0.75 * math.pi); point3d pts1=new point3d(); point3d pte1=new point3d(); pte1=arc1.startpoint; pts1=arc1.endpoint; line line1=new line(pts1,pte1); dbobjectcollection ent1 = new dbobjectcollection(); ent1.add(arc1); ent1.add(line1); dbobjectcollection egion1 = region.createfromcurves(ent1); point3d pts2 = new point3d(); point3d pte2 = new point3d(); pte2 = arc2.startpoint; pts2 = arc2.endpoint; line line2 = new line(pts2, pte2); dbobjectcollection ent2 = new dbobjectcollection(); ent2.add(arc2); ent2.add(line2); dbobjectcollection egion2 = region.createfromcurves(ent2); region region1 = (region)egion1[0]; region region2 = (region)egion2[0]; region1.booleanoperation(booleanoperationtype.boolsubtract, region2); return region1; } } }
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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



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


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