找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 784|回复: 5

[1123]请教如何撷取图层资料输出到TXT档案中呢?

[复制链接]
发表于 2005-11-23 11:26:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[1123]请教如何撷取图层资料输出到TXT档案中呢?
请问各位高手们
如何才能够将图层中的,图层名称.图层颜色.图层笔号.这些资料
输出到TXT档案,且也可以透过这方式,
在回传输入到CAD档案中的图层.

小弟查到应该是要运用以下这些命令
但不是全部
(setq dat_file (getfiled "输出资料档案" "c:\\test" "txt" 1))
(setq ff (open dat_file "w"))
(write-line "图层名称 线型名称 颜色编号" ff)
(write-line (strcat "\n<" (layna) (comm) (colornu) ) ff)
  (close ff)
)

(tblnext "layer")
;配合符号表的群码2 图层名称62 颜色编号6 线型名称

目前遇到问题是,如何才能够执行重复的图层名称判断
及输出栏位资料的位置该怎样控制

如果论坛有相似的文章,或是范例
请各位告知,就可以去参考一下了
希望各位帮忙解答一下
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-23 11:51:18 | 显示全部楼层
最简单的方法是ASCII的DXF文件,只是你必须了解DXF文件结构和DXF组码!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-23 12:52:06 | 显示全部楼层
那想请问这程式的开头要怎么写呢
因为dxf的资料有提供不选取就读取整张图面资料的代码吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-23 14:27:17 | 显示全部楼层
以下是找到的一个程式,应该可以完成输入的程序
程序中使用entmake产生layer会有茫点
就是如果layer已存在它是不会改变的
线型颜色等设定不会依你的设定,这问题有办法解决吗?

程序内容如下:
(defun c:tslisp01 ( / data ff)
  (setvar "cmdecho" 0)
  (setq FF (open "c:\\LayerData.txt" "r"))
  (setq DATA (read-line FF))
  (while (/= DATA nil)
    (setq DATA (read DATA))
    (if (= (type DATA) 'LIST)
      (progn
(entmake (list '(0 . "layer")
                       '(100 . "AcDbSymbolTableRecord")
                       '(100 . "AcDbLayerTableRecord")
                        (cons 2 (nth 0 DATA))
                       '(70 . 0)
                        (cons 62 (nth 2 DATA))
                        (cons 6 (nth 1 DATA))
                 )
        )
      )
    )  
    (setq DATA (read-line FF))
  )
  (close FF)
(prin1)
)

;LayerData.txt档内容如下
图层名称  线型          颜色
("0"      "CONTINUOUS"   7)
("1"      "CONTINUOUS"   1)
("2"      "CONTINUOUS"   2)
("3"      "CONTINUOUS"   3)
end
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-1 08:13:54 | 显示全部楼层
感谢楼主的解答
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-5 21:45:36 | 显示全部楼层
网上找的,试过一次,只能导出,不能导入,就没再用!


  1. ;;; Layer list
  2. ;;;
  3. ;;; By Jimmy Bergmark
  4. ;;; Copyright (C) 1997-2005 JTB World, All Rights Reserved
  5. ;;; Website: [url]www.jtbworld.com[/url]
  6. ;;; E-mail: [email]info@jtbworld.com[/email]
  7. ;;; 2000-03-15
  8. ;;;
  9. ;;; c:llfp <LayerListFilePrint>
  10. ;;; Save the layer list to a file, (can be imported to Excel)
  11. ;;;
  12. ;;; Example: (ax:layer-list)
  13. ;;; Return values: list of layers and all layerstates
  14. ;;;    (<Layer Name> <On/Off> <Frozen/Thawed> <Locked/Not locked> <Color> <Linetype>
  15. ;;;        <Lineweight> <Plotstylename> <Plottable/Not plottable> <Viewportdefault=Frozen/Not frozen>)
  16. (defun ax:layer-list (/ lst layer colors color lw)
  17.   (setq colors '("Red" "Yellow" "Green" "Cyan" "Blue" "Magenta" "White"))
  18.   (vlax-for layer (vla-get-Layers
  19.                     (vla-get-ActiveDocument
  20.                       (vlax-get-acad-object)
  21.                     )
  22.                   )
  23.     (setq color (vla-get-color layer))
  24.     (if (< color 8) (setq color (nth (1- color) colors)) (setq color (itoa color)))
  25.     (setq lw (vla-get-lineweight layer))
  26.     (if (= lw -3) (setq lw "Default") (setq lw (rtos (/ lw 100.0) 2 2)))
  27.     (setq lst (cons
  28.                 (list
  29.                   (vla-get-name layer)
  30.                   (if (= (vla-get-layeron layer) :vlax-true) "On" "Off")
  31.                   (if (= (vla-get-freeze layer) :vlax-true) "Frozen" "Thawed")
  32.                   (if (= (vla-get-lock layer) :vlax-true) "Locked" "Not locked")
  33.                   color
  34.                   (vla-get-linetype layer)
  35.                   lw
  36.                   (vla-get-plotstylename layer)
  37.                   (if (= (vla-get-plottable layer) :vlax-true) "Plottable" "Not plottable")
  38.                   (if (= (vla-get-viewportdefault layer) :vlax-true) "Frozen" "Not frozen")
  39.                 ) lst))
  40.   )
  41.   (vl-sort lst
  42.            (function (lambda (e1 e2)
  43.                        (< (strcase (car e1)) (strcase (car e2)))
  44.                      )
  45.            )
  46.   )
  47. )

  48. ;;; Writes layer list to specified file
  49. ;;; (layer-list-fprint "test.txt")
  50. ;;; return: T if file was created, else nil
  51. (defun layer-list-fprint (fn / f row col)
  52.   (if (setq f (open fn "w"))
  53.     (progn
  54.       ; print header
  55.       (princ ""Layer Name" "On" "Frozen" "Locked" " f)
  56.       (princ ""Color" "Linetype" "Lineweight" "Plotstylename" " f)
  57.       (princ ""Plottable" "Viewportdefault"\n" f)
  58.       (foreach row (ax:layer-list)
  59.         (foreach col row
  60.           (prin1 col f)
  61.           (princ " " f) ; for tabulated (princ "\t" f)
  62.         )
  63.         (princ "\n" f)
  64.       )
  65.       (close f)
  66.       T
  67.     )
  68.     nil
  69.   )
  70. )

  71. (defun c:llfp (/ fn)
  72.   (if (setq fn
  73.              (getfiled "Save layer list as"
  74.                        (strcat (vl-filename-base (getvar "dwgname")) ".txt")
  75.                        "txt"
  76.                        1
  77.              )
  78.       )
  79.     (if (layer-list-fprint fn)
  80.       (princ "\nLayer list created.")
  81.       (princ "\nError: Layer list not created!")
  82.     )
  83.   )
  84.   (princ)
  85. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-20 22:34 , Processed in 0.412811 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表