明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: hnlgy

[提问] 再次求助高手们完善下面这个封闭区域内文本居中小程序

[复制链接]
发表于 2013-6-15 00:03:09 | 显示全部楼层
本帖最后由 gzxl 于 2013-6-15 07:29 编辑
hnlgy 发表于 2013-6-14 20:07
顶起来让大家看见,别沉了。


是不是这样的?先发个测试的fas,如是这样再奉上代码


本帖子中包含更多资源

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

x
 楼主| 发表于 2013-6-15 07:38:31 | 显示全部楼层
gzxl 发表于 2013-6-15 00:03
是不是这样的?先发个测试的fas,如是这样再奉上代码

感谢分享,正是需要这种效果。
发表于 2013-6-15 11:15:47 | 显示全部楼层
http://bbs.mjtd.com/thread-91647-1-1.html
看下yjr111 老大的作品,这个很不错
发表于 2013-6-15 15:16:14 | 显示全部楼层
多行文字的实际高宽请参考组码42及43,给你一个cab大师的多行文字boundingbox的代码
  1. (defun box_mtext (ent / elst p10 txth ang vec wid hgt dxf UCSangle
  2.                   attpt ul ur lr ll)
  3.   (defun dxf (code elst)
  4.     (cdr (assoc code elst))
  5.   )

  6.   ;; incase it is a list,  (ename point)
  7.   (and (listp ent) (setq ent (car ent)))
  8.   (setq elst (entget ent))

  9.   (setq p10   (trans (dxf 10 elst) 0 1) ; insertion point WCS to UCS
  10.         txth  (dxf 40 elst) ; text height
  11.         wid   (dxf 42 elst) ; full width
  12.         hgt   (dxf 43 elst) ; full height
  13.         ang   (dxf 50 elst) ; rotation angle in UCS
  14.         attpt (dxf 71 elst) ; attachment point code
  15.   )

  16.   ;|--------------------------------------------------------------
  17.   ;;  CAB 01/24/2006 removed as the ang fron DXF code 50 os in UCS
  18.   ;;  correct for UCS
  19.   (setq  ang (- ang (angle (trans '(0.0 0.0 0.0) 1 0)
  20.                            (trans '(1.0 0.0 0.0) 1 0)))
  21.   )
  22.   ;;  angles  90 = (/ pi 2)   180 = pi  270 = (* pi 1.5)
  23.   ---------------------------------------------------------------|;

  24.   
  25.   ;;  Get upper left (ul) from insert point (p10)
  26.   (cond ((= attpt 1) (setq ul p10)) ; top left
  27.         ((= attpt 2) (setq ul (polar p10 (+ pi ang) (/ wid 2)))) ; top center
  28.         ((= attpt 3) (setq ul(polar p10 (+ pi ang) wid))) ; top right
  29.         ((= attpt 4) (setq ul (polar p10 (+ (/ pi 2) ang) (/ hgt 2)))) ; middle left
  30.         ((= attpt 5) ; middle center
  31.          (setq ul (polar (polar p10 (+ pi ang) (/ wid 2)) (+ (/ pi 2) ang) (+ (/ hgt 2)))))
  32.         ((= attpt 6) ; middle right
  33.          (setq ul (polar (polar p10 (+ pi ang) wid) (+ (/ pi 2) ang) (+ (/ hgt 2)))))
  34.         ((= attpt 7) (setq ul (polar p10 (+(/ pi 2) ang) hgt))) ; bottom left
  35.         ((= attpt 8) ; bottom center
  36.          (setq ul (polar (polar p10 (+ pi ang) (/ wid 2)) (+ (/ pi 2) ang) hgt)))
  37.         ((= attpt 9) ; bottom right
  38.          (setq ul (polar (polar p10 (+ pi ang) wid) (+ (/ pi 2) ang) hgt)))
  39.   );cond
  40.   (setq ur (polar ul ang wid)
  41.         lr (polar ur (+ ang (* pi 1.5)) hgt)
  42.         ll (polar lr (+ ang pi) wid)
  43.   );setq
  44.   (list ll lr ur ul)
  45. );boxmtext
 楼主| 发表于 2013-6-15 16:16:05 | 显示全部楼层
多谢楼上两位的回复,仔细消化代码。
发表于 2013-6-18 08:51:27 | 显示全部楼层
gzxl 发表于 2013-6-15 00:03
是不是这样的?先发个测试的fas,如是这样再奉上代码

G版您好,这种效果很好啊,不知道方不方便把对象居中的和你的整合一下,当选择对象为非文字时,调用对象居中,当选择对象为文字时就调用文字居中,这样的效果是不是更好呢?
发表于 2013-6-18 16:25:52 | 显示全部楼层
发表于 2022-2-20 08:34:17 | 显示全部楼层
gzxl 发表于 2013-6-15 00:03
是不是这样的?先发个测试的fas,如是这样再奉上代码

大佬 能发一下这个文本居中的源码 学习一下吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:45 , Processed in 0.292915 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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