明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1080|回复: 9

[讨论] autolisp如何实现符号旋转

[复制链接]
发表于 2013-12-22 16:10 | 显示全部楼层 |阅读模式
本帖最后由 275437962 于 2013-12-26 20:12 编辑

将CAD中,某层中的所有块的角度都旋转180度!不管原来它们角度是否相同!

本帖子中包含更多资源

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

x
发表于 2013-12-22 22:52 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-12-23 12:30 编辑

(if(setq m -1 ss(ssget"X"'((0 . "INSERT")(8 . "图层名"))))
  (repeat(sslength ss)
    (entmod(setq m(1+ m)
   e(entget(ssname ss m))
   e(subst'(50 . pi)(assoc 50 e)e)))))
 楼主| 发表于 2013-12-22 23:25 | 显示全部楼层
llsheng_73 发表于 2013-12-22 22:52
(if(setq m -1 ss(ssget"X"'((0 . "INSERT")(8 . "图层名"))))
  (repeat(sslength ss)
    (entmod(setq ...

你好,这段代码怎么执行啊
发表于 2013-12-23 08:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2013-12-23 11:35 | 显示全部楼层
ZZXXQQ 发表于 2013-12-23 08:00
[/post]

大侠,不是这样子的,也是我没有说清楚,我的意思是,所有块都各自旋转180度,旋转后,它们的方向不应都一样,如原来角度是380的,旋转后变成200;原来角度是60的,旋转后变成240;原来角度是280的,旋转后变成100,诸如此类。。
发表于 2013-12-23 11:41 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-12-23 11:52 编辑
275437962 发表于 2013-12-23 11:35
大侠,不是这样子的,也是我没有说清楚,我的意思是,所有块都各自旋转180度,旋转后,它们的方向不应都一 ...


你把(entmod (subst (cons 50 180) (assoc 50 ent) ent))
改成(entmod (subst (cons 50 (+ (cdr (assoc 50 ent) pi))) (assoc 50 ent) ent))不就得了?
 楼主| 发表于 2013-12-23 12:08 | 显示全部楼层
自贡黄明儒 发表于 2013-12-23 11:41
你把(entmod (subst (cons 50 180) (assoc 50 ent) ent))
改成(entmod (subst (cons 50 (+ (cdr (asso ...

按你说的改了,不行,没有反应,符号没有变化
发表于 2013-12-23 13:11 | 显示全部楼层
275437962 发表于 2013-12-23 12:08
按你说的改了,不行,没有反应,符号没有变化

  1. ;块变180度 ZZXXQQ 2013.12.23
  2. (defun c:w1 (/ EN ENT I LN S1 SS)
  3.   (if (setq s1 (entsel "\n单选图块: "))
  4.     (progn
  5.       (setq en (car s1)
  6.             ln (assoc 8 (entget en))
  7.       )
  8.       (if (and (princ "\n选择图块: ")
  9.                (setq ss (ssget (list '(0 . "INSERT") ln)))
  10.           )
  11.         (progn
  12.           (setq i -1)
  13.           (repeat (sslength ss)
  14.             (setq ent (entget (ssname ss (setq i (1+ i)))))
  15.             (entmod
  16.               (subst (cons 50 (+ (cdr (assoc 50 ent)) pi)) (assoc 50 ent) ent)
  17.             )
  18.           )
  19.         )
  20.       )
  21.     )
  22.   )
  23.   (princ)
  24. )
发表于 2013-12-23 13:30 | 显示全部楼层
275437962 发表于 2013-12-23 12:08
按你说的改了,不行,没有反应,符号没有变化

  1. ;;块旋转180 这个要好些,可用于带属性的块 自贡黄明儒2013年12月23日
  2. (defun c:w1 (/ E EN I LN P10 S1 SS)
  3.   (if (setq s1 (entsel "\n单选图块: "))
  4.     (progn
  5.       (setq ln (assoc 8 (entget (car s1))))
  6.       (princ "\n选择图块: ")
  7.       (if (setq ss (ssget (list '(0 . "INSERT") ln)))
  8.         (repeat        (setq i (sslength ss))
  9.           (setq e (ssname ss (setq i (1- i))))
  10.           (setq p10 (vlax-3d-point (cdr (assoc 10 (entget e)))))
  11.           (vla-rotate (vlax-ename->vla-object e) p10 pi)
  12.         )
  13.       )
  14.     )
  15.   )
  16.   (princ)
  17. )
 楼主| 发表于 2013-12-23 14:22 | 显示全部楼层
自贡黄明儒 发表于 2013-12-23 13:30

谢谢了,很好用,麻烦你了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 13:23 , Processed in 1.126217 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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