![]() |
得到cad中所有mtext排序打印
得到cad中所有mtext排序打印
www.dimcax.com 得到cad中所有mtext排序打印 , , , 如题,每个mtext里面的单词空格隔开,每一个单词提取出来,排序。如:“i am a boy","fff ggg sss" 提取出来后应该是"i" ,"am","a","boy","fff","ggg","sss"再进行排序。 这个题目是群里一个朋友出的,好像是展示f#里面的一个功能吧,那天我用c#编了,贴出来看看。 using system; using system.collections.generic; using system.text; using autodesk.autocad.applicationservices; using autodesk.autocad.editorinput; using autodesk.autocad.databaseservices; using system.data; using app = autodesk.autocad.applicationservices.application; using tranman = autodesk.autocad.databaseservices.transactionmanager; namespace sbydo.cad.test { class test { public void getallmtextwords() { database db = hostapplicationservices.workingdatabase; tranman tm = db.transactionmanager; editor ed = app.documentmanager.mdiactivedocument.editor; objectid[] ids = null;//所有mtext的id typedvalue[] filtervalue = new typedvalue[] { new typedvalue(0, "mtext") }; list words = new list();//存放所有单词 selectionfilter filter = new selectionfilter(filtervalue); promptselectionresult resselectopt = ed.selectall(filter); selectionset ss = resselectopt.value; ids = ss.getobjectids();//得到所有mtext的id using (transaction trans = tm.starttransaction()) {//将所有独立词组存入words for (int i = 0; i < ids.length; i++) { mtext mtext = (mtext)trans.getobject(ids, openmode.forread); string[] sentence = mtext.contents.replace("\\p", " ").split(' '); for (int j = 0; j < sentence.length; j++) words.add(sentence[j]); } } words.sort();//排序 for (int i = 0; i < words.count; i++) //打印 ed.writemessage("\n" + words); } } } 不错 c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。 其实 一般有用的排序法是:按照x、y坐标值进行二维排序前几天偶简单做的汇料程序,进这样进行的~ 这个有价值吗?程序设计而已啊。 |
所有的时间均为北京时间。 现在的时间是 07:36 PM. |