乐筑天下

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

[编程交流] 希望*插入动态Blo

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:57:55 | 显示全部楼层 |阅读模式
好的,我最近发现了如何对块应用动态旋转,保持文本/属性相对于原始位置的位置,但不实际旋转。它非常完美,我很高兴能在我的公司实施它。
 
然而,我也在处理一些功能区选项卡,这些选项卡将包含一系列这些块(不同的符号和/或属性)。现在,我只是使用宏插入块,并绕过该特定块所需的任何步骤(缩放、旋转等)。然而,对于传统块,我需要使用多年前在我们公司创建的LISP例程来旋转属性(我认为它是在AutoCAD具备该功能之前创建的?我不知道,我只使用CAD大约8.5年)。
 
我正在尽可能多地实现自动化:
 
[列表=1]
  • 插入动态块
  • 基于USERR1值的比例
  • 强制旋转到0度
  • 允许用户输入属性
  • 选择(仅)动态旋转夹点
  • 允许用户输入动态旋转
  • 重复上述所有操作,直到取消为止
    [/列表]
    我很确定这只能通过LISP实现,但我对LISP编程一无所知,希望有人能帮上忙。
     
     
    我用这个“自动对齐”文本功能附加了许多块中的一块。
     
     
    提前感谢!
    样本。图纸
  • 回复

    使用道具 举报

    1

    主题

    1069

    帖子

    1050

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    69
    发表于 2022-7-6 09:39:45 | 显示全部楼层
    请尝试以下代码:
    1. (defun C:bpro(/ acsp adoc attvalue blkname blkobj prop_lst prop_names pt scl )
    2. (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
    3. (if (and (= (getvar "tilemode") 0) (= (getvar "cvport") 1))
    4.    (setq acsp (vla-get-paperspace adoc))
    5.    (setq acsp (vla-get-modelspace adoc))
    6. )
    7. (vla-startundomark adoc)
    8. (setq blkname "RECEPTACLE-DUPLEX-PLAY");<-- block name
    9. (if (not (tblsearch "block" blkname))(progn
    10. (alert "No such block in drawing, exit.")
    11. (exit)(princ))
    12. )
    13. (if (= 0 (setq scl (getvar "USERR1")))
    14.    (setq scl (getreal "\nEnter User scale value: "))
    15.    (setvar "USERR1" scl)
    16.    )
    17. (while (setq pt (getpoint "\nPick insertion point (Or press Enter to Exit): "))
    18. (setq blkobj (vlax-invoke acsp 'insertblock pt blkname  scl scl scl 0))
    19. (if (eq :vlax-true
    20. (vla-get-isdynamicblock
    21.   (vla-item
    22.     (vla-get-blocks
    23.       (vla-get-activedocument (vlax-get-acad-object))
    24.     )
    25.     (vla-get-effectivename blkobj)
    26.   )
    27. )
    28.    )
    29. (progn
    30.    (setq prop_names
    31.    (mapcar 'vla-get-propertyname
    32.     (setq
    33.       prop_lst
    34.        (vlax-safearray->list
    35.   (vlax-variant-value
    36.     (vla-getdynamicblockproperties blkobj)
    37.   )
    38.        )
    39.     )
    40.    )
    41.    )
    42.    (foreach prop prop_lst
    43.      (if (and (eq "Angle1" (vla-get-propertyname prop))
    44.        (member "Angle1" prop_names)
    45.   )
    46. (vla-put-value
    47.   prop
    48.   (vlax-make-variant
    49.     0.0
    50.     (vlax-variant-type (vla-get-value prop))
    51.   )
    52. )
    53.      )
    54.    )
    55. )
    56. )
    57. (setq attvalue (getstring T  "\nEnter attribute value for CCT : "))
    58.   (foreach att (vlax-invoke blkobj 'getattributes)
    59.     (if (eq "CCT" (vla-get-tagstring att))
    60.      (vla-put-textstring att attvalue)
    61.       )
    62.     )
    63. )
    64. (princ)
    65. )
    66. (prompt "\nType BPRO to run the command")
    67. (prin1)
    68. (or (vl-load-com)
    69.    (princ))

     
    ~'J'~
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-9 20:44 , Processed in 0.337800 second(s), 56 queries .

    © 2020-2025 乐筑天下

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