![]() |
【转帖】『已解决』利用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(); } } } } 复制代码 版主,用你的例子没有问题。问题解决了,非常感谢! 学习 学问必须合乎自己的兴趣,方才可以得益。 跟着学习。。 原来可以这样画“引线” |
所有的时间均为北京时间。 现在的时间是 04:56 PM. |