明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1813|回复: 3

[提问] 求帮忙把修改表格文字的对齐点

[复制链接]
发表于 2013-8-18 23:37:33 | 显示全部楼层 |阅读模式
以下是明经上分享的一个源码,作用是表格内的文字居中或左中对齐。
(地址http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85506&page=1#pid453110
因为不是免费共享的,我就不贴完整的源码了。
程序本身没有bug,但在实际使用中,发现左中对中太靠边了,就看了下程序。因为本人接触lisp没多久,所以有什么说的不对的望大家见谅。
程序在处理时,把文字作为vla对象处理。但我发现vla对象的左中定位点和文字的左中插入点不是同一位置。我试着把move中的(vlax-3d-point (getmlp e)) 改为文字本身的左中插入点,但不知道是函数写错了,还是其他的原因,没有成功。
希望有人帮忙修改下。
另外,还有个问题,repeat函数后面的(setq m……请稍候……")),这一段函数删了之后,就报错,这是为什么


;;主程序
(defun C:zdq()
  (setq sSet (ssget '((0 . "*TEXT"))))
  (repeat (setq m (sslength sSet))
    (princ (strcat "\n已完成" (itoa (1+ n)) "/" (itoa m) ",请稍候……"))
    (setq ename (ssname sSet n))
    (setq e (vlax-ename->vla-object ename))
    (vl-cmdf "boundary" "a" "o" "p" "" (getmcp e) "")
    (setq box (entlast))                  
    (vlax-put-property e 'Alignment acAlignmentMiddleLeft)
    (vla-move e (vlax-3d-point (getmlp e)) (vlax-3d-point (getmlp box)))
    (entdel box)
    (setq n (1+ n))
  );end repeat
;;子程序
;;功能:通获取对象左中点
(defun getmlp (e / p1 p2 x1 y1 z1 x2 y2 z2 plist)
  (if (= (type e) 'ename)
    (setq e (vlax-ename->vla-object e))
  )
  (vla-getboundingbox e 'p1 'p2)
  (setq p1 (vlax-safearray->list p1))
  (setq p2 (vlax-safearray->list p2))
  (setq x1 (car p1)
        y1 (cadr p1)
        z1 (caddr p1)
  )
  (setq x2 (car p2)
        y2 (cadr p2)
        z2 (caddr p2)
  )
  (setq plist (list x1 (/ (+ y1 y2) 2.0) (/ (+ z1 z2) 2.0)))
)
;;子程序getmcp

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-8-19 07:51:03 | 显示全部楼层
进入循环前要对循环变量赋初值(setq n 0)
 楼主| 发表于 2013-8-19 19:33:52 | 显示全部楼层
ZZXXQQ 发表于 2013-8-19 07:51
进入循环前要对循环变量赋初值(setq n 0)

感谢版主回复
赋值是附过了,因为版权(?)的问题,所以我把相关的代码贴出来,但还有些辅助的代码(比如文本提示之类的)就没贴,赋值这条漏贴了。
程序本身是可以运行的,没有bug。
个人感觉,文字作为vla对象是,定位点会变化。比如下图中,文字本身的定位点是蓝点。但用上述程序左对齐的时候,效果会和图中一样,是x本身的最左边点定位到线上。
所以,如何修改程序,才能使程序根据文字本身的定位点来定位。

本帖子中包含更多资源

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

x
发表于 2014-3-20 14:07:36 | 显示全部楼层
学习学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 06:44 , Processed in 0.173013 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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