明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 404|回复: 8

如何写参照旋转、缩放?

[复制链接]
发表于 2024-3-6 20:21 | 显示全部楼层 |阅读模式
本帖最后由 zilong136 于 2024-3-6 23:12 编辑

如下图所示,参照旋转要求把线1旋转到线2重合

操作步骤:拾取旋转对象1~拾取A~拾取B~拾取C~拾取D,完成。

参照缩放同理。


以下源码来源于三领作者陈师父的赠送

【作者:  烟台优构建筑设计咨询有限公司
   总经理:陈传建 QQ 15290049 手机:13806453956(微信同号)】


  • ;;;1.参照旋转【rr】
  • (defun c:rr (/ ss p0 p1 p2 p3 p4)
  •   (prompt "\n rr:参照旋转")
  •   (setq ss (ssget))
  •   (setq p0 (getpoint "\n 原图基点:"))
  •   (setq p1 (getpoint p0 "\n 原图参照点:"))
  •   (setq p2 (getpoint p1 "\n 目标定位基点:"))
  •   (command "move" ss "" "_non" p0 "_non" p2)
  •   (setq p4 (polar p2 (angle p0 p1) (distance p0 p1)))
  •   (command "_.rotate" ss "" "_non" p2 "R" p2 p4 pause)
  • )

  • ;;;2.参照缩放【sr】
  • (defun c:sr (/ s p1 p2 p3 p4)
  •   (prompt "\n sr:参照缩放")
  •   (setq s (ssget))
  •   (setq p1 (getpoint "\n 原图基点:"))
  •   (setq p2 (getpoint p1 "\n 原图参照点:"))
  •   (setq p3 (getpoint p2 "\n 目标定位基点:"))
  •   (setq p4 (getpoint p1 "\n 目标参照点:"))
  •   (command "_.move" s "" "_non" p1 "_non" p3)
  •   (command "_.rotate" s "" "_non" p3 "R" p3 (polar p3 (angle p1 p2) (distance p1 p2)) p4)
  •   (command "_.scale" s "" "_non" p3 (/ (distance p3 p4) (distance p1 p2)))
  • )


本帖子中包含更多资源

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

x
发表于 2024-3-6 21:28 | 显示全部楼层
不移动 怎么重合呢
 楼主| 发表于 2024-3-6 21:38 | 显示全部楼层
飞雪神光 发表于 2024-3-6 21:28
不移动 怎么重合呢

三领的那个D-D-参照就是按我意写的。
发表于 2024-3-6 21:40 | 显示全部楼层
zilong136 发表于 2024-3-6 21:38
三领的那个D-D-参照就是按我意写的。

那就不清楚了 没见过
发表于 2024-3-6 22:13 | 显示全部楼层
两条线,分别计算方位角,长度,旋转方位角差值,缩放距离比例。
发表于 2024-3-6 22:58 | 显示全部楼层
CAD的对齐命令,对齐的时候不要选缩放不就行了?
发表于 2024-3-6 22:59 来自手机 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-3-6 23:28 编辑

仿cad的al对齐功能呢?
先不考虑捕捉点的用户坐标系转换,全部是世界坐标系.
两条线平移到原点.
求cd线和x轴的三个轴旋转角度:jkl.
ab线旋转和x轴重合,这一步加缩放,然后再根据jkl旋转.
这样就完成了.
你会发现做出来的功能在三维重合时可能和cad的不太一样,因为当前可视面是对齐面(或者鼠标),这个需要处理一下.(不同版本的cad提供了交互点数量不一样,所以cad也修改了bug)


说简单不简单,我敲了三百行的c#代码,不过有思路了你已经可以更快敲好.
发表于 2024-3-6 23:32 | 显示全部楼层
那这还是移动了啊 两个里面都有 move
 楼主| 发表于 2024-3-6 23:37 | 显示全部楼层
飞雪神光 发表于 2024-3-6 23:32
那这还是移动了啊 两个里面都有 move

可能是我没表达清楚吧,我本意想表达的是不能输入MOVE命令,但程序可以集成移动命令,只是不用人为来输入而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 22:06 , Processed in 0.326987 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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