乐筑天下

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

[编程交流] 基于角度de旋转块

[复制链接]

6

主题

25

帖子

19

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 04:30:23 | 显示全部楼层 |阅读模式
你好
 
我必须围绕插入点旋转几百个块,通过从电子表格导入的块中定义的属性值。
 
我试着用一个带有旋转集的动态块来实现这一点,但似乎不能将默认旋转角度设置为一个字段,并将其链接回属性?
 
这可以使用LISP例程实现吗?
 
干杯
回复

使用道具 举报

6

主题

25

帖子

19

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 04:46:51 | 显示全部楼层
这段代码很有效,只需要改变接收角度,从用户输入到块内的属性。
 
 
  1. (defun c:test ( / ss ang ) (vl-load-com)
  2. (if (and (setq ss  (ssget "_:L" '((0 . "INSERT"))))
  3.           (setq ang (getangle "\nSpecify Rotation Angle: "))
  4.      )
  5.    (
  6.      (lambda ( i / e o )
  7.        (while (setq e (ssname ss (setq i (1+ i))))
  8.          (vla-put-rotation (setq o (vlax-ename->vla-object e))
  9.            (+ (vla-get-rotation o) ang)
  10.          )
  11.        )
  12.      )
  13.      -1
  14.    )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 04:49:00 | 显示全部楼层
该属性块中有多少属性值?
如果不止一个,哪一个与角度值有关?
价值的单位是什么?度/弧度?
回复

使用道具 举报

6

主题

25

帖子

19

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 05:01:55 | 显示全部楼层
您好,Tharwat,块中大约有9个属性,与角度相关的属性称为“旋转”,单位为度。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 05:05:49 | 显示全部楼层
尝试以下操作:
  1. (defun c:blkrot ( / i r s )
  2.    (if (setq s (ssget "_:L" '((0 . "INSERT") (66 . 1))))
  3.        (repeat (setq i (sslength s))
  4.            (if
  5.                (and
  6.                    (setq r (LM:getattributevalue (setq b (ssname s (setq i (1- i)))) "ROTATION"))
  7.                    (setq r (angtof r))
  8.                )
  9.                (vla-put-rotation (vlax-ename->vla-object b) r)
  10.            )
  11.        )
  12.    )
  13.    (princ)
  14. )
  15. ;; Get Attribute Value  -  Lee Mac
  16. ;; Returns the value held by the specified tag within the supplied block, if present.
  17. ;; blk - [ent] Block (Insert) Entity Name
  18. ;; tag - [str] Attribute TagString
  19. ;; Returns: [str] Attribute value, else nil if tag is not found.
  20. (defun LM:getattributevalue ( blk tag / enx )
  21.    (if (= "ATTRIB" (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk)))))))
  22.        (if (= (strcase tag) (strcase (cdr (assoc 2 enx))))
  23.            (cdr (assoc 1 enx))
  24.            (LM:getattributevalue blk tag)
  25.        )
  26.    )
  27. )
  28. (vl-load-com) (princ)

 
LM:从属性函数集中获取AttributeValue。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 05:19:21 | 显示全部楼层
试试这个未经测试的代码,然后告诉我。
 
  1. Untested wrong codes
回复

使用道具 举报

6

主题

25

帖子

19

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 05:21:59 | 显示全部楼层
谢谢李Mac你的代码工作得很好!明天上班我可以放松一下
 
Tharwat你的代码几乎在那里旋转属性,但不是整个块。干杯
 
谢谢大家
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 05:34:34 | 显示全部楼层
不客气,休眠
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:16 , Processed in 0.430183 second(s), 68 queries .

© 2020-2025 乐筑天下

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