乐筑天下

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

[编程交流] 将块属性插入te

[复制链接]

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:23:43 | 显示全部楼层 |阅读模式
我试图获取一个具有属性的块,并用多行文字文本字段“标记”它,以与eattext命令一起使用。我一辈子都不知道该怎么做。谁能给我一些指点吗?
 
当您有100个块并且必须手动在旁边插入文本字段时,它就会变旧。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:30:25 | 显示全部楼层
从块中提取属性值并将其写入多行文字是没有问题的,在这里搜索最近的问题“获取第四个属性”Lee mac和AlanJT在这里发布了一些广泛的块例程,我发布了一个使用VBA多次获取属性的示例解算。
 
听起来你没有先搜索。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:41:29 | 显示全部楼层
可悲的是,很少有人这样做。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 10:46:59 | 显示全部楼层
欢迎加入!
试试这个简单的例子
  1. (vl-load-com)
  2. (defun C:MField(/ acsp atts blk_obj ent found id pt tag)
  3. (while (setq ent (entsel "\nSelect block instance (or press Enter to Exit): "))
  4.    (setq blk_obj (vlax-ename->vla-object (car ent)))
  5.    (setq tag (getstring "\nEnter tag <MODIF_A> : "));<--change on appropriate tag here
  6.    (if (eq (chr 0) tag)
  7.      (setq tag "MODIF_A"));<--change on appropriate tag here
  8.    (setq atts (vlax-invoke blk_obj 'getattributes))
  9.    (foreach att atts
  10.      (if (eq (vla-get-tagstring att) tag)
  11. (progn
  12. (setq found (vla-get-textstring att))
  13. (setq id (vla-get-objectid att))
  14.        (setq pt (getpoint "\nPick a  field location >> "))
  15.        (setq acsp (vla-get-block
  16.   (vla-get-activelayout
  17.     (vla-get-activedocument
  18.       (vlax-get-acad-object))))
  19.   )
  20.   (vlax-invoke-method acsp 'addmtext (vlax-3d-point pt) 0.0
  21.   (strcat  "%<[url="file://acobjprop/"]\\AcObjProp[/url] Object(%<[url="file://_objid/"]\\_ObjId[/url] " (itoa id) ">%).TextString [url="file://f/"]\\f[/url] "%tc4">%"));<--"%tc4" is title case, you can remove it
  22.    )
  23. )
  24.      )
  25.    )
  26. (princ)
  27. )

 
~'J'~
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:51:04 | 显示全部楼层
 
我曾尝试将该位添加到您之前提供的代码中,但它仍然将对正点放在左上角。我最终会想抵消文本。我最初的代码如下:
 
  1. (setq inspt (vla-get-insertionpoint mtxtobj))
  2. (vla-put-attachmentpoint mtxtobj acAttachmentPointMiddleCenter)
  3. (vla-put-insertionpoint mtxtobj inspt)

 
这是我可以对插入点做的事情吗?
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:55:44 | 显示全部楼层
 
对不起,我有点忙
此代码在我的机器上运行良好(我使用了2009)
再试一次
  1. (DEFUN MTTL ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ SCALE (/ 1 (GETVAR "CANNOSCALEVALUE")))
  4. (SETQ MTPOINT (GETPOINT "\NENTER JUSTIFICATION POINT: "))
  5. (SETQ MTHEIGHT (* SCALE 0.078125))
  6. (SETQ MTX (+ (CAR MTPOINT) (* SCALE 0.03125)))
  7. (SETQ MTY (- (CADR MTPOINT) (* SCALE 0.0390625)))
  8. (COMMAND "MTEXT" (LIST MTX MTY) "J" "TL" "H" MTHEIGHT "R" "0" "W" "0" V:TEXT "")
  9. (SETVAR "CMDECHO" 1)
  10. )
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:00:47 | 显示全部楼层
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:07:09 | 显示全部楼层
 
After you've changed the Attachment point property of mtext object, you
need to put insertion point back:
  1. (setq inspt (vla-get-insertionpoint mtxtobj))(vla-put-attachmentpoint mtxtobj acAttachmentPointMiddleCenter)(vla-put-insertionpoint mtxtobj inspt)
 
~'J'~
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:12:14 | 显示全部楼层
 
I've tried adding that bit to the code you gave me previously, but it's still putting the justification point at the top left.  I'm eventually going to want to offset the text as well.  My original code to do that was as follows:
 
  1. (DEFUN MTTL ()(SETVAR "CMDECHO" 0)(SETQ SCALE (/ 1 (GETVAR "CANNOSCALEVALUE")))(SETQ MTPOINT (GETPOINT "\NENTER JUSTIFICATION POINT: "))(SETQ MTHEIGHT (* SCALE 0.078125))(SETQ MTX (+ (CAR MTPOINT) (* SCALE 0.03125)))(SETQ MTY (- (CADR MTPOINT) (* SCALE 0.0390625)))(COMMAND "MTEXT" (LIST MTX MTY) "J" "TL" "H" MTHEIGHT "R" "0" "W" "0" V:TEXT "")(SETVAR "CMDECHO" 1))
 
Is this something I can do to the insertion point?
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:22:38 | 显示全部楼层
 
Sorry, I was a bit busy with my own
This code is working good on my machine (I used A2009)
Try again

[code] (vl-load-com)(defun C:MField(/ acsp atts blk_obj ent found id pt tag) (while (setq ent (entsel "\nSelect block instance (or press Enter to Exit): "))   (setq blk_obj (vlax-ename->vla-object (car ent)))   (setq tag (getstring "\nEnter tag  : "));
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:51 , Processed in 0.920960 second(s), 72 queries .

© 2020-2025 乐筑天下

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