个人感觉通过代码获取模板文件的图层信息写成LSP文件意义不大,因为图层本身并不复杂,关键的DXF码就那么几个,当然作为练手还是可以的。
生成的代码中,运行时按模板生成当前图形没有的图层和修改已有图层为模板图层是有必要的,至于1和2的统计其实很简单,如果没有强迫症的话,可以简单粗暴些,非此即彼即可,对于lsp中提供的图层名,如果当然图层没有,那么就是新建的,如果有,那就修改为模板的图层,分别用一个表来记录它们就行了
3这个问题,加载线型,可能有的图形文件中的线型,换个电脑或者少装一个第三方插件,就会缺少某个线型,根据个人经验,我是把需要的线型,同样获取它的DXF数据,在新图形文件中,直接生成它,不加载线型文件,因为我无法保证换个地方那个线型文件它还存在。。。
- (vl-every'(lambda(x / e)(setq e(tblobjname"ltype"(car x)))
- (if e(entmod(cons(cons -1 e)(cdr x)))(entmakex(cdr x))))
- '(("X5"(0 . "LTYPE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLinetypeTableRecord")(2 . "X5")(70 . 0)(3 . "")(72 . 65)(73 . 2)(40 . 3.0)(49 . 2.0)(74 . 0)(49 . -1.0)(74 . 0))
- ("X32"(0 . "LTYPE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLinetypeTableRecord")(2 . "X32")(70 . 0)(3 . "")(72 . 65)(73 . 2)(40 . 1.5)(49 . 1.0)(74 . 0)(49 . -0.5)(74 . 0))))
这两个线型是我在后边会用到的,至于从哪个线型文件能加载到它我不管,我直接把它们的DXF数据搞出来,直接生成这两个线型完事,如果存在同名线型,那么就修改它的DXF数据使之成为我需要的线型,其实道理和图层信息的重建完全是一回事
|