几何尺寸与公差论坛------致力于产品几何量公差标准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, 08:42 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 发几个三维多段线的程序 大家来改改

发几个三维多段线的程序 大家来改改
www.dimcax.com
发几个三维多段线的程序 大家来改改
using ;
using ;
using ;
using ;
using ;
using ;
namespace
{
public class
{
public void getentity()
{
ed = application.documentmanager.mdiactivedocument.editor();
selopts = new (constants.vbcr + "select 3dpolyline: ");
selopts.setrejectmessage(constants.vbcr + "3dpolyline may be selected only!");
selopts.addallowedclass(typeof(), true);
entres = ed.getentity(selopts);
if (entres.status == promptstatus.ok) {
move3dpolyvertex(entres.objectid);
}
}
private void move3dpolyvertex( polyid)
{
doc = application.documentmanager.mdiactivedocument;
doclock = doc.lockdocument();
ed = doc.editor;
db = doc.database;
using ( trans = ed.document.transactionmanager.starttransaction()) {
objpline = ()trans.getobject(polyid, openmode.forwrite);
int osm = application.getsystemvariable("osmode");
application.setsystemvariable("osmode", 1);
opts = new (constants.vbcr + "select vertex :");
opts.allownone = false;
opts.usebasepoint = false;
res = ed.getpoint(opts);
if (res.status == promptstatus.ok) {
pfrom = res.value;
opts.usebasepoint = true;
opts.basepoint = pfrom;
opts.message = constants.vbcr + "pick destination point to move vertext at:";
nres = ed.getpoint(opts);
if (nres.status == promptstatus.ok) {
pto = nres.value;
btr = ()trans.getobject(db.currentspaceid, openmode.forwrite);
blocktablerecord();
}
}
}
}
}
}
改变3dpolyvertex 中的点
建立一个 3dpoly using autodesk.autocad.runtime; using autodesk.autocad.databaseservices; using autodesk.autocad.applicationservices; using autodesk.autocad.editorinput; using autodesk.autocad.geometry; public class gilsclass1 { public void create3dpoly() { point3dcollection pts = new point3dcollection(); polyline3d my3dpoly = new polyline3d(poly3dtype.simplepoly, pts, false); double[] ptsarr = {0, 0, 0, 10, 10, 10, 0, 10, 10}; int i = 0; while (i < ptsarr.length) { pts.add(new point3d(ptsarr(i), ptsarr(i + 1), ptsarr(i + 2))); i = i + 3; } draw3dpoly(my3dpoly); } internal objectid draw3dpoly(polyline3d my3dpoly) { database db = hostapplicationservices.workingdatabase; editor ed; application.documentmanager.mdiactivedocument.editor(); autodesk.autocad.databaseservices.transactionmanager transmgr = db.transactionmanager; transaction trans = transmgr.starttransaction; try { blocktablerecord btr = (blocktablerecord)trans.getobject(db.currentspaceid, openmode.forwrite); btr.appendentity(my3dpoly); trans.addnewlycreateddbobject(my3dpoly, true); trans.commit(); } catch (autodesk.autocad.runtime.exception ex) { ed.writemessage("error message: " + ex.message); } finally { if ((my3dpoly != null)) { my3dpoly.dispose(); } } return my3dpoly.objectid; } }
using system ; using system.collections; using autodesk.autocad.runtime ; using autodesk.autocad.databaseservices; using autodesk.autocad.geometry; using autodesk.autocad.editorinput; using autodesk.autocad.applicationservices; using acadapp = autodesk.autocad.applicationservices.application; [assembly: commandclass(typeof(classlibrary.class))] namespace classlibrary { public class class { [commandmethod("intpoly3d")] static public void intpoly3d() { editor ed = application.documentmanager.mdiactivedocument.editor; polyline3d pl1 = selectpoly3d("\nselect first polyline3d: "); if (pl1 == null) return; polyline3d pl2 = selectpoly3d("\nselect second polyline3d: "); if (pl2 == null) return; // we can project our plines in direction of z axis of wcs, // but you can use another project plane vector3d dir = new vector3d(0,0,1); point3d orig = new point3d (0,0,0); // plane of wcs plane planewcs = new plane(orig, dir); curve pl1_prj = pl1.getprojectedcurve(planewcs,dir); pl1.dispose(); curve pl2_prj = pl2.getprojectedcurve(planewcs,dir); pl2.dispose(); point3dcollection pts = new point3dcollection(); pl1_prj.intersectwith(pl2_prj,intersect.onbothoperands,pts,0,0); if (pts.count > 0) { ed.writemessage("\nnumber of intersection: {0}",pts.count); foreach (point3d pt in pts) ed.writemessage("\n point: {0}",pt); } else { ed.writemessage("\nno intersection!"); } pl1_prj.dispose(); pl2_prj.dispose(); } static private polyline3d selectpoly3d(string str) { editor ed = application.documentmanager.mdiactivedocument.editor; database db = hostapplicationservices.workingdatabase; promptentityresult rs = ed.getentity(str); if (rs.status == promptstatus.ok) { transaction trans = db.transactionmanager.starttransaction(); entity ent = (entity)trans.getobject(rs.objectid, openmode.forread); polyline3d pl = ent as polyline3d; trans.commit(); if (pl == null) ed.writemessage("\nit is not polyline3d!"); return pl; } return null; } } }
3dpoly 的交点
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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



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


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