lisp判断线型,自动创建加载自定义线型

  • A+
所属分类:CAD二次开发

废话不多说,使用lisp创建线型,必须知道当前使用的是哪一个线型文件。所有还要获取当前的线型acadiso.lin配置文件,如果没有线型,就用写文件的方式在当前配置文件中追加线型代码。acad.lin

当前线型配置文件可以通过注册表获取。在获取当前配置文件路径,即可得到完整的文件路径。直接上lisp源码,下面例子检测是否有3b-NR线型。没有就创建,当然自定义的肯定没有。但是第2次运行的时候肯定有,所有我们必须先判断线型是否在。

亲测可用任何cad版本的lisp代码

(defun c:vv(/ lpl)
(if(not(tblobjname "ltype" "3B-NR"))
(progn
(setq lpl(STRCAT "HKEY_CURRENT_USER\\" (vlax-product-key)))
(setq acadiso(VL-REGISTRY-READ lpl "RoamableRootFolder"))
(setq acadisol(VL-REGISTRY-READ (STRCAT lpl "\\FixedProfile\\General") "ISOLinetype"))
(setq acadiso(STRCAT acadiso "Support\\" acadisol))
(setq dyS "<"
dyN ">")
;(alert (vl-princ-to-string acadiso))
(setq fflin (open acadiso "A"));打开文件R只读/W覆盖写入/A追加写入
(if (/= fflin nil);文件返回空就是文件不存在
(progn
(princ "\n*3B-SR,顺时针 -<---<--- \nA,3,0,[" fflin )
(princ (STRCAT "\"" dyS "\"" )fflin )
(princ ",standard,x=0,y=-0.5,r=0,s=1],1\n" fflin )
(princ (STRCAT "*3B-NR,逆时针 ->--->---\nA,3,0,[" "\"" dyS "\"" ",standard,x=0,y=-0.5,r=0,s=1],1 ") fflin )
)
)
(close fflin)
(alert "路径线型创建成功,如3B程序路径显示异常,\n请必须重新启动CAD软件后线型生效")
(command "-linetype" "l" "3B-NR" "" "")
)
(command "-linetype" "l" "3B-NR" "" "")
)
(princ)
)
复制

如果自己用,也可以直接在文件中添加自定义线型样式。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: