找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 714|回复: 4

[LISP函数]:文字的问题(望解答)?

[复制链接]
发表于 2005-10-11 10:17:30 | 显示全部楼层 |阅读模式

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

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

×
在一般情况下,输入的文字的高度和宽度有什么关系?
另、文字之间的间距以及行距从哪里可以进行设定呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-11 12:50:37 | 显示全部楼层
按字型定义
行距问的是dtext这样的还是mtext?
好像不可以,不过可以编程分行硬写
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-11 13:33:04 | 显示全部楼层
是DTEXT的!就是字和字之间的间距,以及行距,应该有什么可以设置吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-12 06:45:56 | 显示全部楼层
最初由 kkilvdong 发布
[B]是DTEXT的!就是字和字之间的间距,以及行距,应该有什么可以设置吧? [/B]

行距为字高的1.36倍。字间距无法控制,但可以改变字宽。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2005-10-12 10:49:19 | 显示全部楼层
最初由 kkilvdong 发布
[B]是DTEXT的!就是字和字之间的间距,以及行距,应该有什么可以设置吧? [/B]

文字的字高与字宽是在形文件(.shx)中定义的,字符间距与行距也是在这里定义的。根据字体性质的不同,实际行距一般也不同,但理论行距一般都是1.6667倍字高(也算是“黄金分割”吧),所以同样的字高,有些字体就显得拥挤些。字符间距在西文字体中是随字符各自定义的,各不相同,而中文字体一般由一个统一的控制符设定,每个字符调用,所以中文字符容易对齐。
Mtext在书写时可以进行一些基本的编辑,在R2006中已经可以有限的调整字符间距,书写完成后可以通过“特性”编辑其行距。
通过Dtext书写的文本只能保持一定的行距与字距,开始时无法设定,如果需要改变行距只有后期编辑。

贴一个以前的程序,可以设定输入行距:
[php];;;TP.lsp
(defun erro(s)
  (if (= s "Function cancelled")
    (progn
      (if (not e) (setvar "textstyle" sy0))
      (if (and (/= sp nil) (/= a nil)) (tp:bx sp a 0))
    )
  )
  (if (/= old_error nil) (setq *error* old_error))
  (princ)
)

(defun conds()
  (princ "\nStyle name (or ?) <")
  (princ sy0)
  (setq sty (getstring ">: "))
  (cond
    ( (or (= sty "") (= sty nil)) (setq sty sy0))
    ( (= sty "?") (command "style" "?" "") (conds))
    ( (/= (tblsearch "style" sty) nil)
      (setq sy sty)
      (setvar "textstyle" sty)
    )
    (t  (princ "\nUnknown or invalid text style name."))
  )
)

(defun mktext(:str :pt10 :pt11 :j1 :j2 / :a)
  (entmake (list '(0 . "TEXT") (cons 1 :str) (cons 10 :pt10) (cons 7 sy)
    (cons 40 a) (cons 41 wid) '(71 . 0) (cons 72 :j1) (cons 11 :pt11) (cons 73 :j2))
  )
)
(defun tp:bx(bx:sp bx:a bx:col / bx:10)
  (if (= ju "Right")
    (setq bx:10 (list (- (car bx:sp) (* 0.8 bx:a)) (cadr bx:sp)))
    (setq bx:10 (list (+ (car bx:sp) (* 0.8 bx:a)) (cadr bx:sp)))
  )
  (grdraw bx:sp bx:10 bx:col)
)

(defun c:tp (/ sp ju c sty sy sy0 tb siz a e d cs sp1 ss us old_error)
  (command "color" (getvar "cecolor"))
  (setq sp t js "r"
        sy0 (getvar "textstyle"))
  (setq old_error *error* *error* erro)
  (setq sy  sy0
        tb (tblsearch "style" sy)
        siz (cdr (assoc 40 tb))
        wid (cdr (assoc 41 tb))
  )
  (while (/= (type sp) 'LIST)
    (initget 0 "Justify Style")
    (setq sp (getpoint "\nJustify/Style/<Start point>: "))
    (cond
      ( (or (= sp "") (= sp nil)) (exit))
      ( (= sp "Justify")
        (initget "Right Left Center Middle")
        (setq ju (getkword "\nJustify <Right>/Left/Center/Middle: "))
        (cond
          ( (or (= ju nil) (= ju "") (= ju "Right")) (setq j72 2 j73 0))
          ( (= ju "Center") (setq j72 1 j73 0))
          ( (= ju "Middle") (setq j72 1 j73 2))
          ( (= ju "Left") (setq j72 0 j73 0))
          (t nil)
        )
      )
      ( (= sp "Style") (conds))
      (t nil)
    )
  )
  (if (= ju nil) (setq ju "Right" j72 2 j73 0))

  (initget "Array")
  (princ "\nArray/<Line space: ")
  (if (= (getvar "userr1") 0.0) (setq us 1.0) (setq us (getvar "userr1")))
  (princ us)
  (setq c (getdist ">: "))
  (if (or (= c nil) (= c "")) (setq c us))
  (if (= c "Array")
    (progn
      (princ "\nLine space: <")
      (if (= (getvar "userr1") 0.0) (setq us 1.0) (setq us (getvar "userr1")))
      (princ us)
      (setq c (getdist ">: "))
      (if (or (= c nil) (= c "")) (setq c us))
      (princ "\nColumn space <")
      (princ (* 2 c))
      (setq d  (getdist ">: "))
      (if (or (= d nil) (= d "")) (setq d (* 2 c)))
      (setq cs (getint "\nColumn number <1>:"))
      (if (or (= cs nil) (= cs "")) (setq cs 1))
    )
    (setq cs 1 d 2.0)
  )
  (setvar "userr1" c)

  (setq sp1 sp)

  (if (zerop siz)
    (progn
      (princ "\nHeight<")
      (princ (getvar "textsize"))
      (setq a (getdist sp ">: "))
      (if (not a) (setq a (getvar "textsize")))
    )
  )
  (setvar "textsize" a)
  (tp:bx sp a 7)
  (repeat cs
    (while (/= (setq e (getstring t "\nText:")) "")
      (tp:bx sp a 0)
      (mktext e sp sp j72 j73)
      (setq sp (list (car sp) (- (cadr sp) c)))
      (tp:bx sp a 7)
    )
    (tp:bx sp a 0)
    (setq sp (list (+ (car sp) d) (cadr sp1)))
    (tp:bx sp a 7)
  )
  (tp:bx sp a 0)
  (setq *error* old_error)
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 17:07 , Processed in 0.171759 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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