明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3476|回复: 13

[求助]如何用LISP修改尺寸中文字的高度?

  [复制链接]
发表于 2008-4-16 00:14:00 | 显示全部楼层 |阅读模式
请好心的高手帮帮忙。我忙活了一个晚上也没想出头绪来。在DXF群码中根本没有这一项啊。 我晓得的办法只有改样式中的文字高度或在特性中改。多谢!
发表于 2008-4-18 13:16:00 | 显示全部楼层
看看公共群码
 楼主| 发表于 2008-4-19 00:10:00 | 显示全部楼层
本帖最后由 作者 于 2008-4-19 0:16:44 编辑

这是我这两天自己编的,因为我在画模具图时,模具大小可能相差好几倍,但出图通常只用A3和A4.所以我想能用一个命令就把所选尺寸都改变字高,以使每张图都能看清尺寸.但其它设置都不变.以前我是建几个不同高度的的样式来解决,但现在这个厂里不允许这样做.只能在属性里改了,再用格式刷刷,不方便.多谢无痕的回话.发上来好几天,根本没人理我.真的非常感谢!但群码里没有字高这一项.我只有用这个办法了.不过现在这个有个问题,标Y轴时,不能调,它只能删掉它,目前我只发现了这个问题.让我再想想,现在太晚了,明天还要上班呢.也请大家瞧瞧,有什么办法来解决这个问题.咋传不上去.我只有用这个办法了....

(DEFUN C:CCZG (/ 10A 11A 13A 14A 15A 1A 2A 3A 50A 53A 70A 8A CMD DIMZG ENT ENT1 LEN N NAME SS ZG) ;修改尺寸中文字的高度

  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq dimzg (getvar "dimtxt"))
  (setq zg nil)
  (while (= zg nil)
    (setq zg (getreal "\n 请输入你需要的字高<6>:"))
    (if (= zg nil)
      (setq zg 6)
    )
    (if (<= zg 0)
      (setq zg nil)
    )
  )
  (setvar "dimtxt" zg)

(princ "\n 请选出需改变字高的尺寸标注!")
  (setq ss (ssget '((0 . "DIMENSION"))))
    (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq len (sslength ss))
  (setq n 0)
  (while (> len n)
    (setq name (ssname ss n))
    (setq ent (entget name))
    (setq 1a (cdr (assoc 1 ent)))
    (setq 2a (cdr (assoc 2 ent)))
    (setq 3a (cdr (assoc 3 ent)))
    (setq 8a (cdr (assoc 8 ent)))
    (setq 10a (cdr (assoc 10 ent)))
    (setq 11a (cdr (assoc 11 ent)))
    (setq 13a (cdr (assoc 13 ent)))
    (setq 14a (cdr (assoc 14 ent)))
    (setq 15a (cdr (assoc 15 ent)))
    (setq 50a (cdr (assoc 50 ent)))
    (setq 53a (cdr (assoc 53 ent)))
    (setq 70a (cdr (assoc 70 ent)))
    (cond
      ((= 70a 32) (command "_.dimlinear" 13a 14a 10a )
       (setq ent1 (entget (entlast))))
      ((= 70a 33) (command "_.dimaligned" 13a 14a 10a )
       (setq ent1 (entget (entlast))))
      ((= 70a 102) (command "_.dimordinate" 13a 14a  )
       (setq ent1 (entget (entlast))))
    )
    (setq ent1 (subst (cons 1 1a) (assoc 1 ent1) ent1))
    (setq ent1 (subst (cons 2 2a) (assoc 2 ent1) ent1))
    (setq ent1 (subst (cons 3 3a) (assoc 3 ent1) ent1))
    (setq ent1 (subst (cons 8 8a) (assoc 8 ent1) ent1))
    (setq ent1 (subst (cons 10 10a) (assoc 10 ent1) ent1))
    (setq ent1 (subst (cons 11 11a) (assoc 11 ent1) ent1))
    (setq ent1 (subst (cons 15 15a) (assoc 15 ent1) ent1))
    (setq ent1 (subst (cons 50 50a) (assoc 50 ent1) ent1))
    (setq ent1 (subst (cons 53 53a) (assoc 53 ent1) ent1))
    (entmod ent1)
    (setq n (1+ n))
  )

  (command "_.erase" ss "")
  (if (> len 0)
    (progn
      (princ "\n 已将 ")
      (princ len)
      (princ " 个尺寸高度改至 ")
      (princ zg)
    )
  )
    (setvar "osmode" os)
  (setvar "dimtxt" dimzg)
  (setvar "cmdecho" cmd)
  (princ)
)

模具画了好几年,但编这个还是最近几个月的事,真的需要高手不吝赐教!多谢!!!!

点评

不稳定啊 有时尺寸直接就不见了  发表于 2015-7-20 07:55
发表于 2008-4-19 10:42:00 | 显示全部楼层
YDPLDL发表于2008-4-19 0:10:00……以前我是建几个不同高度的的样式来解决,但现在这个厂里不允许这样做.……

为何不让这样做?个人认为只要画的图样符合国家制图标准就可以了。

 楼主| 发表于 2008-4-19 19:36:00 | 显示全部楼层

这年头好心人太少,我还得仔细琢磨一下,希望今天能搞出来.....

发表于 2008-4-21 08:16:00 | 显示全部楼层

;;[求助]如何用LISP修改尺寸中文字的高度?
;;請好心的高手幫幫忙。我忙活了一個晚上也沒想出頭緒來。
;;在DXF群碼中根本沒有這一項啊。 我曉得的辦法只有改樣式中的文字高度或在特性中改。多謝!
;;XDATA METHOD
;;(TXT_HEIGHT (car (entsel)) 3)
(defun TXT_HEIGHT (A HEIGHT / AAA TMP N)
  (setq AAA (cdadr (assoc -3 (entget A '("ACAD")))))
  (setq N 2)
  (setq TMP '((1000 . "DSTYLE")
       (1002 . "{")
      )
  )
  (repeat (/ (- (length AAA) 3) 2)
    (if (not (equal '((1070 . 140)) (list (nth N AAA))))
      (setq TMP (append TMP (list (nth N AAA) (nth (+ N 1) AAA))))
    )
    (setq N (+ N 2))
  )
  (setq
    A
     (append (entget A)
      (list (cons -3
    (list (cons "ACAD"
         (append TMP
          '((1070 . 140))
          (list (cons 1040 HEIGHT))
          '((1002 . "}"))
         )
          )
    )
     )
      )
     )
  )
  (entmod A)
  (princ)
)

;;VLISP METHOD
(defun VLA_TXT_HEIGHT (HEIGHT)
  (vla-put-textheight
    (vlax-ename->vla-object (car (entsel)))
    HEIGHT
  )
)

发表于 2008-4-21 14:21:00 | 显示全部楼层
这个需要用lisp吗?我一般通过控制标注样式的全局比例来调字高。
 楼主| 发表于 2008-4-21 22:40:00 | 显示全部楼层

感谢龙龙的帮助.但好像不能用啊.

发表于 2008-4-22 07:56:00 | 显示全部楼层

說出問題點?甚麼叫好像不能用?

发表于 2008-4-22 09:15:00 | 显示全部楼层
呵呵,估计"好像不能用"其实应该这么说的:
在标注使用的字体样式没有定义文字高度的时候也就是文字高度为0的时候是可以这么修改的,
但是在字体高度固定的情况下,就没有办法这么改了.
TextHeight property [ActiveX and VBA Reference: AAR]

TextHeight Property

Specifies the height for the dimension or tolerance text.

See Also | Example

Signature

object.TextHeight

object

Dim3PointAngular, DimAligned, DimAngular, DimDiametric, DimOrdinate, DimRadial, DimRotated, Tolerance
The object or objects this property applies to.

TextHeight

Double; read-write
The height for the dimension text.

System variables

This property overrides the value of the DIMTXT system variable for the given dimension.

Remarks

The initial value for this property is 0.1800.

If the current text style has a fixed text height, this property is ignored.

看看上面一行,,,,,


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

本版积分规则

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

GMT+8, 2025-10-29 12:47 , Processed in 0.306541 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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