明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: lxyufo

[求助]各位大侠,怎样将CAD中明细表的内容导出倒文本文件那??

  [复制链接]
 楼主| 发表于 2003-4-4 13:34 | 显示全部楼层

求助 msflying兄说的对 序号 不是空的 , 只是 后面的有可能 为 空。我等你的消

求助   msflying兄说的对  序号 不是空的 , 只是 后面的有可能 为 空。我等你的消息咯[br]
发表于 2003-4-4 15:59 | 显示全部楼层

文件上传

不需要知道列数,不需要知道行数,也不须知道距离,只要你的内容不是太奇怪,就可以用了,内容可以为空。空则显示一个空格" ",但要保证第一列和第一行必须没有空(最左边一列和最下一行),否则内容会不全。现在的选择方法为从左下角选到右上角。如有什么要求,再说。
返回一个行X列的列表:((cell11 cell12 cell13...) (cell21 cell22 cell23...)...)

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-4-5 11:07 | 显示全部楼层

谢谢 msflying兄 有问题在向你请教!!

 楼主| 发表于 2003-4-6 08:39 | 显示全部楼层

求助msflying兄,能不能第一行的某个位置为空那,我想了好久也没有突破,又来向你请

求助msflying兄,能不能第一行的某个位置为空那,我想了好久也没有突破,又来向你请教了[br]
发表于 2003-4-8 09:37 | 显示全部楼层

这个不要下

由于时间问题,就只做了针对你列间距固定为80的自定义,用时选择自定义,如果第一行不为空,选择自动也可以。
发表于 2003-4-8 10:04 | 显示全部楼层

再试试

由于时间问题,就只做了针对你列间距固定为80的自定义,用时选择自定义,如果第一行不为空,选择自动也可以。
将PICK_to_cadlib放到CAD搜索目录,再pick_to_cad中第一行将全路径去掉,或写上正确的全路径

本帖子中包含更多资源

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

x
发表于 2003-4-8 20:44 | 显示全部楼层

试试

本帖子中包含更多资源

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

x
发表于 2003-4-12 14:32 | 显示全部楼层

将CAD中明细表的内容导出为文本文件

;;;本程序应以database.lsp命名
(defun EXTERNALDATA (/ datafile listitem)
  (setq        datafile (getfiled "打开文件"
                           (strcat path_F "extractdata//")
                           "txt"
                           8
                 )
  )
  (setq datafile (open datafile "r"))
  (setq listitem (read-line datafile))
  (start_list "Referlist" 2)
  (while (/= listitem nil)
    (add_list listitem)
    (setq listitem (read-line datafile))
  )
  (end_list)
  (close datafile)
)

(defun DBASEDIA_ID (/ DBASEDIA_ID do_what)
  (setq DBASEDIA_ID (load_dialog (strcat path_F "database.dcl")))

  (if (> DBASEDIA_ID 0)
    (progn
      (setq do_what 4)
      (while (> do_what 1)
        (if (new_dialog "database" DBASEDIA_ID)
            (action_tile "b_externaldata" "(EXTERNALDATA)")
            (action_tile "edb_Type" "(setq oftype $value)")
            (set_tile "DWGNAME" (strcat (getvar "DWGPREFIX") DWGNAME))
            (set_tile "DWGNO" DWGNO)
            (action_tile
              "scale_val"
              (strcat
                "(progn"
                "(setq scale_valuetmp $value)"
                                ")"
              )
            )
            (action_tile "typ_list" "(setq typlist (atoi $value))")
            (action_tile "database_pick" "(done_dialog 3)")
            (action_tile "database_ok" "(done_dialog 1)")
            (setq do_what (start_dialog))
            (cond
              (
               (= do_what 3)
               (progn
                 (setq p0 (getpoint "请选择开始点:"))
               )
              )
            )
          )
          (setq do_what 0)
        )
        (unload_dialog DBASEDIA_ID)

      )
    )
  )

)

(defun SELE_TYPE ()
  (cond
    ((= typlist 0)
     (setq oftype "*"
           MyList "list"
     )
    )
    ((= typlist 1)
     (setq oftype "阀"
           MyList "valve"
     )
    )
    ((= typlist 2)
     (setq oftype "法兰"
           MyList "flange"
     )
    )
    ((= typlist 3)
     (setq oftype "管"
           MyList "pipe"
     )
    )
    ((= typlist 4)
     (setq oftype "座"
           MyList "support"
     )
    )
    ((= typlist 5)
     (setq oftype "接头"
           MyList "joint"
     )
    )
    ((= typlist 6)
     (setq oftype "三通"
           MyList "Tvalve"
     )
    )
    ((= typlist 7)
     (setq oftype "弯头"
           MyList "bendedpipe"
     )
    )
  )
)

(defun DBASE_LIST ()
  (start_list "typ_list" 2)
  (add_list "全部")
  (add_list "阀")
  (add_list "法兰")
  (add_list "管")
  (add_list "座")
  (add_list "接头")
  (add_list "三通")
  (add_list "弯头")
  (end_list)
)

(defun C:DBASE (/           p0              p1         cancel_rea s0
                s1           s2              s3         s4            s5
                s6           s7              ID         ITEM            DRAWING_NO
                NAME           MATERIAL   NUMBER         SGL_WEIGHT GBL_WEIGHT
                ATTNOTE           var_SS     var_TEXT         var_P0            var_P1
                DWGNAME           DWGNO      len_DWGNAME            num_ITEM
                typlist           oftype     MyList         var_Filenum
                var_File   path_F     len_path         LUNITS            LUPREC
                DH           scale_valuetmp         str_Scale
               )
;;;  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 1)
  (setq LUNITS (getvar "LUNITS"))
  (setq LUPREC (getvar "LUPREC"))
  (setvar "LUNITS" 2)
  (setvar "LUPREC" 4)
  (setq path_F (findfile "database.lsp"))
  (setq len_path (strlen path_F))
  (setq path_F (substr path_F 1 (- len_path (strlen "database.lsp"))))
  (setq DWGNAME (getvar "DWGNAME"))
  (setq DH (getreal "\n请输入明细表行间距: "))
  (setq len_DWGNAME (strlen DWGNAME))

  (setq        DWGNO
         (strcat
           "LISP"
           "-"
           (substr DWGNAME 1 3)
           "-"
           (substr DWGNAME 4 3)
         )
  )
  (if (>= len_DWGNAME 14)
    (setq DWGNO
           (strcat
             DWGNO
             "-"
             (substr DWGNAME 10 (- len_DWGNAME 13))
           )
    )
  )
  (setq scale_value (read scale_valuetmp))

  (if (>= scale_value 1)
    (setq str_Scale (strcat "1:" (rtos scale_value 2 0)))
    (setq str_Scale (strcat (rtos (/ 1 scale_value) 2 0) ":1"))
  )
  (setvar "MODEMACRO" DWGNO)
  (DBASEDIA_ID)
  (if (/= cancel_rea 1)
    (progn
      (setvar "CMDDIA" 0)
      (SELE_TYPE)
       (if (>= scale_value 1)
        (setq str_Scale (strcat "1:" (rtos scale_value 2 0)))
        (setq str_Scale (strcat (rtos (/ 1 scale_value) 2 0) ":1"))
      )
      (if (= nil varFilenum)

        (progn
          (setq        varFilenum
                 (getfiled
                   "请选择明细表文件"
                   (strcat path_F "extractdata\\")
                   "txt"
                   1
                 )
          )
                    )
        )
      )
      (CREATEFILE varFilenum)
      (setq num_ITEM 0)
      (setq SYS_ID (substr DWGNAME 1 3))
      (setq ID (strcat (substr DWGNAME 1 3) (rtos num_ITEM 2 0)))
      (setq p1 (polar p0 (* 0.5 pi) (* scale_value DH)))
      (GETITEM)
      (REPEATWRITE)
      (initget 1 "Yes No")
      (setq kwd (getkword "\n本图明细表完整了吗(Yes或No)? "))
      (if (= kwd "No")
        (progn
          (setq p0 (getpoint "请选择开始点:"))
          (setq p1 (polar p0 (* 0.5 pi) (* scale_value DH)))
          (GETITEM)
          (REPEATWRITE)
        )
      )
;;;      (command "zoom" "p")
    )
  )
  (setvar "LUNITS" LUNITS)
  (setvar "LUPREC" LUPREC)
  (setvar "CMDDIA" 1)
  (setvar "CMDECHO" 1)
)

(defun GETITEM ()
  (setq ITEM (EXTRACT 8 0))
  (setq DRAWING_NO (EXTRACT 43 8))
  (setq NAME (EXTRACT 103 43))
  (setq MATERIAL (EXTRACT 123 103))
  (setq NUMBER (EXTRACT 133 123))
  (setq SGL_WEIGHT (EXTRACT 144.5 133))
  (setq GBL_WEIGHT (EXTRACT 156 144.5))
  (setq ATTNOTE (EXTRACT 180 156))


)
(defun REPEATWRITE ()
  (while
    (or
      (/= ITEM "")
      (/= DRAWING_NO "")
      (/= NAME "")
      (/= MATERIAL "")
      (/= NUMBER "")
      (/= SGL_WEIGHT "")
      (/= GBL_WEIGHT "")
      (/= ATTNOTE "")
    )
     (setq ITEM (EXTRACT 8 0))
     (setq DRAWING_NO (EXTRACT 43 8))
     (setq NAME (EXTRACT 103 43))
     (setq MATERIAL (EXTRACT 123 103))
     (setq NUMBER (EXTRACT 133 123))
     (setq SGL_WEIGHT (EXTRACT 144.5 133))
     (setq GBL_WEIGHT (EXTRACT 156 144.5))
     (setq ATTNOTE (EXTRACT 180 156))
     (if
       (OR
         (wcmatch ITEM (strcat "*" oftype "*"))
         (wcmatch DRAWING_NO (strcat "*" oftype "*"))
         (wcmatch NAME (strcat "*" oftype "*"))
         (wcmatch MATERIAL (strcat "*" oftype "*"))
         (wcmatch NUMBER (strcat "*" oftype "*"))
         (wcmatch SGL_WEIGHT (strcat "*" oftype "*"))
         (wcmatch GBL_WEIGHT (strcat "*" oftype "*"))
         (wcmatch ATTNOTE (strcat "*" oftype "*"))

       )
        (if
          (or (not (and (wcmatch NAME "*接头*") (= oftype "管")))
              (not (and (wcmatch NAME "*电磁阀*") (= oftype "三通")))
          )
           (progn
             (APPENDFILE varFilenum)
             (setq num_ITEM (+ num_ITEM 1))
           )
        )
     )
     (setq p0 p1)
     (setq p1 (polar p0 (* 0.5 pi) (* scale_value DH)))
  )

)

(defun CREATEFILE (Fn / f_open)
  (setq f_open (open Fn "a"))
  (write-line " " f_open)
  (write-line (strcat DWGNAME "    " DWGNO) f_open)

  (write-line
    (strcat
      "序号"        "        " "图号或标准号"      "        "        "名称"
      "        "        "材料"          "        "   "数量"    "        "        "单重"
      "        "        "总重"          "        "   "附注"
     )
    f_open
  )
  (close f_open)
)

(defun APPENDFILE (Fn / f_open)
  (setq f_open (open Fn "a"))
  (write-line
    (strcat
      ITEM
      "        "
      DRAWING_NO
      "        "
      (STRINGFUN (STRINGFUN NAME))
      "        "
      MATERIAL
      "        "
      NUMBER
      "        "
      SGL_WEIGHT
      "        "
      GBL_WEIGHT
      "        "
      ATTNOTE
    )
    f_open
  )
  (close f_open)
  (princ (strcat
           "\n"
           ITEM
           "\t"
           DRAWING_NO
           "\t"
           (STRINGFUN (STRINGFUN NAME))
           "\t"
           MATERIAL
           "\t"
           NUMBER
           "\t"
           SGL_WEIGHT
           "\t"
           GBL_WEIGHT
           "\t"
           ATTNOTE
         )
  )
)

(defun EXTRACT (DIS0 DIS1 / var_SS var_tmpText var_TEXT tmpInsX tmpTxt)

  (if
    (/=
      (setq var_SS
             (ssget "w"
                    (polar p1 0 (* scale_value DIS1))
                    (polar p0 0 (* scale_value DIS0))
             )
      )
      nil
    )
     (progn
       (setq intN 0)
       (setq intM 0)
       (while (< intM (sslength var_SS))
         (if
           (or
             (= (cdr (assoc 0 (entget (ssname var_SS intM)))) "TEXT")
             (= (cdr (assoc 0 (entget (ssname var_SS intM)))) "MTEXT")
           )
            (progn
              (set (read (strcat "varInsX[" (rtos intN) "]"))
                   (cadr (assoc 10 (entget (ssname var_SS intM))))
              )

              (set (read (strcat "varText[" (rtos intN) "]"))
                   (cdr (assoc 1 (entget (ssname var_SS intM))))
              )

              (setq intN (+ intN 1))

            )
         )
         (setq intM (+ intM 1))

       )
       (if (>= intN 1)
         (progn
           (setq i intN)
           (setq k 0)
           (while (> i 1)
             (setq j 0)
             (while (< j (- i 1))
               (if
                 (> (eval (read (strcat "varInsX[" (rtos j) "]")))
                    (eval
                      (read (strcat "varInsX[" (rtos (+ j 1)) "]"))
                    )
                 )
                  (progn

                    (setq tmpInsX
                           (eval (read (strcat "varInsX[" (rtos j) "]")))
                    )
                    (setq
                      tmpTxt
                       (eval (read (strcat "varText[" (rtos j) "]")))
                    )
                    (set
                      (read (strcat "varInsX[" (rtos j) "]"))
                      (eval
                        (read (strcat "varInsx[" (rtos (+ j 1)) "]"))
                      )
                    )
                    (set
                      (read (strcat "varText[" (rtos j) "]"))
                      (eval
                        (read (strcat "varText[" (rtos (+ j 1)) "]"))
                      )
                    )

                    (set
                      (read (strcat "varInsX[" (rtos (+ j 1)) "]"))
                      tmpInsX
                    )
                    (set
                      (read (strcat "varText[" (rtos (+ j 1)) "]"))
                      tmpTxt
                    )

                  )
               )
               (setq j (+ j 1))

             )
             (setq i (- i 1))
           )
           (setq i 0)
           (setq var_TEXT "")
           (while (< i intN)
             (setq var_TEXT
                    (strcat var_TEXT
                            (eval (read (strcat "varText[" (rtos i))))
                    )
             )
             (setq i (+ i 1))

           )
         )
         (setq var_TEXT varTEXT[0])
       )
     )
     (setq var_TEXT "")
  )
  (setq var_TEXT (STRINGFUN var_TEXT))
)


(defun STRINGFUN (varStrings /                lenStrings lenString
                  strString  strA        strB           strC
                  intII
                 )
  (if (or
        (wcmatch varStrings "*%%216*")
        (wcmatch varStrings "*%%[cCdDpP]*")
      )
    (progn
      (setq lenStrings (strlen varStrings))
      (cond
        ((wcmatch varStrings "*%%216*")
         (setq strString "%%216"
               strSymbol "δ"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%c*")
         (setq strString "%%c"
               strSymbol "φ"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%C*")
         (setq strString "%%C"
               strSymbol "φ"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%D*")
         (setq strString "%%D"
               strSymbol "°"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%d*")
         (setq strString "%%d"
               strSymbol "°"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%p*")
         (setq strString "%%p"
               strSymbol "±"
               lenString (strlen strString)
         )
        )
        ((wcmatch varStrings "*%%P*")
         (setq strString "%%P"
               strSymbol "±"
               lenString (strlen strString)
         )
        )
      )
      (if (wcmatch varStrings (strcat "*" strString "*"))
                                        ;strString =%%216、%%C、%%D、%%P
                                        ;strSymbol =δ、φ、°、±
        (progn
          (setq intII 1)
          (setq strB (substr varStrings intII (strlen strString)))
          (while (/= strB strString)
            (setq intII (+ intII 1))
            (setq strB (substr varStrings intII (strlen strString)))
          )
          (if (> intII 2)
            (setq
              strA (substr varStrings
                           1
                           (- intII 1)
                   )
            )
          )
          (if (< intII (strlen varStrings))
            (setq strC (substr varStrings (+ intII (strlen strString))))
          )
                                        ;(setq strB strSymbol)
          (if (or (= nil strA) (= nil strC))
            (progn
              (if (= nil strA)
                (setq varStrings (strcat strSymbol strC))
              )
              (if (= nil strC)
                (setq varStrings (strcat strA strSymbol))
              )

              (if (and (= nil strA) (= nil strC))
                (setq varStrings strSymbol)
              )
            )
            (setq varStrings (strcat strA strSymbol strC))

          )
        )
      )
    )
  )
  (setq varStrings varStrings)
)

;;; 下面是对话框database.dcl
database:dialog
{
        label="明细表操作";
          :list_box
        {
         label="明细表列表";
         height=10;
         tabs="8 35 75 85 90 100 110";
         fixed_height=true;
         width=140;
         fixed_width=true;
         key="Referlist";
        }
        :boxed_row
        {
                label="零部件/设备类型";
                :list_box
                {
                        width=15;
                        fixed_width=true;
                        fixed_height=true;
                        key="typ_list";
                }
                :column
                {
                        height=3;fixed_height=true;alignment=top;
                        :text
                        {
                                label="输入类型";
                        }
                        :edit_box
                        {
                                key="edb_Type";
                        }
                        :edit_box
                        {
                                label="图名";
                                key="DWGNAME";
                        }
                        :edit_box
                        {
                                label="图号";
                                key="DWGNO";
                        }
                }
        }
        :row
        {
                fixed_width=true;alignment=centered;
                :button
                {
                        label="选点<&";
                        fixed_width=true;
                        key="database_pick";
                        is_default=true;
                }
                :edit_box
                {
                        label="比例";
                        fixed_width=true;
                        value=1;
                        key="scale_val";
                }
        }
        :row
        {
                fixed_width=true;alignment=centered;
                :button
                {
                        label="确定";
                        fixed_width=true;
                        alignment=left;
                        key="jn_ok";
                        action="(setq database_rea $reason)";
                }
                :button
                {
                        label="打开文件";
                        fixed_width=true;
                        alignment=right;
                        key="b_externaldata";
                }
                :button
                {
                        label="取消";
                        fixed_width=true;
                        alignment=right;
                        is_cancel=true;
                        action="(setq cancel_rea $reason)";
                }
        }
}
发表于 2012-3-9 22:35 | 显示全部楼层
学习了 非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 09:41 , Processed in 0.274386 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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