![]() |
【转帖】一个生成管道的交互代码
一个生成管道的交互代码
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; } } } |
| 所有的时间均为北京时间。 现在的时间是 06:36 AM. |