明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 628|回复: 2

[提问] 关于移动块属性位置函数的一点建议

[复制链接]
发表于 2022-6-17 14:52:25 | 显示全部楼层 |阅读模式
黄大侠的《(MJ:ChangeTagIns "sheet-text" "a3-scale" '(703.4722 17.8350 0))》函数,功能是把某一名称块的指定属性移动到指定位置。当同一图中,存在多个名称相同的块时,这种方式就失去了意义。通常,每个块的指定属性位置可能更多的是移动到相对于该块插入点的某个位置。这种情况下,函数应该如何修改才能实现呢?也就是说函数输入参数的点表变成相对于块插入点(@X Y Z)

函数源码:

;;32.1 [功能] 更改属性位置
;; (MJ:ChangeTagIns "sheet-text" "a3-scale" '(703.4722 17.8350 0))
(defun MJ:ChangeTagIns (bn tagname ins / layout i atts tag)
  (defun list->variantArray (ptsList / arraySpace sArray)
    (setq arraySpace
           (vlax-make-safearray
             vlax-vbdouble
             (cons 0 (- (length ptsList) 1))
           )
    )
    (setq sArray (vlax-safearray-fill arraySpace ptsList))
    (vlax-make-variant sArray)
  )
  (vlax-for layout *LOUTS*
    (vlax-for i        (vla-get-block layout)
      (if (and
            (= (vla-get-objectname i) "AcDbBlockReference")
            (= (strcase (vla-get-name i)) (strcase bn))
          )
        (if (and
              (= (vla-get-hasattributes i) :vlax-true)
              (safearray-value
                (setq atts
                       (vlax-variant-value
                         (vla-getattributes i)
                       )
                )
              )
            )
          (foreach tag (vlax-safearray->list atts)
            (if        (= (strcase tagname) (strcase (vla-get-tagstring tag)))
              (vla-put-InsertionPoint tag (list->variantArray ins))
            )
          )
          (vla-update i)
        )
      )
    )
  )
)


评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-9-29 00:35:46 | 显示全部楼层
我试过这个普通的移动都不成功,相对位置就更不行了。不知道那个高手能出手呢?
发表于 2024-9-29 14:31:33 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-9-29 14:33 编辑

逻辑都没搞对吧,没必要整代码,块编辑器手动改好相对位置,attsync一下就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:39 , Processed in 0.167302 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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