明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2066|回复: 9

[提问] 以对象的中心为基点进行旋转。旋转一次后命令结束,怎样用lisp实现

[复制链接]
发表于 2019-4-15 16:55:54 | 显示全部楼层 |阅读模式
本帖最后由 李青松 于 2019-4-15 17:06 编辑

以对象的中心为基点进行旋转。旋转一次后命令结束,怎样用lisp实现,在这个例子中是以圆的中心为基点。

本帖子中包含更多资源

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

x
发表于 2019-4-17 13:35:14 | 显示全部楼层
(defun c:tcct ()
(setvar "CMDECHO" 0)
(vl-load-com)
(while (setq s1 (entsel "\n<<请选择要旋转180度的物体>>"))
  (setq en (car s1))
  (vla-getboundingbox (vlax-ename->vla-object en) 'minpoint 'maxpoint)
  (setq pmax (vlax-safearray->list maxpoint)
        pmin (vlax-safearray->list minpoint))
  (setq pm (polar pmin (angle pmin pmax) (/ (distance pmax pmin) 2)))
  (command ".ROTATE" en "" "non" pm "90")
        ;(command "circle" pm 3)
  (princ "\n旋转完成!")
)
(setvar "CMDECHO" 1)
(prin1)
)
回复 支持 2 反对 0

使用道具 举报

发表于 2019-4-15 17:33:43 | 显示全部楼层
(defun c:bb ()(command "rotate" (ssget) "" (Osnap (cadr (entsel "\n选择圆,或圆弧: ")) "center"))(princ))
 楼主| 发表于 2019-4-15 18:00:07 | 显示全部楼层
1291500406 发表于 2019-4-15 17:33
(defun c:bb ()(command "rotate" (ssget) "" (Osnap (cadr (entsel "\n选择圆,或圆弧: ")) "center"))(pri ...

运行不了,显示未知命令。
发表于 2019-4-15 19:16:00 | 显示全部楼层
本帖最后由 1291500406 于 2019-4-15 19:21 编辑
李青松 发表于 2019-4-15 18:00
运行不了,显示未知命令。

我的电脑可以运行呀,cad2007和cad2017测试都没问题,你是不是粘贴复制少括号了
 楼主| 发表于 2019-4-16 09:22:55 | 显示全部楼层
李青松 发表于 2019-4-15 18:00
运行不了,显示未知命令。

可以用,程序很好。谢谢
发表于 2019-4-17 16:45:18 | 显示全部楼层
本帖最后由 1291500406 于 2019-4-17 17:26 编辑
linheyuanpcb 发表于 2019-4-17 13:35
(defun c:tcct ()
(setvar "CMDECHO" 0)
(vl-load-com)

里面有物体中心坐标,挺好的

只能转一个物体,不能多个,转的是90°,不是180

(defun c:angle ()(setvar "CMDECHO" 0)(vl-load-com)(setq bbang(getreal"\n请输入旋转角度:"))(setq en1 (ssget))
(while (setq s1 (entsel "\n<<选物体中心旋转>>"))(setq en (car s1))(vla-getboundingbox (vlax-ename->vla-object en) 'minpoint 'maxpoint)
(setq pmax (vlax-safearray->list maxpoint) pmin (vlax-safearray->list minpoint))(setq pm (polar pmin (angle pmin pmax) (/ (distance pmax pmin) 2)))
(command ".ROTATE" en1 "" "non" pm bbang)(princ "\n旋转完成!"))(setvar "CMDECHO" 1)(prin1))

旋转一次后命令结束就把(while ...) 去掉
要动态(setq bbang(getreal"\n请输入旋转角度:"))       bbang去掉



点评

学习了,这个不错  发表于 2022-11-30 06:40
发表于 2019-5-10 09:26:37 | 显示全部楼层
10年没有上此论坛了,竟然帐号还能用!
我早在10年前写了一个,就是CAD里,实体转“平面线条,转好后,经常碰到某些圆孔的两个弧是重叠的,看起来是个半圆,并不是一个圆。。我做了一个代码,供你参考。
;;将偏差二维轮廓弧转正,2008.05.26编译,==============================
(defun c:RRV (/ ss1 ss2 a1 a2 n1 n2)
(prompt "二维轮廓弧转正*****黄河")
(setq ss1 (entsel))
(setq ss2 (entget (car ss1)))

(setq a1 (assoc 0 ss2)) ;;若不是弧,退出
(setq a2 (cdr a1))
(if ( /= a2 "ARC") (exit))

(setq n1 (assoc 10 ss2))
(setq n2 (cdr n1))
;;必须解决坐标问题,否则串表坐标都以世界为准
(command "-VIEW" "s" "222")
(command "ucs" "w")
(command "ucs" "v")
(command "_rotate" ss1 "" n2 "180")
(command "-VIEW" "r" "222")
(terpri)(prompt "已完成")(princ)
(c:rrv) ;;重复执行
)
;;===========================================================================

点评

感谢,学习一下  发表于 2022-11-30 06:38
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 22:19 , Processed in 0.156789 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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