乐筑天下

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

求助!如何使选中的多个块以各自插入点为基点旋转同一个角度?

[复制链接]

6

主题

71

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2003-12-25 18:26:00 | 显示全部楼层 |阅读模式
如何使选中的多个块以各自插入点为基点旋转同一个角度?
我把地形图插入客户拿独立坐标的图中,地形图旋转了角度n,问题是图中的标准块也旋转了角度n,我得一个个的把它们转回来,不然标准块都斜躺着。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-25 18:55:00 | 显示全部楼层
  1. (defun c:test()
  2.   (prompt "选择块...")
  3.   (setq ss (ssget '((0 . "INSERT"))))
  4.   (setq ang (getreal "输入旋转角度:"))
  5.   (setq i 0)
  6.   (repeat (sslength ss)
  7.     (setq ent (ssname ss i))
  8.     (setq pt (cdr (assoc 10 (entget ent))))
  9.     (command "_.rotate" ent "" pt ang)
  10.     (setq i (1+ i))
  11.   )
  12.   (princ)
  13. )
回复

使用道具 举报

6

主题

71

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2003-12-26 13:14:00 | 显示全部楼层
真是及时雨呀,多谢了!
回复

使用道具 举报

8

主题

35

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
67
发表于 2003-12-27 12:03:00 | 显示全部楼层

完整了一下呵呵:
(defun c:rb( / ss ang angs ab i ang_old)
  (prompt "选择块...")
  (setq ss (ssget (cons 0  "insert")  ))
  (initget "A")
  (setq angs (getreal "输入旋转角度:")
        ab T)
  (if (= angs "A")
    (setq angs (getreal "输入块的绝对角度:")
          ab nil)
    )
  (setq i 0)
  (if (and angs ss)
    (progn
      (command "._undo" "BE")
      (repeat (sslength ss)
        (setq ent (ssname ss i))
        (setq ang_old (cdr (assoc 50 (setq ent (entget ent)))))
        (if ab
          (setq ang (+ ang_old (angtoarc angs)))
          (setq ang (angtoarc ang))
          )
        (setq ent (subst (cons 50 ang) (assoc 50 ent) ent))
        (entmod ent)
        (setq i (1+ i))
      )
      (command "._undo" "end")
    )
  )
  (princ)
)
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2003-12-29 05:06:00 | 显示全部楼层
怎么连 trans都不加?
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-12-30 17:09:00 | 显示全部楼层

;;寫得不錯只是筆誤;
;;(setq ANG (ANGTOARC ANG))→(setq ANG (ANGTOARC ANGS))
;;(setq SS (ssget (cons 0 "insert")))→(setq SS (ssget (list (cons 0 "insert"))))
;;及缺函數ANGTOARC
(defun ANGTOARC (KEY) (/ (* KEY pi) 180))
;;無痕:怎麼連trans都不加?
;;加trans幹甚麼用??
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-1-1 13:49:00 | 显示全部楼层
是这样的: 对这个程序.两种写法.
一种直接改块的dxf 50(如4楼),但是如果块含有属性,只能旋转块实体.不能旋转属性, 除非上面的程序加入对"后续"部分的循环处理(因为可能不止一个属性)
另外一种,调用 rotate 命令,可以连内部一起旋转,但是当ucs与world有不同角度的时候,2楼的帖子就出错,必须加trans坐标转换.
我上贴是对2楼的帖子说的.当然4楼的也存在上述缺陷.
所以,还远不是"完善"的程序.
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-1 16:29:00 | 显示全部楼层
(command "_.ucs" "")
...
(command "_.ucs" "p")
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-1-1 22:22:00 | 显示全部楼层
用ucs命令这个也是可以的,只是有一点不好。就是画大图的时候会重新生成。运行效率低下。
所以不推荐
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-1-2 09:05:00 | 显示全部楼层

可整个程序只用一次,会觉得影响效率吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 00:18 , Processed in 0.627001 second(s), 72 queries .

© 2020-2025 乐筑天下

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