明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: gys2010

[源码] 批量把图元旋转至水平、有问题、请高手帮忙下

[复制链接]
发表于 2014-12-12 09:24:09 | 显示全部楼层
可以用。你的图是什么?左下起点。逆时钟方向的图。我的cad2007
发表于 2014-12-14 22:20:12 | 显示全部楼层
按说楼主这种要求应该可以实现。。。
框选得到闭合多线段图元表。。。遍历该表:选出被它包含的图元(如果有图元在闭合多线段图元表中,将其从表中去掉)与该多线段构一个选择集,同时找出该多线段左下角点(旋转基点),计算出含该点的南边一条边的角度进一步算出旋转角。。。调用ROTATE命令。。。这是计算最少的了
发表于 2014-12-14 23:28:07 来自手机 | 显示全部楼层
llsheng_73 发表于 2014-12-14 22:20
按说楼主这种要求应该可以实现。。。
框选得到闭合多线段图元表。。。遍历该表:选出被它包含的图元(如果 ...

1 按面积排序  2取点  3凸包扫描(高飞)4最小矩形5旋转
 楼主| 发表于 2014-12-17 22:01:23 | 显示全部楼层
自贡黄明儒 发表于 2014-12-14 23:28
1 按面积排序  2取点  3凸包扫描(高飞)4最小矩形5旋转

有没有类似程序
发表于 2014-12-19 08:50:44 | 显示全部楼层
我山寨presscad的
  1. (defun c:rp()
  2. (setvar "cmdecho" 0)
  3. (setq ss (entsel "\n请指定旋转用之参考边:")
  4.         en (entget (car ss))
  5.         p1(cdr (assoc 10 en))
  6.         p2(cdr (assoc 11 en))
  7.         c(trans (cadr ss)1 0))
  8.        (redraw (car ss) 3)  ;选择高亮
  9. (if (>(distance c p1)(distance c p2))
  10.         (progn
  11.         (setq p1(cdr (assoc 11 en))
  12.               p2(cdr (assoc 10 en)))
  13.     )
  14. )
  15.   (princ "\n请选取欲旋转的图元")
  16.   (setq ss1 (ssget))
  17.   (setq p3 (trans (getpoint "请指定旋转方向:") 1 0))
  18.   (setq ang1 (angle p1 p2)
  19.         ang2 (angle p1 p3)
  20.         ang  (/ ang1 (/ pi 2)))
  21. (repeat 3
  22. (if  (> ang 1)
  23.          (setq ang (- ang 1.0)))
  24. )
  25. (setq RA1(*(/ (* ang (/ pi 2))pi)180))

  26. (if (> pi ang1)
  27. (progn (if ( > ang2 ang1) (progn (if ( < ang2 (+ ang1 PI))(setq RA (- 90. RA1 ))(setq RA (* -1 RA1 ))))(setq RA (* -1. RA1))))
  28. (progn (if ( < ang2 ang1) (progn (if ( > ang2 (- ang1 pi))(setq RA (* -1. RA1 ))(setq RA (- 90. RA1))))(setq RA (- 90. RA1))))
  29. )
  30. ;(princ(sslength SS1))
  31. ;(princ RA)
  32.      (command ".ROTATE" ss1 "" (trans p1 0 1) RA)
  33.   (princ "\n旋转角度=") (princ RA)
  34. (princ )
  35. )
 楼主| 发表于 2014-12-20 09:32:56 | 显示全部楼层
易云网络 发表于 2014-12-19 08:50
我山寨presscad的

感谢易云网络的帮助,这就是我需要的状态
发表于 2014-12-20 10:30:49 | 显示全部楼层
感谢易云网络,如果能连续执行就更好
发表于 2014-12-20 11:28:24 | 显示全部楼层
这个程序90度整倍数的时候就不好使了
发表于 2018-10-25 12:24:14 | 显示全部楼层
不错的帖子 支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-1 03:35 , Processed in 0.172534 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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