找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: xyz518mm

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

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-12-10 12:33:20 | 显示全部楼层
自身中点旋转

  1. (defun c:tt (/ p an ss sl i e el sp ep pmid sp1 ep1)
  2.   (if (and (setq p (getpoint "\nCenter: "))
  3.            (setq an (getangle p "\nAngle: "))
  4.            (setq ss (ssget '((0 . "line"))))
  5.       )
  6.     (progn
  7.       (setq sl (sslength ss)
  8.             i  -1
  9.       )
  10.       (repeat sl
  11.         (setq e           (ssname ss (setq i (1+ i)))
  12.               el   (entget e)
  13.               sp   (vlax-curve-getstartpoint e)
  14.               ep   (vlax-curve-getendpoint e)
  15.               pmid (polar sp (angle sp ep) (setq d (/ (distance sp ep) 2.)))
  16.         )
  17.         (setq sp1 (polar pmid an d)
  18.               ep1 (polar pmid (+ an pi) d)
  19.         )
  20.         (setq el (subst (cons 10 sp1) (assoc 10 el) el)
  21.               el (subst (cons 11 ep1) (assoc 11 el) el)
  22.         )
  23.         (entmod el)
  24.       )
  25.     )
  26.   )
  27.   (princ)
  28. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-12-10 23:14:30 | 显示全部楼层
再改一下,支持ucs;可两点定角度或直接输入角度值
[php]
(defun c:rang (/ ucsa an ss i e ps pm)
  (setq ucsa (angle '(0. 0. 0.) (getvar "ucsxdir")))
  (if (and (setq an (getangle "\n角度(可直接输入角度值): "))
           (setq ss (ssget '((0 . "line"))))
      )
    (progn
      (setq  i  -1)
      (repeat (sslength ss)
        (setq e         (ssname ss (setq i (1+ i)))
              ps (vlax-curve-getstartpoint e)
              pm (vlax-curve-getpointatparam e(/(vlax-curve-getendparam e)2))
        )
        (vla-rotate (vlax-ename->vla-object e)(vlax-3d-point pm) (- an (angle pm ps) (- ucsa)))
      )
    )
  )
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 23:46 , Processed in 0.409191 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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