![]() |
【转帖】请教如何通过程序实现在类似autocad中添加一中字体样式的功能?
请教如何通过程序实现在类似autocad中添加一中字体样式的功能?
请教如何通过程序实现在类似autocad中添加一中字体样式的功能? 如题,我需要通过程序实现类似autocad中添加一中字体样式的功能?这样我可以将这个字体样式一直保存,然后每次我添加文字的时候都可以用啦,望大虾们不吝赐教! acdbobjectid cljdwg::addtextstyle(const char* strname, const char* strstype, const char* strbigname, const double dheight, const double dfactor, acdbdatabase* pdb) { acdbobjectid idtextstyle=null; acdbtextstyletable *ptable=null; acdbtextstyletablerecord *ptablerecord; if (pdb==null) pdb=acdbcurdwg(); pdb->gettextstyletable(ptable,acdb::kforwrite); if(ptable==null) { afxmessagebox("fonttable open wrong"); return idtextstyle; } // 生成新的图层表记录 acad::errorstatus es; ptable->getat(acdb_model_space,ptablerecord,acdb::kforwrite); if(ptable->has(strname)) { ptable->getat(strname,idtextstyle); } else { ptablerecord=new acdbtextstyletablerecord; es = ptablerecord->setname(strname); if(cstring(strstype).find(_t(".shx")) != -1 || cstring(strstype).find(_t(".shx")) != -1) { char szpath[max_path]; if (ads_findfile(strstype,szpath) != rtnorm) { ads_printf("could not find file %s.\n", strstype); } else { es = ptablerecord->setfilename(strstype); } if(cstring(strbigname) != _t("")) { char szpath[max_path]; if (ads_findfile(strbigname,szpath) != rtnorm) { ads_printf("could not find file %s.\n", strbigname); } else { es = ptablerecord->setbigfontfilename(strbigname); } } } else { es = ptablerecord->setfont(strstype,false,false, 上述代码有点太复杂啦 用acedcommand函数调用autocad的style命令就可以实现. 以下是引用wzz1968在 同意,既然是程序就要用编程的思想 江苏昆山小城,欢迎交流 本职工作五金模具设计及加工 及cad软件开发 初学编程的非常忌讳搞一对找不着边的代码,二楼的代码足以使初学者望而却步. 当然可以用lisp解决问题. 方式如下: 假设定义hs字型 1.用command函数 (if (= (tblsearch "style" "hs") nil) (command "style" "hs" "txt,hs" "4" "0.5" "" "" "") ) 2.用tblobjname函数 (if (= (tblsearch "style" "hs") nil) (progn (setq ent (tblobjname "style" "standard")) (setq ent_list (entget ent)) (setq ent_list (subst (cons 2 "hs") (assoc 2 ent_list)) (setq ent_list (subst (cons 3 "txt") (assoc 3 ent_list)) (setq ent_list (subst (cons 4 "hs") (assoc 4 ent_list)) (setq ent_list (subst (cons 40 4.0) (assoc 40 ent_list)) (setq ent_list (subst (cons 41 0.5) (assoc 41 ent_list)) (entmake ent) ) ) 对于初学者,那段代码好理解是不言而语的. (command "style" "hs" "txt,hs" "4" "0.5" "" "" "") ) 以下是引用wzz1968在 |
| 所有的时间均为北京时间。 现在的时间是 09:54 PM. |