找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1167|回复: 4

[教学]:[动画]如何用lsp设置中文大字体

[复制链接]
发表于 2002-6-1 00:40:26 | 显示全部楼层 |阅读模式

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

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

×
下载地址:http://xdsoft.myrice.com/forum/lxx/lesson/bigfontlsp.swf
<center>
<embed src="http://xdsoft.myrice.com/forum/lxx/lesson/bigfontlsp.swf " quality=high width=800 height=600 loop=true type="application/x-shockwave-flash">
</embed>
</center>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-6-1 03:28:43 | 显示全部楼层
跟一贴,设置shx文件字体:
(command "_.style" "fs" "txt,hztxt" "" "" "" "")(command)
注意:shx文件名后是四个回车,然后以“(command)”结束,解决有些大字体文件不支持竖排的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-6-1 06:04:32 | 显示全部楼层
汉字大字体文件格式不同,有些支持竖排文本,有些不支持(如Hzwb.shx),在使用时需要输入的数量不同,会给Lisp程序运行带来影响,常规解决的办法就是在执行过程中中断(用“(command)”,可解决大多情况,但2002后有些命令不行了)。上面我的帖子有一个错:shx文件名后应是五个回车。

比较好的解决方法应该是用“(entmake)”,以下一段程序可供参考:

  1. ;;; This routine will create a layer with any name you type:
  2. (defun c:mlay ()                        ; by Reinaldo Togores <rtogores@mundivia.es>
  3.   (setq laynam (getstring "\nLayer name: "))
  4.   (entmake
  5.     (list
  6.       '(0 . "LAYER")
  7.       '(5 . "28")
  8.       '(100 . "AcDbSymbolTableRecord")
  9.       '(100 . "AcDbLayerTableRecord")
  10.       (cons 2 laynam)
  11.       '(70 . 64)
  12.       '(62 . 7)
  13.       '(6 . "CONTINUOUS")
  14.     )
  15.   )
  16. )

  17. (defun c:msty ()
  18.   (setq stynam (getstring "\nStyle name: "))
  19.   (entmake
  20.     (list
  21.       '(0 . "STYLE")
  22.       '(5 . "28")
  23.       '(100 . "AcDbSymbolTableRecord")
  24.       '(100 . "AcDbTextStyleTableRecord")
  25.       (cons 2 stynam)
  26.       '(70 . 0)
  27.       '(40 . 0.0)
  28.       '(41 . 0.6)
  29.       '(50 . 0.161799)
  30.       '(71 . 0)
  31.       '(42 . 3.0)
  32.       '(3 . "romans.shx")
  33.       '(4 . "hxtxt.shx")
  34.     )
  35.   )
  36. )

注意:
1.100组必须有,照抄即可。
2.不要混淆STYLE组码与TEXT组码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2002-6-4 06:08:26 | 显示全部楼层
最初由 ll_j 发布
[B]汉字大字体文件格式不同,有些支持竖排文本,有些不支持(如Hzwb.shx),在使用时需要输入的数量不同,会给Lisp程序运行带来影响,常规解决的办法就是在执行过程中中断(用“(command)”,可解决大多情况,但2002后?.. [/B]

我早就试过这种方法,并在我发的第一帖中就说了这个问题.
我认为这样做应该是可行的,但问题是你设置的字体是数据表,并不是一个实体,故用ENTMAKE或ENTMOD都不行,(实际使用调试时就出错,通不过),我想问的是有没有其他的函数或方法能解决问题.即能让程序自动运行,不用人干扰.
UNDERSTAND?
OK!
下附通不过的程序:
(cond
     (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.

     (  (not (findfile "ai_utils.lsp"))                     ; find it
        (ai_abort "DDMODIFY"
                  (strcat "Can't locate file AI_UTILS.LSP."
                          "\n Check support directory.")))

     (  (eq "failed" (load "ai_utils" "failed"))            ; load it
        (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP"))
  )

(defun B_TECHNOLOGY_CHAMFER_LIST_BEGIN;建立数据表
  (
  /
  )
  (setq B_technology_chamfer_list
        '(0.2 0.3 0.5 0.8 1 2 3 4 5 8 10 15 20 30 40 50
         )
  )
);end-B_TECHNOLOGY_CHAMFER_LIST_BEGIN

(defun B_TECHNOLOGY_DIMENSION_LIST_BEGIN;建立数据表
  (
  /
  )
  (setq B_technology_dimension_list
        '(9 10 11 12 13 14 15 16
         )
  )
);end-B_TECHNOLOGY_DIMENSION_LIST_BEGIN

(defun B_TECHNOLOGY_DIMSHAPE_LIST_BEGIN;建立数据表
  (
  /
  )
  (setq B_technology_dimshape_list
        '("H " "K" "L"
         )
  )
);end-B_TECHNOLOGY_DIMSHAPE_LIST_BEGIN

(defun B_TECHNOLOGY_DIMANGLE_LIST_BEGIN;建立数据表
  (
  /
  )
  (setq B_technology_dimangle_list
        '("m" "c" "v"
         )
  )
);end-B_TECHNOLOGY_DIMANGLE_LIST_BEGIN

(defun B_TECHNOLOGY_ADD_LIST_SELECTION
  (
  /
  B_technology_repeat
  )
  (setq B_technology_add_list_no (atoi $value))
  (mode_tile "B_TECHNOLOGY_ADD_DCL" 0)
  (foreach B_technology_repeat B_technology_need_list
    (if (= (nth B_technology_add_list_no B_technology_add_list) B_technology_repeat)
      (mode_tile "B_TECHNOLOGY_ADD_DCL" 1)
    );end-if  
  );end-foreach          
);end-B_TECHNOLOGY_ADD_LIST_SELECTION

(defun B_TECHNOLOGY_NEED_LIST_SELECTION
  (
  /
  )
  (setq B_technology_need_list_no (atoi $value))
);end-B_TECHNOLOGY_NEED_LIST_SELECTION

(defun B_TECHNOLOGY_ADD
  (
  /
  )
  (setq B_technology_need_list (reverse (cons (nth B_technology_add_list_no B_technology_add_list) (reverse B_technology_need_list))))
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_NEED_LIST_DCL" B_technology_need_list)
  (mode_tile "B_TECHNOLOGY_ADD_DCL" 1)
);end-B_TECHNOLOGY_ADD

(defun B_TECHNOLOGY_SUB
  (
  /
  B_technology_sub_count
  B_technology_temp_list
  )
  (setq B_technology_sub_count 0)
  (setq B_technology_temp_list '())
  (repeat (length B_technology_need_list)
    (if (/= B_technology_sub_count B_technology_need_list_no)
      (setq B_technology_temp_list (cons (nth B_technology_sub_count B_technology_need_list) B_technology_temp_list))
    );end-if
    (setq B_technology_sub_count (1+ B_technology_sub_count))
  );end-repeat
  (setq B_technology_need_list (reverse B_technology_temp_list))
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_NEED_LIST_DCL" B_technology_need_list)
);end-B_TECHNOLOGY_SUB

(defun B_TECHNOLOGY_SET_BEGIN
  (
  /
  )
  (setq B_center '(0.0 0.0 0.0))
  (setq B_center_x 0.0)
  (setq B_center_y 0.0)
  (setq B_center_z 0.0)
  (setq B_technology_chamfer 0.5)
  (setq B_technology_dimension 13)
  (setq B_technology_dimshape "H")
  (setq B_technology_dimangle "m")
  (setq B_technology_need_list_no 0)
);end-B_TECHNOLOGY_SET_BEGIN

(defun B_CENTER_INPUT
  (
  /
  )
  (setq B_center_x (atof (get_tile "B_CENTER_X_DCL")))
  (setq B_center_y (atof (get_tile "B_CENTER_Y_DCL")))
  (setq B_center_z (atof (get_tile "B_CENTER_Z_DCL")))
  (setq B_center (list B_center_x B_center_y B_center_z))
);end-B_CENTER_INPUT

(defun B_TECHNOLOGY_DCL_DEFAULT
  (
  /
  B_technology_chamfer_chr_list
  B_technology_dimension_chr_list
  )
  (if (null B_ADD_LIST_SET_DCL)
    (load "B_ADD_LIST_SET_DCL")
  );end-if
  (mode_tile "B_TECHNOLOGY_ADD_DCL" 1)
  (setq B_technology_chamfer_chr_list (mapcar 'rtos B_technology_chamfer_list))
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_CHAMFER_S_DCL" B_technology_chamfer_chr_list)
  (setq B_technology_dimension_chr_list (mapcar 'rtos B_technology_dimension_list))
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_DIMENSION_S_DCL" B_technology_dimension_chr_list)
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_DIMSHAPE_S_DCL" B_technology_dimshape_list)
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_DIMANGLE_S_DCL" B_technology_dimangle_list)
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_ADD_LIST_DCL" B_technology_add_list)
  (B_ADD_LIST_SET_DCL "B_TECHNOLOGY_NEED_LIST_DCL" B_technology_need_list)
  (if B_technology_chamfer
    (progn
      (if (null B_NO_LIST)
        (load "B_NO_LIST")
      );end-if
      (set_tile "B_TECHNOLOGY_CHAMFER_S_DCL" (itoa (B_NO_LIST B_technology_chamfer B_technology_chamfer_list)))
    );end-progn
  );end-if
  (if B_technology_dimension
    (progn
      (if (null B_NO_LIST)
        (load "B_NO_LIST")
      );end-if
      (set_tile "B_TECHNOLOGY_DIMENSION_S_DCL" (itoa (B_NO_LIST B_technology_dimension B_technology_dimension_list)))
    );end-progn
  );end-if
  (if B_technology_dimshape
    (progn
      (if (null B_NO_LIST)
        (load "B_NO_LIST")
      );end-if
      (set_tile "B_TECHNOLOGY_DIMSHAPE_S_DCL" (itoa (B_NO_LIST B_technology_dimshape B_technology_dimshape_list)))
    );end-progn
  );end-if
  (if B_technology_dimangle
    (progn
      (if (null B_NO_LIST)
        (load "B_NO_LIST")
      );end-if
      (set_tile "B_TECHNOLOGY_DIMANGLE_S_DCL" (itoa (B_NO_LIST B_technology_dimangle B_technology_dimangle_list)))
    );end-progn
  );end-if
  (if B_center
    (progn
      (set_tile "B_CENTER_X_DCL" (rtos B_center_x))
      (set_tile "B_CENTER_Y_DCL" (rtos B_center_y))
      (set_tile "B_CENTER_Z_DCL" (rtos B_center_z))
    );end-cond
  );end-if
);end-B_TECHNOLOGY_DCL_DEFAULT

(defun B_TECHNOLOGY_ACTION_TILE
  (
  /
  )
  (setq B_what 7)
  (B_TECHNOLOGY_SET_BEGIN)
  (if (null B_SELECTION_LIST_DCL)
    (load "B_SELECTION_LIST_DCL")
  );end-if
  (while (> B_what 2)
    (if (not (new_dialog "B_TECHNOLOGY_REQUIRE" B_file_id))
      (exit)
    );end-if
    (B_TECHNOLOGY_DCL_DEFAULT)
    (action_tile "B_TECHNOLOGY_ADD_LIST_DCL" "(B_TECHNOLOGY_ADD_LIST_SELECTION)")
    (action_tile "B_TECHNOLOGY_NEED_LIST_DCL" "(B_TECHNOLOGY_NEED_LIST_SELECTION)")
    (action_tile "B_TECHNOLOGY_ADD_DCL" "(B_TECHNOLOGY_ADD)")  
    (action_tile "B_TECHNOLOGY_SUB_DCL" "(B_TECHNOLOGY_SUB)")
    (action_tile "B_TECHNOLOGY_ALL_DCL" "(setq B_technology_need_list '()) (B_ADD_LIST_SET_DCL \"B_TECHNOLOGY_NEED_LIST_DCL\" B_technology_need_list)")
    (action_tile "B_TECHNOLOGY_CHAMFER_S_DCL" "(setq B_technology_chamfer (B_SELECTION_LIST_DCL \"B_TECHNOLOGY_CHAMFER_S_DCL\" B_technology_chamfer_list))")
    (action_tile "B_TECHNOLOGY_DIMENSION_S_DCL" "(setq B_technology_dimension (B_SELECTION_LIST_DCL \"B_TECHNOLOGY_DIMENSION_S_DCL\" B_technology_dimension_list))")
    (action_tile "B_TECHNOLOGY_DIMSHAPE_S_DCL" "(setq B_technology_dimshape (B_SELECTION_LIST_DCL \"B_TECHNOLOGY_DIMSHAPE_S_DCL\" B_technology_dimshape_list))")
    (action_tile "B_TECHNOLOGY_DIMANGLE_S_DCL" "(setq B_technology_dimangle (B_SELECTION_LIST_DCL \"B_TECHNOLOGY_DIMANGLE_S_DCL\" B_technology_dimangle_list))")
    (action_tile "B_CENTER_DCL" "(done_dialog 3)")
    (action_tile "B_CENTER_X_DCL" "(B_CENTER_INPUT)")
    (action_tile "B_CENTER_Y_DCL" "(B_CENTER_INPUT)")
    (action_tile "B_CENTER_Z_DCL" "(B_CENTER_INPUT)")
    (action_tile "cancel"  "(done_dialog 0)")
    (action_tile "accept"  "(done_dialog 1)")
    (setq B_what (start_dialog))
    (cond
      ((= B_what 3)
        (initget 1)
        (setq B_center (getpoint "\n插入点: ")
              B_center_x (car B_center)
              B_center_y (cadr B_center)
              B_center_z (caddr B_center)
        )
      );end-3
    );end-cond
  );end-while
);end-B_TECHNOLOGY_ACTION_TILE

(defun B_TECHNOLOGY_REQUIRE
  (
   /
   B_old_cmd;保存系统变量CMDECHO用
   B_filletrad;保存系统变量FILLETRAD用
   B_current_layer;保存蛋鼻层变苛
   B_lay_exist
   B_file_id;数据文件标号
   B_date_file;数据文件名变量
   B_center;插入点变量
   B_center_x;插入点X坐标变量
   B_center_y;插入点Y坐标变量
   B_center_z;插入点Z坐标变量
   B_what;
   B_technology_add_list_no;
   B_technology_need_list_no;
   B_technology_add_list;
   B_technology_need_list;
   B_technology_chamfer;
   B_technology_dimension;
   B_technology_dimshape;
   B_technology_dimangle;
   B_technology_chamfer_list;
   B_technology_dimension_list;
   B_technology_dimshape_list;
   B_technology_dimangle_list;
  )
  (setq B_old_cmd (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (B_TECHNOLOGY_CHAMFER_LIST_BEGIN);
  (B_TECHNOLOGY_DIMENSION_LIST_BEGIN);
  (B_TECHNOLOGY_DIMSHAPE_LIST_BEGIN);
  (B_TECHNOLOGY_DIMANGLE_LIST_BEGIN);
  (if (null B_DATE_LIST_FILE) (load "B_DATE_LIST_FILE"))
  (setq B_technology_add_list (B_DATE_LIST_FILE "B_TECHNOLOGY_REQUIRE.DAT"))
  (setq B_technology_need_list '())
  (setq B_file_id (load_dialog "B_TECHNOLOGY_REQUIRE"));装入B_TECHNOLOGY_REQUIRE.DCL
  (B_TECHNOLOGY_ACTION_TILE)
  (if (= B_what 1)
    (progn
      (setq B_current_layer (getvar "CLAYER"))
      (setq B_lay_exist (tblsearch "layer" "P_DIMEN"))
      (if (/= B_lay_exist nil)
        (setvar "CLAYER" "P_DIMEN")
        (setvar "CLAYER" B_current_layer)
      );end-if
      (B_TECHNOLOGY_DRAW)
      (setvar "CLAYER" B_current_layer)
    );end-progn
  );end-if
  (unload_dialog B_file_id)
  (setvar "CMDECHO" B_old_cmd)
  (princ)
);end-B_TECHNOLOGY_REQUIRE

(defun B_TECHNOLOGY_DRAW
  (
  /
  B_technology_scale
  B_technology_text
  B_technology_length
  B_draw_left
  B_draw_left_x
  B_draw_left_y
  B_draw_text_n
  )
  (setq B_technology_scale 1.0)
  (if (ssget "x" (list (cons 0 "INSERT") (cons 2 "B_DRAWING_DATA")))
    (setq B_technology_scale (cdr (assoc 41 (entget (ssname (ssget "x" (list (cons 0 "INSERT") (cons 2 "B_DRAWING_DATA"))) 0)))))
  );end-if
  (setq B_draw_left B_center)
  (setq B_draw_text_n 0)
  (setq B_technology_length (length B_technology_need_list))
  (setvar "OSMODE"        0)
  (if (= (tblsearch "STYLE" "SONG") nil)
     (entmake
        (list
                '(0 . "STYLE")                                    *
                '(5 . "3C")                                                                      *
                '(100 . "AcDbSymbolTableRecord")                             *
                '(100 . "AcDbTextStyleTableRecord")                          *
                '(2 . "SONG")                                                                *
                '(70 . 0)                                                                          *
                '(40 . 0.0)                                                                       *
                '(41 . 1.0)                                                                       *
                '(50 . 0.0)                                                                       *
                '(71 . 0)                                                                          *
                '(42 . 2.5)                                                                       *
                '(3 . "romans.shx")                                                        *
                '(4 . "hxtxt.shx")                                                            *
              ;  '(1001 . "ACAD")
               ; '(1000 . "仿宋_GB2312")
              ;  '(1071 . 34353)
        )
     );end-entmake
  );end-if
  (if (/= B_technology_length 0)
    (repeat B_technology_length
      (setq B_draw_text_n (1+ B_draw_text_n))
      (setq B_technology_text (strcat (itoa B_draw_text_n) "." (car B_technology_need_list)))
      (setq B_technology_need_list (cdr B_technology_need_list))
      (command "text" "s" "song" "j" "bl" (polar B_draw_left (* pi 1.5) (* B_draw_text_n (*                 B_technology_scale 8.0))) (* B_technology_scale 5.0) "0" B_technology_text
      );end-command
    );end-repeat
  );end-if
  (setq B_draw_text_n (1+ B_draw_text_n))
  (setq B_technology_text (strcat (itoa B_draw_text_n) ".未注倒角" (rtos B_technology_chamfer) "X45%%D。"))
  (command "text" "s" "song" "j" "bl" (polar B_draw_left (* pi 1.5) (* B_draw_text_n (* B_technology_scale 8.0))) (* B_technology_scale 5.0) "0" B_technology_text
  );end-command
  (setq B_draw_text_n (1+ B_draw_text_n))
  (setq B_technology_text (strcat (itoa B_draw_text_n) ".未注尺寸公差按 IT" (rtos B_technology_dimension) " GB1804-84。"))
  (command "text" "s" "song" "j" "bl" (polar B_draw_left (* pi 1.5) (* B_draw_text_n (* B_technology_scale 8.0))) (* B_technology_scale 5.0) "0" B_technology_text
  );end-command
  (setq B_draw_text_n (1+ B_draw_text_n))
  (setq B_technology_text (strcat (itoa B_draw_text_n) ".未注形位公差按 GB/T1184-" B_technology_dimshape "。"))
  (command "text" "s" "song" "j" "bl" (polar B_draw_left (* pi 1.5) (* B_draw_text_n (* B_technology_scale 8.0))) (* B_technology_scale 5.0) "0" B_technology_text
  );end-command
  (setq B_draw_text_n (1+ B_draw_text_n))
  (setq B_technology_text (strcat (itoa B_draw_text_n) ".未注角度公差按 GB/T11335-" B_technology_dimangle "。"))
  (command "text" "s" "song" "j" "bl" (polar B_draw_left (* pi 1.5) (* B_draw_text_n (* B_technology_scale 8.0))) (* B_technology_scale 5.0) "0" B_technology_text
  );end-command
  (command "text" "s" "song" "j" "bl" (polar B_draw_left 0 (* B_technology_scale 10.0)) (* B_technology_scale 7.0) "0" "技术要求"
  );end-command
  (setvar "OSMODE"        51)
);end-B_TECHNOLOGY_DRAW

程序中加"*"处为设置处


另我分析过DXF组码,发现如果手工设置一个字体,它在数据库中有两处数据,不止这一处有数据,但先用STYLE设置一种字体后,用ENTMOD更改还是不行运行就出错!
OK!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 10:15 , Processed in 0.402640 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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