明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3892|回复: 12

顺线的方向延长和缩短直线。

[复制链接]
发表于 2012-9-8 23:36:06 | 显示全部楼层 |阅读模式
想做个程序,先给定两个点,然后做一直线,这个很容易。然后需要起点缩短一点,终点又延长一点。这个后面的功能如何实现?谢谢。

点评

那这不是移动吗  发表于 2012-9-10 12:03
不用编程,用LENGTHEN命令就可完成。  发表于 2012-9-9 08:40
发表于 2024-5-4 14:43:06 | 显示全部楼层
lyqiezi 发表于 2012-9-10 13:22
(defun c:ssxd()
  (setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
  (setq d2 (getreal "\n输入 ...

感谢分享~
生成新线断,原线段没有删除。
学习了~
发表于 2022-5-1 18:44:38 | 显示全部楼层
lyqiezi 发表于 2012-9-10 13:22
(defun c:ssxd()
  (setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
  (setq d2 (getreal "\n输入 ...

很实用,收了。
发表于 2019-1-7 05:35:12 | 显示全部楼层
延长到相交?
 楼主| 发表于 2012-9-9 08:48:01 | 显示全部楼层
试了一下,蛮好玩,但还没有完全达到目的。因为我需要一段缩短,一段延长。这个命令只能固定起点,变终点。
发表于 2012-9-9 10:40:40 | 显示全部楼层
延长缩短多少?哪个是起点,哪个是终点?
发表于 2012-9-9 16:57:19 | 显示全部楼层
做两次lengthen吧
发表于 2012-9-9 23:27:21 | 显示全部楼层
求点坐标,然后算出缩短延长后的坐标,删除以前的直线,重绘直线,这样应该可以
发表于 2012-9-10 09:53:58 | 显示全部楼层
本帖最后由 lyqiezi 于 2012-9-10 09:54 编辑

我觉得可以用缩放命令,以线中点为缩放基点,缩放比例为:(两端要延长的距离*2+原有线段长度)/原有线段长度
当然,这个只能是两端伸长一样的情况,如果不同的话就要重新计算起点终点了
发表于 2012-9-10 11:51:16 | 显示全部楼层
啊,没看清,以为两边都要伸长,原来是一边伸长一边缩短
用极坐标方式应该比较容易解决吧
发表于 2012-9-10 13:22:34 | 显示全部楼层
本帖最后由 lyqiezi 于 2012-9-10 13:33 编辑

(defun c:ssxd()
  (setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
  (setq d2 (getreal "\n输入终点伸长尺寸(缩短输负值)"))
  (setq pt1 (getpoint "\n线段起点:"))
  (setq pt2 (getpoint "\n线段终点:"))
  (setq os (getvar "osmode"))  ;不在开头加,因为选点的时候还是要捕捉的
  (setvar "osmode" 0)
  (setq ang1 (angle pt1 pt2))
  (setq pt1 (polar pt1 ang1 (* -1 d1)))
  (setq pt2 (polar pt2 ang1 d2))
  (command "line" pt1 pt2 "")
  (setvar "osmode" os)
  (prin1)
)
发一个看看,合适用不?
 楼主| 发表于 2012-9-11 10:13:59 | 显示全部楼层
谢谢大家。楼上两位的极坐标法应该是最有效的。我一直苦恼如何用简单的方法确定线的角度和方向。原来极坐标法及其容易解决问题。
发表于 2013-5-23 12:24:59 来自手机 | 显示全部楼层
非常方便的程序!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 18:32 , Processed in 0.223886 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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