明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5476|回复: 27

[基础] 刷块角度旋转

  [复制链接]
发表于 2009-12-16 12:50 | 显示全部楼层 |阅读模式

大家好,那位能不能帮给写一个刷块角度的LSP,例如A块为30度,像格式刷一样,点一下A块,再点B块或C 块,或D块,或者框选其它块,然后这些块就也跟着A块角度一样旋转为30度,

就是把A块的角度刷给其它块,其它块也旋转,以前在明经网上看到一则这样的代码,但已经找不到了,那位大哥给写一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-12-16 16:25 | 显示全部楼层
本帖最后由 crazylsp 于 2011-4-21 09:53 编辑

我有个土方法,就是在调好的块底部先捕捉一点,

 楼主| 发表于 2009-12-17 07:10 | 显示全部楼层

这样不太方便吧,更何况你点击的旋转的角度很多情况下都不如意的,

发表于 2009-12-17 22:42 | 显示全部楼层
本帖最后由 作者 于 2009-12-17 23:13:09 编辑

用vlisp编了一个
  1. ;;; By lihuaili
  2. ;;; Copyright (C) 2009 lihuaili, All Rights Reserved
  3. ;;; E-mail: lihl671@126.com
  4. ;;; QQ: 1102834080
  5. (vl-load-com)
  6. ;;;获得块参照的角度
  7. (defun Get_BlkRefObj_Ang (blkObj)
  8.   (if (= (vla-get-ObjectName blkObj) "AcDbBlockReference")
  9.     (vla-get-Rotation blkObj)
  10.   )
  11. )
  12. ;;;设置块参照的角度
  13. (defun Set_BlkRefObj_Ang (blkObj rang)
  14.   (if (= (vla-get-ObjectName blkObj) "AcDbBlockReference")
  15.     (vla-put-Rotation blkObj rang)
  16.   )
  17.   (vla-Update blkObj)
  18. )
  19. (defun c:BlkRef_ang_Match (/ loop ent1 ent2 obj1 obj2 rang)
  20.   (setq loop T)
  21.   (if (setq ent1 (car (entsel "选择一个源块: ")))
  22.     (progn
  23.       (setq obj1 (vlax-ename->vla-object ent1)
  24.      rang (Get_BlkRefObj_Ang obj1)
  25.       )
  26.       (while loop
  27. (if (and rang
  28.    (setq ent2
  29.    (car (entsel "选择一个目标块(按右键或回车结束选择): ")
  30.    )
  31.    )
  32.      )
  33.    (progn (setq obj2 (vlax-ename->vla-object ent2))
  34.    (Set_BlkRefObj_Ang obj2 rang)
  35.    )
  36.    (setq loop nil)
  37. )
  38.       )
  39.     )
  40.     (alert "选择的不是块参照")
  41.   )
  42. )
发表于 2009-12-17 23:03 | 显示全部楼层

图块角度刷使用示例

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2009-12-18 12:57 | 显示全部楼层

感谢4楼高人,此恩不容谢,定当厚报,

 楼主| 发表于 2009-12-18 22:17 | 显示全部楼层
4楼楼主能不能改进一下,现在只能单选,要是能进行框先就好了
发表于 2009-12-19 00:03 | 显示全部楼层
本帖最后由 作者 于 2009-12-19 13:22:28 编辑

一次框选程序
  1. ;;; By lihuaili
  2. ;;; Copyright (C) 2009 lihuaili, All Rights Reserved
  3. ;;; E-mail: lihl671@126.com
  4. ;;; QQ: 1102834080
  5. (vl-load-com)
  6. ;;;获得块参照的角度
  7. (defun Get_BlkRefObj_Ang (blkObj)
  8.   (if (= (vla-get-ObjectName blkObj) "AcDbBlockReference")
  9.     (vla-get-Rotation blkObj)
  10.   )
  11. )
  12. ;;;设置块参照的角度
  13. (defun Set_BlkRefObj_Ang (blkObj rang)
  14.   (if (= (vla-get-ObjectName blkObj) "AcDbBlockReference")
  15.     (vla-put-Rotation blkObj rang)
  16.   )
  17.   (vla-Update blkObj)
  18. )
  19. (defun c:BlkRef_ang_Match (/  ent1 ent2 obj1 obj2 rang ss Cnt)
  20.   (if (setq ent1 (car (entsel "选择一个源块: ")))
  21.     (progn
  22.       (setq obj1 (vlax-ename->vla-object ent1)
  23.      rang (Get_BlkRefObj_Ang obj1)
  24.       )
  25.       (princ)
  26.       (princ "选择一个或多个目标块: ")
  27.       (if (setq SS (ssget '((0 . "INSERT"))))
  28. (progn
  29.    (setq Cnt 0)
  30.    (repeat (sslength SS)
  31.      (setq ent2 (ssname SS Cnt))
  32.      (setq obj2 (vlax-ename->vla-object ent2))
  33.      (Set_BlkRefObj_Ang obj2 rang)
  34.      (setq Cnt (1+ Cnt))
  35.    )
  36. )
  37.       )
  38.     )
  39.     (alert "选择的不是块参照")
  40.   )
  41. )
发表于 2009-12-21 11:18 | 显示全部楼层
厉害!谢谢   学习了
 楼主| 发表于 2009-12-23 12:34 | 显示全部楼层
感谢8楼楼主,再厚报
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 05:20 , Processed in 0.236412 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表