明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1453|回复: 3

[提问] 那位大神帮看下是什么问题加载不了??(词库插入)

[复制链接]
发表于 2016-3-3 10:50:12 | 显示全部楼层 |阅读模式
本帖最后由 正在重生成模型 于 2016-3-3 10:53 编辑
  1. ;        =============================
  2. ;        |     词库插入t5                 |
  3. ;        |                                |
  4. ;        =============================
  5. ;第一次运行请根据自己需要修改以下内容:
  6. (setq ckml "C:/Users/Administrator/Desktop/" ) ;引号内为词库目录 注意路径为反斜杠“/”
  7. (setq texth 80) ;300为文字高度
  8. ;(setq textst "黑体") ;字体
  9. ;(setq textlay "PP文本") ;WIRE-照明 为文字图层
  10. ;(setq textwh 0.7);0.7为文字宽高比
  11. (setq textsty "0");默认插入文字类型 0为单行文字 1为多行文字


  12. ;以下不用修改

  13. (defun c:t5 ()
  14. (setq suoyin "0")
  15. (setq suoyin2 "0")
  16. (setvar "cmdecho" 0)

  17. (defun xsckdhk( );显示词库对话框
  18.        ;(setq tzbl (getvar "HPSCALE" ));天正比例
  19.        (setq en nill)
  20.        (setq mulu (list "" ))
  21.        (setq mulu (vl-directory-files ckml "*.txt" ))
  22.        (setq ml mulu)
  23.        (setq mulu (list mulu))
  24.        (setq fname (vl-filename-mktemp nil nil ".dcl" ))
  25.        (setq filen (open fname "w" ))
  26.        (foreach x '(
  27.                      "  dcl_settinsx : default_dcl_settings { audit_level = 3; }"
  28.                     " ck:dialog {"
  29.     "label = "词库管理";"
  30.     ":row {"
  31.         ":column {"
  32.             ":list_box {"
  33.                 "fixed_width = true;"
  34.                 "width = 30;"
  35.                 "label = "词组目录:";"
  36.                 "key = "2";"
  37.                 "}"
  38.             "}"
  39.         ":column {"
  40.             ":list_box {"
  41.                 "fixed_width = true;"
  42.                 "width = 60;"
  43.                 "label = "词组内容:";"
  44.                 "key = "1";"
  45.                 "height = 25;"
  46.                 "}"
  47.             "}"
  48.         "}"
  49.     ":boxed_radio_column { "
  50.         "label = "编辑词库";"
  51.         ":row {"
  52.             ":edit_box {"
  53.                 "allow_accept = true;"
  54.                 "height = 1;"
  55.                 "width = 45;"
  56.                 "key = "bjk";"
  57.                 "}"
  58.             "}"
  59.         ":row { "
  60.             "children_fixed_width = true;"
  61.             ":button {"
  62.                 "fixed_width = true;"
  63.                 "width = 28;"
  64.                 "label = "拾取到词库";"
  65.                 "key = "sq";"
  66.                 "}"
  67.             ":button {"
  68.                 "fixed_width = true;"
  69.                 "width = 28;"
  70.                 "label = "添加到词库";"
  71.                 "key = "tj";"
  72.                 "}"
  73.             ":button {"
  74.                 "fixed_width = true;"
  75.                 "width = 28;"
  76.                 "label = "打开文件";"
  77.                 "key = "op";"
  78.                 "}"
  79.             "}"
  80.         "}"
  81.     ":row {"
  82.         ":boxed_radio_row {"
  83.             "children_fixed_width = true;"
  84.             "label = "文字操作";"
  85.             ":column {"
  86.                 ":button {"
  87.                     "fixed_width = true;"
  88.                     "width = 28;"
  89.                     "label = "标注替换";"
  90.                     "key = "bz";"
  91.                     "}"
  92.                 ":button {"
  93.                     "fixed_width = true;"
  94.                     "width = 28;"
  95.                     "label = "文字替换";"
  96.                     "key = "gz";"
  97.                     "}"
  98.                 "}"
  99.             ":column {"
  100.                 ":button {"
  101.                     "fixed_width = true;"
  102.                     "width = 28;"
  103.                     "label = "文字前后缀";"
  104.                     "key = "qz";"
  105.                     "}"
  106.                 ":button { "
  107.                     "fixed_width = true;"
  108.                     "width = 28;"
  109.                     "label = "引线文字";"
  110.                     "key = "yx";"
  111.                     "}"
  112.                 "}"
  113.             "}"
  114.         ":boxed_radio_column {"
  115.             "label = "选择字高";"
  116.             ":row {"
  117.                 ":edit_box {"
  118.                     "}"
  119.                 ":popup_list {"
  120.                     "list = "/n/n10/n20/n30/n40/n50/n60/n70/n80/n90/n100";"
  121.                     "fixed_height = true;"
  122.                     "height = 3;"
  123.                     "fixed_width = true;"
  124.                     "width = 12;"
  125.                     "}"
  126.                 ":spacer {"
  127.                     "}"
  128.                 "}"
  129.             ":button {"
  130.                 "fixed_width = true;"
  131.                 "width = 24;"
  132.                 "label = "插入文字";"
  133.                 "key = "cr";"
  134.                 "}"
  135.             "}"
  136.         "}"
  137.     "cancel_button ;"
  138.     "}"
  139.               );end ;endlist
  140.               (princ x filen)
  141.               (write-line "" filen)
  142.        );end foreach
  143.        (close filen)
  144.        (setq filen (open fname "r" ))
  145.        (setq dclid (load_dialog fname))
  146.        (while (or (eq (substr (setq lin (vl-string-right-trim "" filen)" (vl-string-left-trim "(write-line "" (read-line filen)))) 1 2) "//" ) (eq (substr lin 1 (vl-string-search " " lin)) "" ) (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog" ))))
  147.        (new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)

  148.          (start_list "1" )
  149.          (if (= lst nil);第一次读取 第一个txt文件内容
  150.                      (progn
  151.                      (setq text_2 (nth 0 ml))
  152.                      (setq file (open (strcat ckml text_2) "r" ))
  153.                      (setq txt_t (read-line file) lst (list "" ))
  154.                      (while (/= txt_t nil)
  155.                             (setq lst (append lst (list txt_t)))
  156.                             (setq txt_t (read-line file))
  157.                      );end while
  158.                      (close file)
  159.                      (setq lsti lst)
  160.                      (setq lst (list (cdr lst)))
  161.          ));end if
  162.        (mapcar 'add_list (car lst))
  163.        (end_list)
  164.       (load_text suoyin 1)
  165.        (start_list "2" )
  166.        (mapcar 'add_list (car mulu))
  167.        (end_list)
  168.       (set_tile "3" textsty)
  169.       (if bjk-txt
  170.         (set_tile "bjk" bjk-txt)
  171.        )
  172.        (action_tile "1" "(new_text $value $reason)" )
  173.        (action_tile "2" "(load_text $value $reason)  (setq suoyin2 (itoa 0))")
  174.        (action_tile "3" "(setq textsty $value)")
  175.        (action_tile "4" "(setq textsty $value)") ;;;引线文字
  176.        (action_tile "5" "(setq textsty $value)") ;;;插入文字
  177.        (action_tile "6" "(setq textsty $value)") ;;;前后缀
  178.        (action_tile "7" "(setq textsty $value)") ;;;标注替换
  179.   
  180.       (action_tile "sq" "(done_dialog 1)")
  181.       (action_tile "op" "(done_dialog 2)")
  182.       (action_tile "gz" "(done_dialog 3)")
  183.       (action_tile "yx" "(done_dialog 4)");;;;引线文字
  184.       (action_tile "cr" "(done_dialog 5)");;;插入文字
  185.       (action_tile "qz" "(done_dialog 6)");;;前后缀
  186.       (action_tile "bz" "(done_dialog 7)");;;标注替换


  187.       (action_tile "bjk" "(setq bjk-txt $value)")
  188.       (action_tile "tj" "(tjwz)")
  189.        (set_tile "2" suoyin);获取焦点
  190.        (set_tile "1" suoyin2)
  191.        (action_tile "cancel" "(done_dialog 0)" )
  192.       (setq re (start_dialog))
  193.        (cond
  194.         ((= re 1) (shiqu))
  195.         ((= re 2) (dkwj))
  196.         ((= re 3) (gtzwz))
  197.         ((= re 4) (yxwz));;;引线文字
  198.         ((= re 5) (crwz));;;引线文字
  199.         ((= re 6) (qzwz));;;前后缀
  200.         ((= re 7) (qhbz));;;标注替换


  201.        )
  202.        (start_dialog)
  203.        (unload_dialog dclid)
  204.        (close filen)
  205.        (vl-file-delete fname)

  206.        (if (/= en nill) ;动态文字
  207.           (progn
  208.           (princ "\n点取位置或[转90度(A)/右键退出]")
  209.           (setq boolean t)
  210.           (setq text-jiaodu 0)
  211.           (while boolean
  212.            (setq motion (grread T 8));grread 函数返回一个表,其中第一个元素说明输入类型的代码,第二个元素既可能是整数,又可能是点
  213.            (setq code (car motion)) ;grread表第一个元素输入类型的代码
  214.            (setq pt2 (cadr motion)) ;grread表第二个元素 拖动模式坐标
  215.            (cond
  216.             ((= code 5)   ;鼠标拖动模式
  217.              (entmod (setq endate (subst (cons 10 pt2) (assoc 10 endate) endate)));动态改文字坐标
  218.             )
  219.             ((= code 3)   ;鼠标左鍵按下
  220.             (setq boolean nil)
  221.             )
  222.             ((= code 11)
  223.              (setq boolean nil)
  224.              (entdel en)
  225.             )
  226.             ((= code 25)
  227.              (setq boolean nil)
  228.              (entdel en)
  229.             )
  230.             ((equal motion '(2 32))
  231.              (setq boolean nil)
  232.             )
  233.             ((equal motion '(2 13))
  234.              (setq boolean nil)
  235.             )
  236.             ((equal motion '(2 27))
  237.              (setq boolean nil)
  238.              (entdel en)
  239.             )
  240.             ((equal motion '(2 65))
  241.              (setq text-jiaodu (+ text-jiaodu (/ pi 2)))
  242.              (entmod (setq endate (subst (cons 50 text-jiaodu) (assoc 50 endate) endate)));动态改文字角度
  243.             )
  244.             ((equal motion '(2 97))
  245.              (setq text-jiaodu (+ text-jiaodu (/ pi 2)))
  246.              (entmod (setq endate (subst (cons 50 text-jiaodu) (assoc 50 endate) endate)));动态改文字角度
  247.             )
  248.            )
  249.           );end while
  250.       ));end if
  251. (princ)
  252. ) ;end xsckdhk

  253. (defun load_text (value reason);子函数 提取txt内容
  254.        (if (= reason 1)
  255.               (progn
  256.                      (setq suoyin value)
  257.                      (setq text_2 (nth (atoi value) ml))
  258.                      (setq file (open (strcat ckml text_2) "r" ))
  259.                      (setq txt_t (read-line file) lst (list "" ))
  260.                      (while (/= txt_t nil)
  261.                             (setq lst (append lst (list txt_t)))
  262.                             (setq txt_t (read-line file))
  263.                      );end while
  264.                      (close file)
  265.                      (setq lsti lst)
  266.                      (setq lst (list (cdr lst)))
  267.        ));end if
  268.        (start_list "1" )
  269.        (mapcar 'add_list (car lst))
  270.        (end_list)
  271.       (setq wjm (nth (atoi value) ml))
  272.        (setq filename (strcat ckml wjm))
  273. );end load_text

  274. (defun new_text (value reason / ttlen twid)
  275.        (setq text (nth (1+ (atoi value)) lsti))
  276.        (if (= reason 4)
  277.               (progn
  278.                      (done_dialog 0);关闭对话框
  279.                      (setq pt (cadr (grread 1)));取得光标坐标
  280.                      (if pt
  281.       (if (= textsty "0")
  282.                             (progn
  283.                                    (entmake (list
  284.                                                  '(0 . "TEXT" );单行文字
  285.                                                       (cons 1 text)
  286.                                                       (cons 7 textst)
  287.                                                       (cons 8 textlay)
  288.                                                                  (cons 10 pt)
  289.                                                       ;(cons 40 (/ (* tzbl texth) 100))
  290.                                                (cons 40 texth)   
  291.                                                       (cons 41 textwh)                                                   
  292.                                                   );end list
  293.                                      );end entmake
  294.                                       (setq en (entlast))
  295.                                       (setq endate (entget (entlast)))
  296.                         )
  297.                             (progn
  298.             (setq ttlen (strlen text))   ;取得文本长度
  299.                                    (setq twid (* (* (* texth 0.7) ttlen) (/ tzbl 100)))  ;计算文本宽度
  300.                                    (entmake (list
  301.                                                  '(0 . "MTEXT" );多行文字
  302.                                                       (cons 100 "AcDbEntity")  
  303.                                                       (cons 100 "AcDbMText")  
  304.                                                       (cons 1 text)
  305.                                                       (cons 7 textst)
  306.                                                       (cons 8 textlay)
  307.                                                                  (cons 10 pt)
  308.                                                       ;(cons 40 (/ (* tzbl texth) 100))
  309.                                                (cons 40 texth)
  310.                                                       (cons 41 twid)                                                
  311.                                                   );end list
  312.                                      );end entmake
  313.                                       (setq en (entlast))
  314.                                       (setq endate (entget (entlast)))
  315.                             )
  316.                        )                        
  317.                      );end if
  318.               );end progn
  319.        );end if
  320.       (if (= reason 1)
  321.           (setq suoyin2 value)
  322.       )
  323. );end new_text

  324. ;拾取文字
  325. (defun shiqu (/ ent1)
  326.   (if (setq ent1 (entsel ))
  327.    (progn
  328.       (setq bjk-txt (cdr (assoc 1 (entget (car ent1)))));文字内容
  329.      (xsckdhk)
  330.   ))
  331. );end shiqu

  332. ;打开文件
  333. (defun dkwj()
  334.    (startapp "notepad" filename)
  335. )

  336. ;改图中文字
  337. (defun gtzwz (/ sel i ent ob)
  338.   (if (setq sel (ssget '((0 . "TEXT,MTEXT"))))
  339.   (progn
  340.   (setq i 0)
  341.   (repeat (sslength sel)
  342.     (setq ent (ssname sel i))
  343.     (setq ob (vlax-ename->vla-object ent)) ;转换
  344.     (vlax-put-property ob 'TextString text) ;改变text特性
  345.     (setq i (1+ i))
  346.   )
  347.   ))
  348. (princ)
  349. )

  350. ;;;;引线文字  50%
  351. (defun yxwz ()


  352. (setq chksty(tblsearch "style" "黑体"))   ;检测字体是否存在
  353. (if (null chksty)  ;如果不存在,则新建字体
  354. (command "_style" "黑体" "SIMHEI.TTF" "0" "1" "0" "N" "N")
  355. )
  356. (setq chklay(tblsearch "layer" "PP文本"))  ;检测图层是否存在
  357. (if (null chklay)  ;如果不存在,则新建图层
  358. (command "_layer" "M" "PP文本" "C" "75" "" "lweight" "0.18" "" )
  359. )
  360. (setvar "clayer" "PP文本")  ;预设目前作图层
  361. (setvar "textstyle" "黑体")  ;预设目前字体


  362. ;(command "style" "黑体" "SIMHEI.TTF" "0" "1" "0" "N" "N")
  363. ;(command "dimtxt"   "2.5"   "dimasz"   "2"      "dimexe"
  364. ;(command "dimtxt"   ""   "dimasz"   "2"      "dimexe"
  365.    ;  ".5"        "dimexo"   "0.5"      "dimgap"   "0.5"
  366.    ;  "dimtoh"   "off"   "dimtih"   "OFF"      "blipmode"
  367.    ;  "0"        "DIMDLI"   "5"      "DIMATFIT" "3"
  368.    ;  "DIMTAD"   "0"   "DIMDEC"   "2"         "DIMTXSTY"
  369.     ; "txt"   "DIMCLRT"   "4"      "DIMJUST"  "0"
  370.     ; "DIMDSEP"  "."   "DIMTOFL"  "0" "dimtmove" "0"
  371.      ;"dimcen" "0" "dimclrd" "6" "dimclre" "4"
  372.    ; )

  373. ;(command"style""""txt""""""""""")



  374. (command  "leader" pause pause "" text ""  )


  375. (princ)
  376. )
  377. ;;;插入文字ok
  378. (defun crwz ()
  379. ;(COMMAND "_MTEXT" PAUSE PAUSE text "");;多行文本
  380. (COMMAND "_TEXT" PAUSE TEXTH  ""  TEXT );;单行文本
  381. (princ)
  382. )


  383. ;标注替换
  384. (defun qhbz ()

  385. (SSGET)
  386. (COMMAND "DIM" "N"  text "P" "" "EXIT" )
  387. (princ)
  388. )


  389. (defun qzwz()
  390.      (setvar "cmdecho" 0) ;指令执行过程不响应
  391.      (PRINC "\n LISAN工具箱---文本加前后缀功能")(PRINC)
  392. (setq qh (getint "\n1--加前缀,2--加后缀,<2>"))


  393. (if (= qh nil)(setq qh 2))
  394. (princ "\nselect object:")
  395. (while (setq s (ssget":s"))
  396. (setq str text)
  397. (setq n (sslength s))
  398. (setq k 0 )
  399. (while (< k n)
  400.       (setq name (ssname s k))
  401.       (setq a (entget name))
  402.       (setq t1 (assoc '0 a))
  403.       (setq t1 (cdr t1))
  404.       (if (or (= t1 "TEXT")(= t1 "MTEXT")) (PROGN
  405.         (setq h (assoc '1 a))
  406.   (setq hh (cdr h))
  407.         (if (= qh 1)(setq  str1 (strcat str hh)))
  408.   (if (/= qh 1)(setq str1 (strcat hh str)))
  409.   (setq h1 (cons 1 str1))
  410.         ;(if (= str "") (setq h1 h))
  411.         (setq a (subst h1 h a))
  412.         (entmod a)
  413.         ))
  414.       (setq k (+ k 1))
  415. ) )
  416.      (PRINC))





  417. ;添加文字到词库
  418. (defun tjwz(/ file)
  419.   (if (/= bjk-txt "")
  420.    (progn
  421.    (setq file (open filename "a"))
  422.    (write-line bjk-txt file)
  423.    (close file)
  424.    (load_text suoyin 1) ;刷新文字内容
  425.   ))
  426. )

  427. (xsckdhk)
  428. (setvar "cmdecho" 1)
  429. (princ)
  430. );end defun
如题;附上代码
         文字字高也使用不了

本帖子中包含更多资源

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

x
发表于 2016-3-3 11:57:25 | 显示全部楼层
粗粗看了一下,DCL的定义还有很多问题,好好看看帮助文档把DCL文件写对了再用程序生成DCL。
DCL SETTINGS定义错误
字高的EDITBOX连KEY都没有怎么操作?
SPACER是内定控件,不需要前面加:
。。。
发表于 2016-3-3 15:11:49 | 显示全部楼层
如果搞成了,不惜为一个好工具!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 13:43 , Processed in 0.212763 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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