请Spring大侠及各路高手帮忙。
<P>q</P><P>请各位大侠看看,这个程序是Spring大侠写的,用来新建层的,但是新建层时,DAT文件(DAT文件上传不了,我改名为TXT了)内定制的线型不能自动赋值,必须先加载好线型才能OK。请各位大侠帮忙解决。</P>
<P>谢谢</P> <P>增加了一个检查函数在里面,判断若没有则加载</P>
<P>;;;功能 : 创建图层<BR>;;;_____________________________________________________<BR>(defun c:nl (/ fi makelayer_list n makelayer layer_name layer_linetype layer_color<BR> )<BR>;;;_______________________________________________________<BR>;;;取得图层列表<BR> (defun GET_FILE_MAKELAYER (fi / fil pe fel)<BR> (setq makelayer_list nil)<BR> (if (findfile fi)<BR> (progn<BR> (setq fil (findfile fi))<BR> (setq pe (open fil "r"))<BR> (while (setq fel (read-line pe))<BR> (setq makelayer_list (cons fel makelayer_list))<BR> )<BR> (close pe)<BR> (setq makelayer_list (cdr (reverse makelayer_list)))<BR> ;根据文本的内容而定<BR> )<BR> )<BR> )<BR> (GET_FILE_MAKELAYER "d:\\txt.txt")<BR> ;;_____________________________________________________<BR> ;; 检查是否有这个线型,若没有则加载 .<BR> (defun checkLinetype (Linetype)<BR> (vl-load-com)<BR> (setq Linetypes (vla-get-linetypes (vla-get-activeDocument (vlax-get-acad-object))))<BR> (vl-catch-all-apply 'vla-load (list Linetype "ACAD.LIN"))<BR> )<BR>;;;_______________________________________________________<BR> (setq n 0)<BR> (while (> (length makelayer_list) n)<BR> (setq makelayer (read (strcat "(" (nth n makelayer_list) ")")))<BR> (setq layer_name (nth 0 makelayer)) ;图层名<BR> (setq layer_linetype (nth 1 makelayer)) ;图层型<BR> (checkLinetype layer_linetype); The new add function to check there is or not exist the linetype .<BR> (setq layer_color (nth 2 makelayer)) ;图层颜色<BR> (setq layer_polt (nth 3 makelayer)) ;打印<BR> (entmake<BR> (list<BR> '(0 . "LAYER")<BR> '(100 . "AcDbSymbolTableRecord")<BR> '(100 . "AcDbLayerTableRecord")<BR> '(70 . 0)<BR> (cons 6 layer_linetype) ;线型<BR> (cons 62 layer_color) ;颜色<BR> (cons 2 layer_name) ;图层名<BR> (cons 290 layer_polt)<BR> )<BR> )<BR> (setq n (1+ n))<BR> )<BR> (princ "\nMould Layer Create OK ")<BR> (princ)<BR>)<BR>;;;_______________________________________________________<BR></P> 多谢HuaiYu大侠,我试了下,线型还是不能自动设置。 不好意思,我把这句给改了 (GET_FILE_MAKELAYER "d:\\txt.txt")<BR>你把这里给改成你电脑上的路径再试试吧 <P>我是改好了才试的。</P> 本帖最后由 作者 于 2006-4-29 21:27:26 编辑 <br /><br /> ;; 检查是否有这个线型,若没有则加载 .<BR> (defun checkLinetype (Linetype)<BR> (vl-load-com)<BR> (setq Linetypes (vla-get-linetypes (vla-get-activeDocument (vlax-get-acad-object))))<BR> (vl-catch-all-apply 'vla-load (list Linetype "ACAD.LIN"))<BR> )<BR>我是看不出来到底哪里有检查了.而且,,,'vla-load 后面没有对象??用法也是错误, <P>(vl-catch-all-apply 'vla-load (list Linetype "ACAD.LIN"))</P>
<P>改下,,,</P>
<P>(vl-catch-all-apply 'vla-load (list Linetypes Linetype "ACAD.LIN"))</P> 多谢<A name=10330><FONT color=#000066><B>xxsheng</B></FONT></A>、<A name=10293><FONT color=#000066><B>HuaiYu</B></FONT></A>大侠。已经OK了。 <P>汗,函数写错了.态度还是不够严谨的啊, test 的时候确实是 test 错了。见笑了....</P>
页:
[1]