几何尺寸与公差论坛------致力于产品几何量公差标准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:08 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】『已解决』利用cad的api怎么画一个带箭头的“引线”(leader)? - 精华帖集合

『已解决』利用cad的api怎么画一个带箭头的“引线”(leader)? - 精华帖集合
www.dimcax.com
『已解决』利用cad的api怎么画一个带箭头的“引线”(leader)?
请问各位大虾:利用cad的api怎么画一个带箭头的“引线”(leader)?就像输入“leader”命令一样。是不是和画直线,圆等实体一样的画法啊?有没有其它其它画带箭头直线的方法?
我用的是以下这个方法,怎么没有反应?
public static objectid drawline(point3d startpoint,point3d endpoint)
{
objectid lineid = objectid.null;// the return value for this function
database db = hostapplicationservices.workingdatabase;//获得当前工作空间的数据库
using (transaction trans = db.transactionmanager.starttransaction())
{
blocktable bt = trans.getobject(db.blocktableid, openmode.forwrite) as blocktable;
blocktablerecord btr = bt[blocktablerecord.modelspace].getobject(openmode.forwrite) as blocktablerecord;
leader leader = new leader();// 标注线(带箭头)
leader.appendvertex(startpoint);
leader.appendvertex(endpoint);
lineid = btr.appendentity(leader);
trans.addnewlycreateddbobject(leader, true);
trans.commit();
}
return lineid;
}
复制代码
光有一个appendvertex函数是不够的,还要一个setvertexat函数……
public static objectid drawline(point3d startpoint,point3d endpoint)
{
objectid leaderid = objectid.null;// the return value for this function
database db = hostapplicationservices.workingdatabase;//获得当前工作空间的数据库
using (transaction trans = db.transactionmanager.starttransaction()) // begin the transaction
{
blocktable bt = trans.getobject(db.blocktableid, openmode.forwrite) as blocktable;//获得块表
blocktablerecord btr = bt[blocktablerecord.modelspace].getobject(openmode.forwrite) as blocktablerecord;//获得模型空间的块表记录
leader leader = new leader();// 标注线(带箭头)
leader.appendvertex(startpoint);
leader.appendvertex(endpoint);
leader.setvertexat(0, startpoint);
leader.setvertexat(1, endpoint);
leaderid = btr.appendentity(leader);
trans.addnewlycreateddbobject(leader, true);
trans.commit();
}
return leaderid;
}
复制代码
是这样吗?我试了,还是不行。
using system;
using autodesk.autocad.applicationservices;
using autodesk.autocad.runtime;
using autodesk.autocad.databaseservices;
using autodesk.autocad.editorinput;
using autodesk.autocad.geometry;
namespace cs_temp
{
public class testclass
{
[commandmethod("test")]
public void test()
{
database db = hostapplicationservices.workingdatabase;
using (transaction trans = db.transactionmanager.starttransaction())
{
blocktable bt = (blocktable)trans.getobject
(db.blocktableid, openmode.forwrite);
blocktablerecord btr = (blocktablerecord)trans.getobject
(bt[blocktablerecord.modelspace],openmode.forwrite);
leader leader = new leader();
leader.appendvertex(new point3d(0,0,0));
leader.appendvertex(new point3d(20,10,0));
leader.setvertexat(0, new point3d(0, 0, 0));
leader.setvertexat(1, new point3d(20, 10, 0));
btr.appendentity(leader);
trans.addnewlycreateddbobject(leader, true);
trans.commit();
}
}
}
}
复制代码
版主,用你的例子没有问题。问题解决了,非常感谢!
学习
学问必须合乎自己的兴趣,方才可以得益。
跟着学习。。
原来可以这样画“引线”
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


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

高级搜索
显示模式

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

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



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


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