本帖最后由 llsheng_73 于 2015-10-3 16:09 编辑
以前通过(command"style""宋体""宋体"0 0"""")能轻创建宋体或者别的字体
但没太注意,不知道从什么时候起,这样创建宋体通通不能成功,用ENTMAKE同样无法成功,vla方法也同样失败,好象只有老老实实的在CAD窗口里边用style命令才能成功了
曾经以为只是个例,但最近慢慢有人同样面临这个困惑,于是仔细看了在CAD窗口里边用style命令创建的宋体,结果不经意发现它多出了一个-3组,以前好象所有字体都没有这个,并且CAD版本我也没更新,还是用的2006版,不同的是系统从以前的XP,win7 32,后来换成了win7 64,印象中就那时开始出现这个鬼问题,到目前换成了8.1 64位
- (defun MKstyle(ys ztm h kg / a b);;(mkstyle"1""txt.shx"0 1)
- (regapp"ACAD")
- (if(setq b(mapcar'cons'(40 41 3 4 -3)(list h kg""""(list(list"ACAD"(cons 1000 (vl-filename-base ztm))'(1071 . 34306)))))
- a(tblobjname"STYLE"ys))
- (entmod(append(vl-remove-if'(lambda(x)(member(car x)'(3 4 40 41)))(entget a))b))
- (entmakex(append(mapcar'cons'(0 100 100 2 70 71)(list"STYLE""AcDbSymbolTableRecord""AcDbTextStyleTableRecord"ys 0 0))b)))
- )
上边是根据多出来的-3组对以前的创建字体函数进行的修改,经个人测试有以下情况,创建字体的时候没问题,但(mkstyle"宋体""Simsun.ttc"0 1)(mkstyle"宋体1""Simsun.ttf"0 1)创建出来的字体虽然看着一样,但实际上确不相同,另外如果用这个函数的修改部分把宋体变来变去,可能会使字体样式无效,另外那个-3组它到底有什么作用,为什么在XP或者win7 32上可以不用它?难道是windows对字体的处理方法发生了改变,以至于老版本的CAD无法处理它?但这也说不通,因为直接通过style命令创建或者修改字体为宋体都没有问题。另外1071组的34306又是什么意思?
|