DBX 初级应用 - 不开图添加图框文字并对中
本帖最后由 millermin 于 2013-2-3 09:06 编辑不开图添加文字到表格里,要求文字对中。程序编好了,运行后有点小问题。从数据上看已经对中了,但是显示仍然是左对齐。需要重新打开文件,手动点击一下目标才能实现对中,具体参见附图,如何修改程序?
(defun addtext ( textstring pt alg)
(setq pt-v(vlax-make-safearray vlax-vbdouble '(0 . 2)))
(vlax-safearray-fill pt-v pt)
(setq ht 2.54)
(setq ts(vla-addtext block textstring pt-v ht))
(vla-put-layer ts "ST-G-TEXT")
(vlax-put-property ts 'stylename "STANDARD")
;(vlax-put-property ts 'alignment acalignmentcenter) ;;(option)
(vla-put-alignment ts acalignmentcenter)
;(vla-put-textalighmentpoint ts pt-v);;(option)
(vlax-put-property ts 'textalignmentpoint pt-v)
(vla-update ts)
)
把最后一句(vla-update ts)改为(entmod(entget(vlax-vla-object->ename ts)))就可以了。另外 (setq pt-v(vlax-make-safearray vlax-vbdouble '(0 . 2)))(vlax-safearray-fill pt-v pt)这两句可以改为(setq pt-v(vlax-3d-point pt))。 本帖最后由 millermin 于 2013-1-5 03:20 编辑
wuqiu1986 发表于 2013-1-4 15:47 http://bbs.mjtd.com/static/image/common/back.gif
把最后一句(vla-update ts)改为(entmod(entget(vlax-vla-object->ename ts)))就可以了。另外 (setq pt-v(vl ...
谢谢。问题改善了,但是位置多数时候有点偏,偶尔也对。中点坐标是对的,主要是文字的中点没有找对,是文字的中点没有对在中点坐标。参见图示。 左右比较。
本帖最后由 millermin 于 2013-1-5 05:15 编辑
上述现象深入研究发现,用了entmod后,层,字型样式,对位参数都没了,看数据窜行可以发现7,8,71,72 项目丢失。但是entmod之前的数据窜行是完整的。不明白为什么部分数据无法更新。是不是dbx库和autocad库操作有不同。 进一步研究发现问题主要在主程序的存盘语句。(vla-saveas dbx dwgfile)。 由添加文字的有关操作是对dbx库,而entmod是对autocad库,entmod操作在前,存盘在后,等于用dbx库覆盖autocad库,所以程序运行有时不正常,有时提示存盘有问题时,反而实现了对中。怀疑这可能系统不支持的结果。 自己顶,望有结果。 有结果了。结果是这个程序不做任何处理,文字对中放置后,位置显示不对无所谓。再编一个程序,程序自动编写一个script,这个script逐个文件打开,寻找刚才输入的文字,用entmod完成对中操作。具体详见另一贴,有程序源码:
http://bbs.mjtd.com/thread-100103-1-1.html
页:
[1]