找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1489|回复: 18

[求助] [求助][1208]将物件旋转到其指定的角度位置

[复制链接]
发表于 2005-12-9 18:34:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[求助][1208]将物件旋转到其指定的角度位置
请教关于此程序该如何改进才可以将物件转到其指定的角度位置呢?
因为目前的指定角度都只是增加原物件的角度,
烦请各位高手可以解答一下
该如何改进
谢谢


(defun c:ts ()
(setq en (ssget))
;选物件
(setq pcen (getpoint "\n 中心点:"))
;定中心
(initget "R1 R2 R3 R4 R5 R6 R7 R8")
(setq size (getkword "\N 指定角度[→0°(R1)/↗45°(R2)/↑90°(R3)/↖135°(R4)/←180°(R5)/↙225°(R6)/↓270°(R7)/↘315°(R8)]:")
)
(if (= size nil)(setq size "R1"))
(setq size (strcase size))

(setq ptro000 (polar pcen 0 100))
(setq ptro045 (polar pcen (/ pi 4) 100))
(setq ptro090 (polar pcen (/ pi 2) 100))
(setq ptro135 (polar pcen (* pi 0.75) 100))
(setq ptro180 (polar pcen pi 100))
(setq ptro225 (polar pcen (* pi 1.25) 100))
(setq ptro270 (polar pcen (* pi 1.5) 100))
(setq ptro315 (polar pcen (* pi 1.75) 100))

(cond
     ((= size "R1")(command "rotate" en "" pcen ptro000 ))
     ((= size "R2")(command "rotate" en "" pcen ptro045 ))
     ((= size "R3")(command "rotate" en "" pcen ptro090 ))
     ((= size "R4")(command "rotate" en "" pcen ptro135 ))
     ((= size "R5")(command "rotate" en "" pcen ptro180 ))
     ((= size "R6")(command "rotate" en "" pcen ptro225 ))
     ((= size "R7")(command "rotate" en "" pcen ptro270 ))
     ((= size "R8")(command "rotate" en "" pcen ptro315 ))
     (t (command "rotate" en "" pcen ptro000 ))
)
(prin1))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-9 19:24:56 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20051205 (1781)
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. (defun c:ts ()
  13.   (setq        en   (ssget)
  14.         pcen (getpoint "\n 中心点:")
  15.         size (UREAL 7 "" "\n旋转角度" size)
  16.   )
  17.   (command "rotate" en "" pcen size)
  18.   (princ)
  19. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-9 21:30:35 | 显示全部楼层
为什么不先好好研究一下cad的基本命令呢?
用rotate,当问角度的时候,直接输入数值(可正负数),或鼠标拉出角度。
命令:  ROTATE
UCS 当前的正角方向:  ANGDIR=逆时针  ANGBASE=0

选择对象: 指定对角点: 找到 4 个

选择对象:
指定基点:
指定旋转角度或 [参照(R)]: 50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-9 22:13:10 | 显示全部楼层
狂大
我想要做到的命令程序是将图面上的线段依照指定的角度方向而旋转
此选集中可能有45度127度或任意角度的线段
但执行此程序则会统一其方向~
请问您这用普通指令做得到吗???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 00:37:44 | 显示全部楼层
看你第一贴的内容,和用rotate命令的效果没有不同。
你现在才把问题说清楚,但还有些问题
1。选集中都是line么?
2。对选集操作,旋转的起点是哪里?是否line的第一端点呢?如果是,可能旋转的结果未必是想要的,因为:比如一条水平线,从左画和从右画旋转后的结果是不同的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 06:51:00 | 显示全部楼层
最初由 狂刀 发布
[B]看你第一贴的内容,和用rotate命令的效果没有不同。
你现在才把问题说清楚,但还有些问题
1。选集中都是line么?
2。对选集操作,旋转的起点是哪里?是否line的第一端点呢?如果是,可能旋转的结... [/B]


小弟想过程序的流程应该是
先将需要线段或是弧形等具有头尾座标性质的物件
选取出来,而后订定中心点位置,并依据
中心点位置,来决定所要面向的的角度方位.
因此可能要先将所有的头尾座标角度方位归零
再依照所给的角度方位旋转

不知道这样的逻辑正确吗?

另外关于 ist  命令中,
可以查询到
"来源 点, X= 212.4051  Y=  96.5250  Z=   0.0000
              目标 点, X= 319.5043  Y= 193.8181  Z=   0.0000
          长度 = 144.6935, 在 XY 平面内的角度 =     42"
如果可以将此讯息中的 "在 XY 平面内的角度 =     42"
直接归零在给其设定值,将会更方便.
但关于角度值得 dxf 好像没有看到

希望各位版主及高手可以解答
谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 07:50:40 | 显示全部楼层
似乎像原来的“角度匹配”程序功能:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 08:46:56 | 显示全部楼层
xyp1964版主 请教一下关于 ist 命令中,
可以查询到
"来源 点, X= 212.4051 Y= 96.5250 Z= 0.0000
目标 点, X= 319.5043 Y= 193.8181 Z= 0.0000
长度 = 144.6935, 在 XY 平面内的角度 = 42"
其中关于角度值该怎样在LISP中求出,如要运用点对点计算的话
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 08:53:06 | 显示全部楼层
适合LINE实体:
  1. [FONT=courier new](vla-get-Angle (vlax-ename->vla-object (car(entsel))))[/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 09:16:10 | 显示全部楼层
刚用了XYP版主提供的程序
就是我想要的结果,但不知可以公布一下内容吗?
因为离我想要的程序还有些不同
麻烦版主了~
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 09:33:07 | 显示全部楼层
指定中心点是否有问题?还是发DWG图说明吧!
  1. [FONT=courier new](defun c:ts ()
  2.   (cmdla0)
  3.   (setq        ss   (ssget '((0 . "LINE")))
  4.         pcen (getpoint "\n中心点 : ")
  5.         ANG  (UANGLE 1 "" "\n角度" ANG nil)
  6.         i -1
  7.   )
  8.   (while (setq s1 (ssname ss (setq i (1+ i))))
  9.     (setq ang1 (vla-get-Angle (vlax-ename->vla-object s1))
  10.           da   (rad2ang (- ang ang1))
  11.     )
  12.     (command "rotate" s1 "" pcen da)
  13.   )
  14.   (cmdla1)
  15. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 10:25:43 | 显示全部楼层
谢谢版主再次解答

版主的程序在使用上好像会发生旋转后物件移位的问题
不知道是不是这样呢?

另外若要将
您的程序中改写成为使用
COND
来直接输入判断
是否可行呢?

附图中的所有物件均依照中心点为参考圆心做自身旋转.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 10:36:36 | 显示全部楼层
不知所云,还是请发dwg图,表明执行前和执行后的状况吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 11:57:36 | 显示全部楼层
附件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-10 12:24:23 | 显示全部楼层
既然是统一的旋转点,旋转后物体必然会移位!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 23:47 , Processed in 0.232285 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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