找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1047|回复: 8

[求助] [求助]:关于vla-put-Alignment

[复制链接]
发表于 2004-1-7 17:08:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用VLA把一个文字添加到一个块定义中后,再用vla-put-Alignment修改文字齐属性。
问题:插入这个块后,发现vla-put-Alignment的修改并没有起做用,当把块炸开后,才会起作用。用了updtae也不行。请问怎样解决这个问题?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-1-7 17:33:41 | 显示全部楼层
最好把你的程序贴出来让大家看看再说。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-8 10:57:03 | 显示全部楼层
问题主要存在于对非激活文档的操上,可如下测:
同时新建两个文档 Drawing1、 Drawing2,
激活 Drawing1,执行
(setq docobj (vla-get-ActiveDocument (vlax-get-acad-object)))
(vl-propagate 'docobj);将变量复制到全部文档。
以临时获得一个文档对象,用于测试。
激活 Drawing2,执行
(setq mspace (vla-get-modelspace docobj))
(setq blk (vla-add (vla-get-Blocks docobj) (vlax-3d-point '(0 0 0)) "blk"))
(vla-addline blk (vlax-3d-point '(10 10 0)) (vlax-3d-point '(66 10 0)))
(vla-addline blk (vlax-3d-point '(66 10 0)) (vlax-3d-point '(66 20 0)))
(vla-addline blk (vlax-3d-point '(66 20 0)) (vlax-3d-point '(10 20 0)))
(vla-addline blk (vlax-3d-point '(10 20 0)) (vlax-3d-point '(10 10 0)))
(setq textobj (vla-addtext blk "HHHHHHHH" (vlax-3d-point '(10 10 0)) 10))
(vla-put-Alignment textobj acAlignmentMiddleCenter)
(vla-put-TextAlignmentPoint textobj (vlax-3d-point '(10 10 0)))
(vla-InsertBlock mspace (vlax-3d-point '(0 0 0)) "blk"  1 1 1 0)
激活 Drawing1,炸开刚插入的块,就会发现文字的对齐方式改变。

如果是单档操作则不会有题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-9 07:59:50 | 显示全部楼层

  1. ;;把text的性質再看一遍吧!
  2. (defun C:TT ()
  3.   (setq MSPACE (vla-get-modelspace DOCOBJ))
  4.   (setq        BLK (vla-add (vla-get-blocks DOCOBJ)
  5.                      (vlax-3d-point '(0 0 0))
  6.                      "blk"
  7.             )
  8.   )
  9.   (vla-addline
  10.     BLK
  11.     (vlax-3d-point '(10 10 0))
  12.     (vlax-3d-point '(66 10 0))
  13.   )
  14.   (vla-addline
  15.     BLK
  16.     (vlax-3d-point '(66 10 0))
  17.     (vlax-3d-point '(66 20 0))
  18.   )
  19.   (vla-addline
  20.     BLK
  21.     (vlax-3d-point '(66 20 0))
  22.     (vlax-3d-point '(10 20 0))
  23.   )
  24.   (vla-addline
  25.     BLK
  26.     (vlax-3d-point '(10 20 0))
  27.     (vlax-3d-point '(10 10 0))
  28.   )
  29.   (setq
  30.     TEXTOBJ (vla-addtext BLK "HHHHHHHH" (vlax-3d-point '(10 10 0)) 10)
  31.   )
  32.   (vla-put-alignment TEXTOBJ acalignmentmiddlecenter)

  33.   (vla-put-textalignmentpoint
  34.     TEXTOBJ
  35.     (vlax-3d-point '(50 15 0))
  36.   )
  37.   (vla-insertblock
  38.     MSPACE
  39.     (vlax-3d-point '(0 0 0))
  40.     "blk"
  41.     1
  42.     1
  43.     1
  44.     0
  45.   )
  46. )
  47. ;;激活 Drawing1,炸開剛插入的塊,就會發現文字的對齊方式改變。



指定屬性、屬性參考、或文字的水平與垂直對齊。
信號
object.Alignment

object                Attribute、AttributeRef、Text這個性質適用的物件。
Alignment        acAlignment 列舉;讀/寫

                acAlignmentLeft
                acAlignmentCenter
                acAlignmentRight
                acAlignmentAligned
                acAlignmentMiddle
                acAlignmentFit
                acAlignmentTopLeft
                acAlignmentTopCenter
                acAlignmentTopRight
                acAlignmentMiddleLeft
                acAlignmentMiddleCenter
                acAlignmentMiddleRight
                acAlignmentBottomLeft
                acAlignmentBottomCenter
                acAlignmentBottomRight

說明
對齊到 acAlignmentLeft 的文字使用 InsertionPoint 性質來放置文字。
對齊到 acAlignmentAligned 或 acAlignmentFit的文字同時使用 InsertPoint 以及 TextAlignmentPoint 性質來放置文字。
對齊到其它任何位置的文字使用 TextAlignmentPoint 性質來方置文。



指定文字與屬性的對齊點。
信號
object.TextAlignmentPoint

object        Attribute、AttributeRef、Text這個性質適用的物件。
TextAlignmentPoint        變體(倍精度的三元素陣列);讀/寫3D WCS 座標值,代表物件的對齊點。

說明
Text: 當 Alignment 性質設成 acAlignmentLeft 時,這個性質會重設成  0, 0, 0 而且變成唯讀。;
要放置對正方式為靠左、佈滿、或對齊的文字,請使用 InsertPoint 性質。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-9 09:18:29 | 显示全部楼层
楼上说的已理解。
问题存在于同是上面一段程序,如果操作的文档对象DOCOBJ是当前激活的文档不会有问题,如果不是当前的激活文档,就不行了。

顺便也说一下DELETE,也是这样,如果操作的文档对象DOCOBJ是当前激活的文档不会有问题,如果不是当前的激活文档,就不行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-9 09:45:34 | 显示全部楼层
最初由 dxqyz 发布
[B]楼上说的已理解。
问题存在于同是上面一段程序,如果操作的文档对象DOCOBJ是当前激活的文档不会有问题,如果不是当前的激活文档,就不行了。

顺便也说一下DELETE,也是这样,如果操作的文档对象DOCOBJ是当前激活... [/B]



再說清楚OR有代碼嗎?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-9 13:43:37 | 显示全部楼层
代码:
(defun blk ( / )
  (setq mspace (vla-get-modelspace docobj))
  (setq blk (vla-add (vla-get-Blocks docobj) (vlax-3d-point '(0 0 0)) "blk"))
  (vla-addline blk (vlax-3d-point '(10 10 0)) (vlax-3d-point '(66 10 0)))
  (setq textobj (vla-addtext blk "HHHHHHHH" (vlax-3d-point '(10 10 0)) 10))
  (vla-put-Alignment textobj acAlignmentMiddleCenter)
  (vla-put-TextAlignmentPoint textobj (vlax-3d-point '(10 10 0)))
  (vla-InsertBlock mspace (vlax-3d-point '(0 0 0)) "blk" 1 1 1 0)
)
  (setq docobj (vla-get-ActiveDocument (vlax-get-acad-object)))
  (blk)
  (setq docobj (vla-add (vla-get-Documents (vlax-get-acad-object))))
  (blk)  ;;;新问题:此次调用BLK函数会出错,但如果把函数代码直接复制到这就不会有问题了。

执行上面代码后,对比当前文档和新建的文档会发现,
同样的代码在两个文档中的执行结果是不相同的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-10 00:29:40 | 显示全部楼层
(defun blk ( / )
(setq mspace (vla-get-modelspace docobj))
(setq blk ;;;这里blk给你重新定义了,第二遍执行当然不行了.
开一个新文档重新执行,肯定行!

至于不同,那可能是字型的关系.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-13 12:36:41 | 显示全部楼层
最初由 aeo 发布
[B]
至于不同,那可能是字型的关系. [/B]


不会是字型吧,只是用了几个字母,同样的系统。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 02:03 , Processed in 0.188457 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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