明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2716|回复: 12

[求助]文字改高度

  [复制链接]
发表于 2009-9-27 01:18:00 | 显示全部楼层 |阅读模式

写了前面一段再也写不去了,菜鸟就是菜鸟,搞不定这程序哪出了问题,请帮忙改一下吧,

;TEXT,MTEXT,DMINENSION改字高

(defun c:tc () 
  (princ "Modify TEXT Height")
  (setvar "cmdecho" 0)
  (command "undo" "be")
  (setq ss  (ssget '((0 . "TEXT,MTEXT,DIMENSION"))))
  (setq tt3 (ssadd) mm3 (ssadd) dd3 (ssadd) i 0)
  (while (< i (sslength ss))  ;这段结束就不对了
     (if (= "TEXT" (cdr (assoc 0 (entget (ssname ss i)))))        
         (ssadd (ssname ss i) tt3)
     )
     (if (= "MTEXT" (cdr (assoc 0 (entget (ssname ss i)))))        
         (ssadd (ssname ss i) mm3)
     )
     (if (= "DMINENSION" (cdr (assoc 0 (entget (ssname ss i)))))        
         (ssadd (ssname ss i) dd3)
     )
     (setq i (+ i 1))
  )
     (setq  i 0)
     (setq sst (ssname tt3 i) ssm (ssname mm3 i) ssd (ssname dd3 i))
     (setq t0 (cdr(assoc 40 (entget sst))))
     (setq m0 (cdr(assoc 40 (entget ssm))))
     (setq d0 (cdr(assoc 40 (entget ssd))))
     (princ (strcat "\n<" (itoa (sslength tt3)) " 个文字高度为" (rtos t0) ">"
                       <" (itoa (sslength mm3)) " 个文字高度为" (rtos m0) ">"
                       <" (itoa (sslength dd3)) " 个文字高度为" (rtos d0) ">"
            )
     )
     (initget (+ 2 4))
     (setq th (getdist "\n请输入新的字高:"))

  (setq i 0)
  (repeat (sslength tt3)
     (setq si (ssname tt3 i))
     (setq thc (entget si) thc (subst (cons 40 th) (assoc 40 thc) thc))
     (entmod thc)
     (setq i (+ i 1))
  )
(princ)
)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-9-27 11:14:00 | 显示全部楼层

1.程序思路被复杂化了,多看看别人写的程序。

2.DMINENSION 对象的文字高度在扩展数据中

 楼主| 发表于 2009-9-28 01:02:00 | 显示全部楼层
DMINENSION 对象的文字高度在扩展数据 在哪有啊,怎么提出来呀,网站上的搜索不好用,搜半天也没有相关的贴,不相关的贴出一堆,哎
发表于 2009-9-28 01:26:00 | 显示全部楼层

(entget ENAME '("ACAD"))

dxf组码 -3 后面的就是扩展数据,注意,真正的高度还要乘以标注样式的全局比例哦

发表于 2009-9-28 01:30:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-28 2:03:29 编辑

错误...删除

 楼主| 发表于 2009-9-29 00:35:00 | 显示全部楼层
看来没有能力抓出来标注的字高了,还有什么标注样式的全局变量
发表于 2009-9-29 07:51:00 | 显示全部楼层

对尺寸,用activex比较方便:

(vla-get-TextHeight (vlax-ename->vla-object ent))

 楼主| 发表于 2009-9-29 13:05:00 | 显示全部楼层

樓上的格式是怎樣寫的?

Command: (vla-get-TextHeight (vlax-ename->vla-object (entsel)))

Select object:
"bad argument type: lentityp (<Entity name: 7ef78160> (1857.96 268.192 0.0))"

Command: (vla-get-TextHeight (vlax-ename->vla-object (ssget)))

"bad argument type: lentityp <Selection set: 38b>"

发表于 2009-9-29 13:11:00 | 显示全部楼层

变量是entname,要用entsel,则为:

(vla-get-TextHeight (vlax-ename->vla-object (car (entsel))))

 楼主| 发表于 2009-9-29 19:00:00 | 显示全部楼层
Tks! 我要改成ssget能用的來配合整個程序的運用,entsel只能單選,不方便,謝謝樓上朋友﹗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 15:11 , Processed in 0.253054 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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