明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2757|回复: 4

[讨论] 我的技术说明词库

[复制链接]
发表于 2015-1-20 23:22:29 | 显示全部楼层 |阅读模式
本帖最后由 pannelchen 于 2015-1-22 23:13 编辑

由于看了风版主的技术文档库网页,网页地址http://bbs.mjtd.com/thread-92135-1-1.html
想做一个自已的,大家看下,跟风大学的,由于风版 的函数太多,只偷了一点点,其它的还学不来;
主要加了个从其它文件中导入.
另存另存按钮还没有弄,还不会,有知道的可告知下.
其它的慢慢跟据自已所知道的编写,就是不断的读文件写文件.函数不完整,只是让大家看下表的增加,删除,上移,下移我的写法,同大家分享下.
  1. (defun c:multck()
  2.   (vl-load-com)  ;加载支持activex的函数的程序代码.(vlisp部分)
  3.   (setvar "cmdecho" 0)
  4.   (setq lst (sub_readfile))
  5.   
  6.   (dcl_diamultck)
  7. )

  8. (defun dcl_diamultck()
  9.   (setq dcl_id (load_dialog "多行文字词库"))
  10.   (new_dialog "multck" dcl_id)
  11.   (show_list "multck_list" lst)
  12.   (show_list "poplay" (alllay))
  13.   (show_list "popsty" (allsty))
  14.   (action_tile "multck_list" "(sub_cklist $value lst)")
  15.   (action_tile "addbutton" "(addlist)")
  16.   (action_tile "delbutton" "(dellist)")
  17.   (action_tile "upbutton" "(uplist)")
  18.   (action_tile "downbutton" "(downlist)")
  19.   (action_tile "modbutton" "(modlist)")
  20.   (action_tile "getlist" "(done_dialog 1) ")  
  21.   (action_tile "popsty" "(setq textsty (nth (atoi $value ) (allsty)))")
  22.   (action_tile "poplay" "(setq textlay (nth (atoi $value ) (alllay)))")
  23.   (action_tile "accept" "(ok_diamultck) (done_dialog 2)")
  24.   (setq dd(start_dialog))
  25.   (cond
  26.     ((= dd 1)  (sub_getlist))
  27.     ((= dd 2)  (
  28.         ; (sub_write_cad)
  29.         ;(setq inpt(getpoint "插入点:"))
  30.        ; (setq inpt2(getpoint "对角点:"))
  31.        ;  (entmake (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 7 txtsty ) (cons 8 txtlay) (cons 1 data) (cons 10 inpt) (cons 40 txthh)))     
  32.    )
  33.    )
  34.   )  
  35. )  

  36. (defun ok_diamultck()
  37.      (setq lst (sub_readfile))
  38.     (setq txthh(get_tile "txthh")  )
  39. )


  40. ;;重要函数
  41. (defun sub_getlist()
  42.   (setq lst (listfromfile))
  43.   (sub_writedata lst) ;写入temp.ini
  44.   (dcl_diamultck) ;回到对话框
  45. )   
  46.    
  47. (defun show_list(key newlist)  ;字符串转为list
  48.   (start_list key)  ;
  49.   (mapcar 'add_list newlist)
  50.   (end_list)
  51. )

  52. (defun sub_cklist (vvs wordlist)  ;设置key:wordstr初始值
  53.   (set_tile "wordstr" (nth (atoi vvs) wordlist))
  54. )

  55. (defun modlist()
  56.   (setq wordstr (get_tile "wordstr"))
  57.   (setq lst (sub_readfile))
  58.   (setq ffn(open "D:\\cad编程练习\\例子\\词库-多行文字\\TEMP词库.ini"  "w"))
  59.   (setq n (atoi (get_tile "multck_list")))
  60.   (setq k 0)
  61.   (setq data (nth k lst))
  62.   (while  data
  63.       (if (/= k n)
  64.        (write-line data ffn)
  65.        (write-line wordstr ffn)
  66.       )
  67.         (setq k (1+ k))
  68.        (setq data (nth k lst))
  69.     )
  70.     (close ffn)
  71.   (setq lst (sub_readfile))
  72.   (show_list "multck_list" lst)
  73.   (set_tile "multck_list" (itoa n))
  74. )

  75. (defun addlist()
  76.   (setq lst (sub_readfile))
  77.   (setq wordstr (get_tile "wordstr"))
  78.   (if (/= wordstr "")
  79.     (progn
  80.       (setq lst (append lst  (list wordstr) ))
  81.       (sub_writedata lst)
  82.       (show_list "multck_list" lst)
  83.       (setq len (length lst))
  84.       (set_tile "multck_list" (itoa (1- len)))
  85.       )
  86.     (progn
  87.       (alert"所加项目为空值")
  88.       (show_list "multck_list" lst)
  89.     )  
  90.   )
  91.   )
  92.   



  93. (defun dellist()
  94.   (setq lst (sub_readfile))
  95.    (if  (/= lst nil)
  96.      (progn
  97.       (setq n (atoi (get_tile "multck_list")))
  98.       (setq deldata  (nth n lst))
  99.       (setq lst (vl-remove deldata lst))   ;删除表中的元素  ,表中如果项目相同都会删去
  100.       (sub_writedata lst)
  101.       (show_list "multck_list" lst)
  102.       (setq len (length lst))
  103.       (if  (< n (1- len))
  104.       (set_tile "multck_list" (itoa n))
  105.       (set_tile "multck_list" (itoa (1- len)))
  106.         )
  107.       );;progn
  108.     (progn
  109.       (alert"空list")
  110.       (show_list "multck_list" lst)
  111.     )
  112.    
  113.    );if
  114.     )
  115.   


  116. (defun uplist()   ;从零往上移后set)tile为0不成功
  117.   (setq lst (sub_readfile))
  118.   (setq n (atoi (get_tile "multck_list"))) ;得到key值
  119.   (setq mdata (nth n lst))
  120.   (if (>= n 1)
  121.     (progn
  122.       (setq upmdata (nth (- n 1) lst))
  123.       (setq ffn(open "D:\\cad编程练习\\例子\\词库-多行文字\\TEMP词库.ini"  "w"))
  124.       (setq k 0)
  125.       (setq data (nth k lst))
  126.       (while data
  127.       (cond ((= k (- n 1))   (write-line mdata ffn))
  128.             ((= k  n )   (write-line upmdata ffn))
  129.             (t                (write-line data ffn))
  130.       )
  131.        (setq k (1+ k))
  132.        (setq data (nth k lst))
  133.      )
  134.      (close ffn)
  135.      (setq lst (sub_readfile))
  136.      (show_list "multck_list" lst)
  137.      (set_tile "multck_list" (itoa (- n 1)))
  138.     );progn
  139.     (progn
  140.       (alert"上移不了了")
  141.       (show_list "multck_list" lst)
  142.       ;(set_tile "multck_list" 0) ;有错误
  143.     )
  144.   );if
  145.   
  146. )

  147. (defun downlist()
  148.   (setq wordstr (get_tile "wordstr")) ;得到key值
  149.   (setq lst (sub_readfile))
  150.   (setq n (atoi (get_tile "multck_list"))) ;得到key值
  151.   (setq mdata (nth n lst))

  152.   (setq len (length lst))
  153.   (if (< (+ n 1) len)
  154.    (progn
  155.    (setq downmdata (nth (+ n 1) lst))
  156.    (setq ffn(open "D:\\cad编程练习\\例子\\词库-多行文字\\TEMP词库.ini"  "w"))
  157.    (setq k 0)
  158.    (setq data (nth k lst))
  159.      (while   data
  160.        (cond ((= k  n )   (write-line downmdata ffn))
  161.             ((= k (+ n 1))   (write-line mdata ffn))
  162.             (t                (write-line data ffn))
  163.        )
  164.        (setq k (1+ k))
  165.        (setq data (nth k lst))
  166.      )
  167.    (close ffn)  
  168.    (setq lst (sub_readfile))
  169.    (show_list "multck_list" lst)
  170.    (set_tile "multck_list" (itoa (1+ n)))
  171.     );progn
  172.       (progn
  173.       (alert"下移不了了")
  174.       (show_list "multck_list" lst)
  175.       (set_tile "multck_list" (itoa n))
  176.     )  
  177.    )
  178. )

  179. ;; 读取文件并按行将文件转换为表,引用明经;
  180. (defun listfromfile()
  181.    (setq file(getfiled "选择文件" "" "txt" 2))
  182.    (setq fn (open  file "r"))
  183.     (setq  tmplst '())
  184.      (while (setq x (read-line fn))
  185.       (setq tmplst (append tmplst(list x)))  
  186.     )
  187.     (close fn)
  188.      tmplst
  189.     )

  190. ;从ini中读转化为字符串
  191. (defun sub_readfile(/ tmplst x fn);TEMP词库
  192.   (setq pathfile "D:\\cad编程练习\\例子\\词库-多行文字\\TEMP词库.ini")
  193.   (setq file(findfile pathfile))
  194.   (if file
  195.     (progn
  196.       (setq fn (open  file "r"))
  197.       (while (setq x (read-line fn))
  198.         (setq tmplst(append tmplst(list x)))
  199.       )
  200.       (close fn)
  201.       tmplst
  202.     )
  203.      nil
  204.   )
  205. )

  206. ;将字符串写入文本文件 ;引用明经
  207. (defun sub_writedata(lst)
  208. (setq ffn(open "D:\\cad编程练习\\例子\\词库-多行文字\\TEMP词库.ini"  "w")) ;;写模式.
  209.   ;(setq n 0)
  210.   ;(setq data (nth n lst))
  211.   ;(while data
  212.    ; (write-line data ffn)
  213.     ; (setq n (1+ n))
  214.      ; (setq data (nth n lst))
  215.   ;)
  216.   (foreach x lst (write-line x ffn))
  217.   (close ffn);;关闭文件
  218.   )
  219.    
  220. (defun sub_write_cad()
  221.   (setq lst (sub_readfile))
  222.   (setq len (length lst))
  223.   (if lst
  224.     (progn
  225.   (setq n 0 txt "")
  226.   (repeat len
  227.     (setq txt (strcat txt (itoa (1+ n)) "." (nth n lst) "\\P" ))   ;把表转化为字符串,好方法
  228.     (setq n (1+ n))  
  229.   )
  230.   (vl-string-right-trim "\\P" txt) ;从字符串删除结尾字符   
  231.   )
  232.   nil
  233.     )
  234. )
  235. ;;;;vlisp取得所有图层列表.forearch类似,引用书
  236. (defun alllay(/ xobj laylist)
  237.   (setq acadobj (vlax-get-acad-object))
  238.   (setq dwgobj (vla-get-ActiveDocument acadobj))
  239.   (setq layers (vla-get-layers dwgobj));;取得图层集合对象
  240.   (setq laylist nil)
  241.   (vlax-for xobj layers
  242.   (setq layname (vla-get-name xobj))
  243.   (setq laylist (cons layname laylist))
  244.   )
  245.   ;(setq laylist (acad_strlsort laylist))
  246.   (setq laylist (vl-sort laylist '<))
  247. )

  248. ;;;;vlisp取得所有样式列表引用书
  249. (defun allsty(/ xobj stylist)
  250.   (setq acadobj (vlax-get-acad-object))
  251.   (setq dwgobj (vla-get-ActiveDocument acadobj))
  252.   (setq styles (vla-get-textstyles dwgobj));;取得图层集合对象
  253.   (setq stylist nil)
  254.   (vlax-for xobj styles
  255.   (setq styname (vla-get-name xobj))
  256.   (setq stylist (cons styname stylist))
  257.   )
  258.   ;(setq stylist (acad_strlsort stylist))
  259.   (setq stylist (vl-sort stylist '<))
  260. )

  261.    

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

 楼主| 发表于 2015-1-20 23:30:03 | 显示全部楼层
涉及到temp词库.ini的地方,在相应的自已的目录下加个就好了.

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

发表于 2016-10-16 21:41:08 | 显示全部楼层
同求,多年没来,程序遗忘
发表于 2021-3-31 12:35:49 来自手机 | 显示全部楼层
收藏学习了!
发表于 2023-12-19 12:39:05 | 显示全部楼层
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:29 , Processed in 0.166323 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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