明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2695|回复: 7

求教GU版、龙仔、高飞鸟等等大侠们,DBX 修改块属性,显示不对的现象

[复制链接]
发表于 2012-6-7 20:13:05 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 cheng5276 于 2012-6-7 20:38 编辑





;上图中AAA的属性对齐方式为中对齐,正常情况下修改该AAA的值后,依然会保持中对齐显示,但是通过DBX修改却无法正确显示。恳请大侠们指点
;当属性的对齐方式不为左对齐时,采用DBX方式修改块属性值并保存后,属性值未能按预设的对齐模式正确显示。
;苦思不得其解,求教
(DEFUN c:tt ()
(setq dbx (Vlax-Get-Or-Create-Object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2))))
(vla-open dbx (SETQ PATH "c:\\属性块位移实验.dwg"))
(setq Model (Vlax-Get dbx 'ModelSpace)) ;为简便,仅获取模型空间内容
(vlax-for obj Model
(if (= (Vlax-Get obj 'ObjectName) "AcDbAttributeDefinition");因图中仅此一属性,获得即是该对象
(progn
(vla-put-TagString  obj "FFFF")
;++++++++++++缺让属性打开后正常显示的代码,求教+++++++++++++++++++++
;(vla-move obj (vlax-3D-point '(0 0)) (vlax-3D-point '(0 0))) ;既然打开后原位移动能使其恢复正常,故本想在此处加入原位移动,实验不成功
;(vla-update obj) ;用更新方法也不成功 ;哎无招了
)
)
)
(vla-saveas dbx path)
(vlax-release-object dbx)
(setq doc (vla-open (Vlax-Get (Vlax-Get-Acad-Object) 'Documents) path))
(vla-Activate doc)
;打开后您会发现属性是歪的,并未按预想中居中(实际他是居中状态,只是显示成了不居中)。
;所以当您双击属性即便不做任何修改,他也会即刻正常显示。
;此时随便用移动或复制该属性他也会变为正常显示
)

;为排除是个别CAD版本原因,本人用CAD06 08 10 12均试过无效。

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

最佳答案

查看完整内容

insertionpoint属性要同时调 (DEFUN c:tt () (setq dbx (Vlax-Get-Or-Create-Object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2)))) (vla-open dbx (SETQ PATH "E:\\属性块位移实验.dwg")) (setq Model (Vlax-Get dbx 'ModelSpace)) ;为简便,仅获取模型空间内容 (vlax-for obj Model (if (= (Vlax-Get obj 'ObjectName) "AcDbAttributeDefinition");因图中仅此一属性,获得即是该对象 (prog ...
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-6-7 20:13:06 | 显示全部楼层
insertionpoint属性要同时调
(DEFUN c:tt ()
(setq dbx (Vlax-Get-Or-Create-Object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "acadver") 1 2))))
(vla-open dbx (SETQ PATH "E:\\属性块位移实验.dwg"))
(setq Model (Vlax-Get dbx 'ModelSpace)) ;为简便,仅获取模型空间内容
(vlax-for obj Model
(if (= (Vlax-Get obj 'ObjectName) "AcDbAttributeDefinition");因图中仅此一属性,获得即是该对象
(progn
(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-TextAlignmentPoint obj))))
(vla-put-TagString  obj "FFFF")
(vla-GetBoundingBox obj 'minpt 'maxpt)
(setq minpt (vlax-safearray->list minpt) maxpt (vlax-safearray->list maxpt))
(setq d (- (car maxpt) (car minpt)))
(setq pt_n (list (- (car pt) (/ d 2)) (cadr pt) (caddr pt)))
(vla-put-insertionpoint obj (vlax-3d-point pt_n))
;++++++++++++缺让属性打开后正常显示的代码,求教+++++++++++++++++++++
;(vla-move obj (vlax-3D-point '(0 0)) (vlax-3D-point '(0 0))) ;既然打开后原位移动能使其恢复正常,故本想在此处加入原位移动,实验不成功
;(vla-update obj) ;用更新方法也不成功 ;哎无招了
)
)
)
(vla-saveas dbx path)
(vlax-release-object dbx)
(setq doc (vla-open (Vlax-Get (Vlax-Get-Acad-Object) 'Documents) path))
(vla-Activate doc)
;打开后您会发现属性是歪的,并未按预想中居中(实际他是居中状态,只是显示成了不居中)。
;所以当您双击属性即便不做任何修改,他也会即刻正常显示。
;此时随便用移动或复制该属性他也会变为正常显示
)
回复

使用道具 举报

发表于 2012-6-7 23:45:09 | 显示全部楼层
http://www.theswamp.org/index.php?topic=30594.0;all

在这个帖子中,讨论了这个问题。

Lee Mac写过和你类似的属性 dbx 修改,在用户的使用中也出现过与你类似的问题

说法是:这个alignment的问题,是存在的,所以只能重新计算一下插入点,vovka做了一个CalcInsPoint,号称可以在一定程度上解决问题,虽然还不是很准确

T willey开始的时候觉得只有C#能解决问题,不过后来也认同了这个重新计算的方法。

当然,可能有更好的方法的

评分

参与人数 1明经币 +1 收起 理由
cheng5276 + 1

查看全部评分

回复

使用道具 举报

发表于 2012-6-8 00:43:12 | 显示全部楼层
虽然在打开图形的情况下,CAD可自动更新其插入点,但在DBX中除了重新计算插入点外,Lisp似乎找不到更好的方法!

评分

参与人数 1明经币 +1 收起 理由
cheng5276 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-6-8 13:56:33 | 显示全部楼层
多谢GU版,假如这个属性块只通过DBX去修改,确实可以采用重新计算属性的插入点。
回复

使用道具 举报

 楼主| 发表于 2012-6-8 13:59:24 | 显示全部楼层
本帖最后由 cheng5276 于 2012-6-8 14:01 编辑
qjchen 发表于 2012-6-7 23:45
http://www.theswamp.org/index.php?topic=30594.0;all

在这个帖子中,讨论了这个问题。


非常感谢大侠的指点。
总算知道了不是我一个人有这种困惑.
回复

使用道具 举报

 楼主| 发表于 2012-6-8 22:08:15 | 显示全部楼层
本帖最后由 cheng5276 于 2012-6-8 23:14 编辑
byghbcx 发表于 2012-6-8 18:07
insertionpoint属性要同时调
(DEFUN c:tt ()
(setq dbx (Vlax-Get-Or-Create-Object (strcat "ObjectDBX ...

多谢大侠指点,和我昨天的采用的权宜方法基本类似。

在此一并感谢qjchen和GU版的无私指导,虽然您们并未给出解决代码。
但您们对这类问题的定性,指明了解决方向,这比代码更加重要。
再次感谢!
回复

使用道具 举报

发表于 2015-1-29 14:36:50 | 显示全部楼层
Gu_xl 发表于 2012-6-8 00:43
虽然在打开图形的情况下,CAD可自动更新其插入点,但在DBX中除了重新计算插入点外,Lisp似乎找不到更好的方 ...

http://www.mjtd.com/caddevelop/info-65-1014.html  利用此贴方法,如何 实现增加一个圆?(entmake (list '(0 . "CIRCLE") (cons 10 (list 3 5)) (cons 40 8)))
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-23 13:41 , Processed in 0.276862 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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