乐筑天下

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

[编程交流] 动态块x Autolisp

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:22:17 | 显示全部楼层 |阅读模式
有人知道如何使用autolisp将动作的值更改为动态块长度吗?非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:33:47 | 显示全部楼层
您可以使用我的设置动态块属性值函数,这是我的动态块函数的一部分。
回复

使用道具 举报

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:41:41 | 显示全部楼层
令人印象深刻的是,我怀疑这正是所需要的。
但由于我什么都不懂,我不知道如何使用它。
使用他们的例程,下面是我试图将动态块的标签距离值设置为“1”的步骤。
当然,它不起作用。
 
  1. (defun c:test ( blk prp val )
  2.   (setq blk (car (entsel)))    ; block name
  3.   (setq prp "distance1")      ; label distance
  4.   (setq val 1)                     ; distance value
  5.   (setq prp (strcase prp))
  6.    (vl-some
  7.       '(lambda (x)
  8.           (if (= prp (strcase (vla-get-propertyname x)))
  9.                (progn
  10.                    (vla-put-value x (vlax-make-variant val
  11. (vlax-variant-type (vla-get-value x))))
  12.                    (cond (val-t##
  13.                )
  14.            #
  15.        )
  16.        (vlax-invoke blk 'getdynamicblockproperties)
  17.    )
  18. )

 
非常感谢。
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:46:05 | 显示全部楼层
你的代码有些地方出错了,我重写了它,它很好。
  1. (defun c:test (/ blk prp val)
  2. (setq blk (vlax-ename->vla-object (car (entsel))))                ; block object
  3. (setq prp "distance1")                ; label distance
  4. (setq val 1)                                ; distance value
  5. (setq prp (strcase prp))
  6. (vl-some
  7.    '(lambda (x)
  8.       (if (= prp (strcase (vla-get-propertyname x)))
  9.    (vla-put-value  x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
  10.       )
  11.     )
  12.    (vlax-invoke blk 'getdynamicblockproperties)
  13. )
  14. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:51:08 | 显示全部楼层
请注意,没有必要以任何方式修改我的代码-
您应该使用所需的参数调用函数,例如:
  1. (defun c:test ( / blk )
  2.    (if (and (setq blk (car (entsel "\nSelect dynamic block: ")))
  3.             (setq blk (vlax-ename->vla-object blk))
  4.             (= "AcDbBlockReference" (vla-get-objectname blk))
  5.             (= :vlax-true (vla-get-isdynamicblock blk))
  6.        )
  7.        (LM:setdynpropvalue blk "distance1" 1.0)
  8.    )
  9.    (princ)
  10. )
  11. ;; Set Dynamic Block Property Value  -  Lee Mac
  12. ;; Modifies the value of a Dynamic Block property (if present)
  13. ;; blk - [vla] VLA Dynamic Block Reference object
  14. ;; prp - [str] Dynamic Block property name (case-insensitive)
  15. ;; val - [any] New value for property
  16. ;; Returns: [any] New value if successful, else nil
  17. (defun LM:setdynpropvalue ( blk prp val )
  18.    (setq prp (strcase prp))
  19.    (vl-some
  20.       '(lambda ( x )
  21.            (if (= prp (strcase (vla-get-propertyname x)))
  22.                (progn
  23.                    (vla-put-value x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
  24.                    (cond (val) (t))
  25.                )
  26.            )
  27.        )
  28.        (vlax-invoke blk 'getdynamicblockproperties)
  29.    )
  30. )
  31. (vl-load-com) (princ)

如果您在使用我的代码时保留我的代码头,我将不胜感激。
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:58:44 | 显示全部楼层
对不起,李,我不知道这是你的密码。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:05:36 | 显示全部楼层
 
别担心。
回复

使用道具 举报

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:10:34 | 显示全部楼层
它工作得很好。我会接受你的评论。为什么不呢?非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:16:47 | 显示全部楼层
不客气,法比奥,很乐意帮忙。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 23:23:19 | 显示全部楼层
FabioDG,
 
请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:35 , Processed in 0.863038 second(s), 72 queries .

© 2020-2025 乐筑天下

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