正在重生成模型 发表于 2016-3-3 10:50:12

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

本帖最后由 正在重生成模型 于 2016-3-3 10:53 编辑

;      =============================
;      |   词库插入t5               |
;      |                              |
;      =============================
;第一次运行请根据自己需要修改以下内容:
(setq ckml "C:/Users/Administrator/Desktop/" ) ;引号内为词库目录 注意路径为反斜杠“/”
(setq texth 80) ;300为文字高度
;(setq textst "黑体") ;字体
;(setq textlay "PP文本") ;WIRE-照明 为文字图层
;(setq textwh 0.7);0.7为文字宽高比
(setq textsty "0");默认插入文字类型 0为单行文字 1为多行文字


;以下不用修改

(defun c:t5 ()
(setq suoyin "0")
(setq suoyin2 "0")
(setvar "cmdecho" 0)

(defun xsckdhk( );显示词库对话框
       ;(setq tzbl (getvar "HPSCALE" ));天正比例
       (setq en nill)
       (setq mulu (list "" ))
       (setq mulu (vl-directory-files ckml "*.txt" ))
       (setq ml mulu)
       (setq mulu (list mulu))
       (setq fname (vl-filename-mktemp nil nil ".dcl" ))
       (setq filen (open fname "w" ))
       (foreach x '(
                     "dcl_settinsx : default_dcl_settings { audit_level = 3; }"
                  " ck:dialog {"
    "label = \"词库管理\";"
    ":row {"
      ":column {"
            ":list_box {"
                "fixed_width = true;"
                "width = 30;"
                "label = \"词组目录:\";"
                "key = \"2\";"
                "}"
            "}"
      ":column {"
            ":list_box {"
                "fixed_width = true;"
                "width = 60;"
                "label = \"词组内容:\";"
                "key = \"1\";"
                "height = 25;"
                "}"
            "}"
      "}"
    ":boxed_radio_column { "
      "label = \"编辑词库\";"
      ":row {"
            ":edit_box {"
                "allow_accept = true;"
                "height = 1;"
                "width = 45;"
                "key = \"bjk\";"
                "}"
            "}"
      ":row { "
            "children_fixed_width = true;"
            ":button {"
                "fixed_width = true;"
                "width = 28;"
                "label = \"拾取到词库\";"
                "key = \"sq\";"
                "}"
            ":button {"
                "fixed_width = true;"
                "width = 28;"
                "label = \"添加到词库\";"
                "key = \"tj\";"
                "}"
            ":button {"
                "fixed_width = true;"
                "width = 28;"
                "label = \"打开文件\";"
                "key = \"op\";"
                "}"
            "}"
      "}"
    ":row {"
      ":boxed_radio_row {"
            "children_fixed_width = true;"
            "label = \"文字操作\";"
            ":column {"
                ":button {"
                  "fixed_width = true;"
                  "width = 28;"
                  "label = \"标注替换\";"
                  "key = \"bz\";"
                  "}"
                ":button {"
                  "fixed_width = true;"
                  "width = 28;"
                  "label = \"文字替换\";"
                  "key = \"gz\";"
                  "}"
                "}"
            ":column {"
                ":button {"
                  "fixed_width = true;"
                  "width = 28;"
                  "label = \"文字前后缀\";"
                  "key = \"qz\";"
                  "}"
                ":button { "
                  "fixed_width = true;"
                  "width = 28;"
                  "label = \"引线文字\";"
                  "key = \"yx\";"
                  "}"
                "}"
            "}"
      ":boxed_radio_column {"
            "label = \"选择字高\";"
            ":row {"
                ":edit_box {"
                  "}"
                ":popup_list {"
                  "list = \"/n/n10/n20/n30/n40/n50/n60/n70/n80/n90/n100\";"
                  "fixed_height = true;"
                  "height = 3;"
                  "fixed_width = true;"
                  "width = 12;"
                  "}"
                ":spacer {"
                  "}"
                "}"
            ":button {"
                "fixed_width = true;"
                "width = 24;"
                "label = \"插入文字\";"
                "key = \"cr\";"
                "}"
            "}"
      "}"
    "cancel_button ;"
    "}"
            );end ;endlist
            (princ x filen)
            (write-line "" filen)
       );end foreach
       (close filen)
       (setq filen (open fname "r" ))
       (setq dclid (load_dialog fname))
       (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" ))))
       (new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)

         (start_list "1" )
         (if (= lst nil);第一次读取 第一个txt文件内容
                     (progn
                     (setq text_2 (nth 0 ml))
                     (setq file (open (strcat ckml text_2) "r" ))
                     (setq txt_t (read-line file) lst (list "" ))
                     (while (/= txt_t nil)
                            (setq lst (append lst (list txt_t)))
                            (setq txt_t (read-line file))
                     );end while
                     (close file)
                     (setq lsti lst)
                     (setq lst (list (cdr lst)))
         ));end if
       (mapcar 'add_list (car lst))
       (end_list)
      (load_text suoyin 1)
       (start_list "2" )
       (mapcar 'add_list (car mulu))
       (end_list)
      (set_tile "3" textsty)
      (if bjk-txt
      (set_tile "bjk" bjk-txt)
       )
       (action_tile "1" "(new_text $value $reason)" )
       (action_tile "2" "(load_text $value $reason)(setq suoyin2 (itoa 0))")
       (action_tile "3" "(setq textsty $value)")
       (action_tile "4" "(setq textsty $value)") ;;;引线文字
       (action_tile "5" "(setq textsty $value)") ;;;插入文字
       (action_tile "6" "(setq textsty $value)") ;;;前后缀
       (action_tile "7" "(setq textsty $value)") ;;;标注替换

      (action_tile "sq" "(done_dialog 1)")
      (action_tile "op" "(done_dialog 2)")
      (action_tile "gz" "(done_dialog 3)")
      (action_tile "yx" "(done_dialog 4)");;;;引线文字
      (action_tile "cr" "(done_dialog 5)");;;插入文字
      (action_tile "qz" "(done_dialog 6)");;;前后缀
      (action_tile "bz" "(done_dialog 7)");;;标注替换


      (action_tile "bjk" "(setq bjk-txt $value)")
      (action_tile "tj" "(tjwz)")
       (set_tile "2" suoyin);获取焦点
       (set_tile "1" suoyin2)
       (action_tile "cancel" "(done_dialog 0)" )
      (setq re (start_dialog))
       (cond
      ((= re 1) (shiqu))
      ((= re 2) (dkwj))
      ((= re 3) (gtzwz))
      ((= re 4) (yxwz));;;引线文字
      ((= re 5) (crwz));;;引线文字
      ((= re 6) (qzwz));;;前后缀
      ((= re 7) (qhbz));;;标注替换


       )
       (start_dialog)
       (unload_dialog dclid)
       (close filen)
       (vl-file-delete fname)

       (if (/= en nill) ;动态文字
          (progn
          (princ "\n点取位置或[转90度(A)/右键退出]")
          (setq boolean t)
          (setq text-jiaodu 0)
          (while boolean
         (setq motion (grread T 8));grread 函数返回一个表,其中第一个元素说明输入类型的代码,第二个元素既可能是整数,又可能是点
         (setq code (car motion)) ;grread表第一个元素输入类型的代码
         (setq pt2 (cadr motion)) ;grread表第二个元素 拖动模式坐标
         (cond
            ((= code 5)   ;鼠标拖动模式
             (entmod (setq endate (subst (cons 10 pt2) (assoc 10 endate) endate)));动态改文字坐标
            )
            ((= code 3)   ;鼠标左鍵按下
            (setq boolean nil)
            )
            ((= code 11)
             (setq boolean nil)
             (entdel en)
            )
            ((= code 25)
             (setq boolean nil)
             (entdel en)
            )
            ((equal motion '(2 32))
             (setq boolean nil)
            )
            ((equal motion '(2 13))
             (setq boolean nil)
            )
            ((equal motion '(2 27))
             (setq boolean nil)
             (entdel en)
            )
            ((equal motion '(2 65))
             (setq text-jiaodu (+ text-jiaodu (/ pi 2)))
             (entmod (setq endate (subst (cons 50 text-jiaodu) (assoc 50 endate) endate)));动态改文字角度
            )
            ((equal motion '(2 97))
             (setq text-jiaodu (+ text-jiaodu (/ pi 2)))
             (entmod (setq endate (subst (cons 50 text-jiaodu) (assoc 50 endate) endate)));动态改文字角度
            )
         )
          );end while
      ));end if
(princ)
) ;end xsckdhk

(defun load_text (value reason);子函数 提取txt内容
       (if (= reason 1)
            (progn
                     (setq suoyin value)
                     (setq text_2 (nth (atoi value) ml))
                     (setq file (open (strcat ckml text_2) "r" ))
                     (setq txt_t (read-line file) lst (list "" ))
                     (while (/= txt_t nil)
                            (setq lst (append lst (list txt_t)))
                            (setq txt_t (read-line file))
                     );end while
                     (close file)
                     (setq lsti lst)
                     (setq lst (list (cdr lst)))
       ));end if
       (start_list "1" )
       (mapcar 'add_list (car lst))
       (end_list)
      (setq wjm (nth (atoi value) ml))
       (setq filename (strcat ckml wjm))
);end load_text

(defun new_text (value reason / ttlen twid)
       (setq text (nth (1+ (atoi value)) lsti))
       (if (= reason 4)
            (progn
                     (done_dialog 0);关闭对话框
                     (setq pt (cadr (grread 1)));取得光标坐标
                     (if pt
      (if (= textsty "0")
                            (progn
                                 (entmake (list
                                                 '(0 . "TEXT" );单行文字
                                                      (cons 1 text)
                                                      (cons 7 textst)
                                                      (cons 8 textlay)
                                                               (cons 10 pt)
                                                      ;(cons 40 (/ (* tzbl texth) 100))
                                             (cons 40 texth)   
                                                      (cons 41 textwh)                                                   
                                                );end list
                                     );end entmake
                                    (setq en (entlast))
                                    (setq endate (entget (entlast)))
                        )
                            (progn
            (setq ttlen (strlen text))   ;取得文本长度
                                 (setq twid (* (* (* texth 0.7) ttlen) (/ tzbl 100)));计算文本宽度
                                 (entmake (list
                                                 '(0 . "MTEXT" );多行文字
                                                      (cons 100 "AcDbEntity")
                                                      (cons 100 "AcDbMText")
                                                      (cons 1 text)
                                                      (cons 7 textst)
                                                      (cons 8 textlay)
                                                               (cons 10 pt)
                                                      ;(cons 40 (/ (* tzbl texth) 100))
                                             (cons 40 texth)
                                                      (cons 41 twid)                                                
                                                );end list
                                     );end entmake
                                    (setq en (entlast))
                                    (setq endate (entget (entlast)))
                            )
                     )                        
                     );end if
            );end progn
       );end if
      (if (= reason 1)
          (setq suoyin2 value)
      )
);end new_text

;拾取文字
(defun shiqu (/ ent1)
(if (setq ent1 (entsel ))
   (progn
      (setq bjk-txt (cdr (assoc 1 (entget (car ent1)))));文字内容
   (xsckdhk)
))
);end shiqu

;打开文件
(defun dkwj()
   (startapp "notepad" filename)
)

;改图中文字
(defun gtzwz (/ sel i ent ob)
(if (setq sel (ssget '((0 . "TEXT,MTEXT"))))
(progn
(setq i 0)
(repeat (sslength sel)
    (setq ent (ssname sel i))
    (setq ob (vlax-ename->vla-object ent)) ;转换
    (vlax-put-property ob 'TextString text) ;改变text特性
    (setq i (1+ i))
)
))
(princ)
)

;;;;引线文字50%
(defun yxwz ()


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


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

;(command"style""""txt""""""""""")



(command"leader" pause pause "" text "")


(princ)
)
;;;插入文字ok
(defun crwz ()
;(COMMAND "_MTEXT" PAUSE PAUSE text "");;多行文本
(COMMAND "_TEXT" PAUSE TEXTH""TEXT );;单行文本
(princ)
)


;标注替换
(defun qhbz ()

(SSGET)
(COMMAND "DIM" "N"text "P" "" "EXIT" )
(princ)
)


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


(if (= qh nil)(setq qh 2))
(princ "\nselect object:")
(while (setq s (ssget":s"))
(setq str text)
(setq n (sslength s))
(setq k 0 )
(while (< k n)
      (setq name (ssname s k))
      (setq a (entget name))
      (setq t1 (assoc '0 a))
      (setq t1 (cdr t1))
      (if (or (= t1 "TEXT")(= t1 "MTEXT")) (PROGN
      (setq h (assoc '1 a))
(setq hh (cdr h))
      (if (= qh 1)(setqstr1 (strcat str hh)))
(if (/= qh 1)(setq str1 (strcat hh str)))
(setq h1 (cons 1 str1))
      ;(if (= str "") (setq h1 h))
      (setq a (subst h1 h a))
      (entmod a)
      ))
      (setq k (+ k 1))
) )
   (PRINC))





;添加文字到词库
(defun tjwz(/ file)
(if (/= bjk-txt "")
   (progn
   (setq file (open filename "a"))
   (write-line bjk-txt file)
   (close file)
   (load_text suoyin 1) ;刷新文字内容
))
)

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

kozmosovia 发表于 2016-3-3 11:57:25

粗粗看了一下,DCL的定义还有很多问题,好好看看帮助文档把DCL文件写对了再用程序生成DCL。
DCL SETTINGS定义错误
字高的EDITBOX连KEY都没有怎么操作?
SPACER是内定控件,不需要前面加:
。。。

USER2128 发表于 2016-3-3 15:11:49

如果搞成了,不惜为一个好工具!

一般般 发表于 2018-7-3 23:52:30

不要沉
页: [1]
查看完整版本: 那位大神帮看下是什么问题加载不了??(词库插入)