乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 35|回复: 19

[编程交流] 移动动态文本属性

[复制链接]

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:27:23 | 显示全部楼层 |阅读模式
我试着让一些包含文本的块垂直于用户选择的线移动,这样文本就可以正确地排列。
 
附件是我正在使用的代码和示例dwg。我可以选择块和线,但什么也没有发生。由于块中的参数是一个点,它需要一个X和Y值,我认为这就是问题所在。
EXALU_Main-0001。LSP
纤维标记试验。图纸
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:31:28 | 显示全部楼层
有人有什么建议吗?
回复

使用道具 举报

19

主题

119

帖子

100

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:35:58 | 显示全部楼层
我不知道你想做什么。这不是可以只使用Align参数就可以做到的吗?
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:37:55 | 显示全部楼层
这些是带有移动参数的动态块,但使用了大约30个这样的块。我画了一条参考线,我想让文本在那里对齐,我想做的是让这些块的文本移动到那条线,而不必单独移动每个块,因为这可能会有点耗时。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:43:07 | 显示全部楼层
 
试试这个:
唯一的问题是,参考不是一条线,而是一个动态块。
 
  1. (defunc:AlgnDyn (/ adoc a baseX BaseXBlock MoveXVal MoveXBlock)
  2. ;;  pbe Apr2011  ;;
  3. (vl-load-com)
  4. (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  5. (setq a (car (entsel "\nSelect Reference Dynamic Block:")))
  6. (setq baseX
  7.     (variant-value
  8.       (vla-get-value
  9.         (nth
  10.           15
  11.           (vlax-invoke
  12.             (vlax-ename->vla-object a)
  13.             'GetDynamicBlockProperties
  14.             )
  15.           )
  16.         )
  17.       )
  18.    BaseXBlock
  19.     (car (cdr (assoc 10 (entget a))))
  20.    )
  21. (setq MoveXBlock
  22.     (mapcar
  23.       '(lambda (j) (car (cdr (assoc 10 (entget j)))))
  24.       (vl-remove-if
  25.         'listp
  26.         (mapcar
  27.           'cadr
  28.           (ssnamex (ssget ":L" '((0 . "INSERT") (66 . 1))))
  29.           )
  30.         )
  31.       )
  32.    )
  33. (vlax-for
  34.     Dblks (vla-get-activeselectionset adoc)
  35.    (setq MoveXVal
  36.       (car
  37.         (vlax-safearray->list
  38.           (variant-value (vla-get-insertionpoint Dblks))
  39.           )
  40.         )
  41.      )
  42.    (vla-put-value
  43.      (nth 15 (vlax-invoke Dblks 'GetDynamicBlockProperties))
  44.      (+ (- BaseXBlock MoveXVal) baseX)
  45.      )
  46.    )
  47. (princ)
  48. )

 
用法:
命令:AlgnDyn
选择参考动态块:
选择对象:
 
这段代码专门针对您的区块(光纤标记管sta)编写
 
希望这有帮助
102730yjqdjrj2znjylta8.jpg
102731yhglthug55stuhgu.jpg
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:44:39 | 显示全部楼层
谢谢,这是一个开始。我对两件事很好奇。
 
1.为了计算我们使用的所有区块,我使用以下代码:
 
这将解释所有这些块,并且不一定基于光纤块,而是基于任何块?
 
 
2.如果页面的视口处于除0以外的任何角度,它会将文本对齐到一个角度。我假设这意味着代码中需要一个trans,但我现在对trans函数知之甚少。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:47:15 | 显示全部楼层
 
哇。我没指望,很好,哦,诺托。
 
至于问题1,如果您指的是文本位置,则可以修改代码以搜索PropertyName,而不是代码上所示的第15个(定位MoveX)。这就是为什么我说它只适用于这个区块,其中第15个(实际上是16个)对于所有具有相同名称的区块都是相同的。
 
现在对于trans,我需要回复你,快结束了。
我可能会完全重写代码,这样它不仅适用于Y的X位置。
 
我很肯定这里会有人打败我。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:50:35 | 显示全部楼层
 
 
块是否旋转?
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:53:30 | 显示全部楼层
块本身在插入时旋转。之后,文本(定位)被打开,并且有一个旋转参数用于旋转文本,通常以当前视口比例的90度旋转,以便将文本写入页面,并从右侧读取。希望能回答这个问题。。。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:58:26 | 显示全部楼层
 
可以用旋转的块发布图形文件吗
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:10 , Processed in 0.722210 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表