明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: mmttzj

[讨论]已知直线与曲线的距离,和水平线与垂直线的交点,求曲线上与水平线上垂直的距

  [复制链接]
 楼主| 发表于 2009-3-31 15:08:00 | 显示全部楼层

这个就是我说的三条线的DWG

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-3-31 15:18:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-31 17:30:19 编辑

highflybir

直线与曲线的距离就是:

水平的 LINE 与 SPLINE其中一点 的之间的垂直距离

不用选择的原因主要是在很多的情况下都有可能遇到这种要定的点,需要的时候只要用一个自定义函数来调用就可以,就像是zml84说的内插。

已知条件:

假设两条直线之间的交点为P1点(或者PT)

曲线上的任意一点P3点(这个点是曲线点,任意的点,并不是所求的点)

曲线和水平线的垂直的距离为D(或者BB)

我做了个测试用的LISP可以直接调用好了。。这样还方便点

(defun c:ex()
  (setq p1 '(1 0)
 p2 '(25 166)
 p3 '(34 33)
 p4 '(160 16)
 p5 '(200 0)
 p6 '(1 200)
 d 80
 )
  (command "line" p5 p1 p6 "")
  (command "spline" p2 p3 p4 """""")
  )

发表于 2009-3-31 16:11:00 | 显示全部楼层
  1. 假设两条直线之间的交点为P1点(或者PT)
  2. 曲线上的任意一点P3点
  3. 曲线和水平线的垂直的距离为D点(或者BB)
复制代码
什么是 '距离为D点'
距离是距离 / 点是点  <=== 什么是 '距离为D点'
又如果已知 曲线上的任意一点P3点
那么 曲线和水平线的垂直的距离 岂不是一减即得?
依 第 12 楼 Run c:ex 所得的图形 c:ex
(car
  (intobj
    (mapcar '+ pt (list 0 dd))
    (mapcar '+ pt (list 1 dd))
    ee
    acExtendThisEntity
  )
)
===>
(55.9524 20.0 0.0)
~("55.95244860942859 20.0 0.0)
您的问题点在那儿呀?

 楼主| 发表于 2009-3-31 17:35:00 | 显示全部楼层
Andyhon发表于2009-3-31 16:11:00

 什么是 '距离为D点'

距离是距离 / 点是点  <=== 什么是 '距离为D点'

又如果已知 曲线上的任意一点P3点
那么 曲线和水平线的垂直的距离 岂不是一减即得?

依 第 12 楼 Run c:ex 所得的图形 c:ex

(car
  (intobj
    (mapcar '+ pt (list 0 dd))
    (mapcar '+ pt (list 1 dd))
    ee
    acExtendThisEntity
  )
)

===>

~("55.95244860942859 20.0 0.0)

您的问题点在那儿呀?

上面错误的地方我已经修改了。。。

(55.9524 20.0 0.0)这个是怎么得到的啊?我运行了出错。。。

发表于 2009-3-31 19:12:00 | 显示全部楼层

假设两条直线之间的交点为P1点(或者PT)
删此条件 xxxx 曲线上的任意一点P3点
曲线和水平线的垂直的距离为D(或者BB)

===================================

依 第 12 楼 Run c:ex 所得的图形 c:ex

则 pt 为 (1 0 0)  即 p1 点
令 spline 为 ee ; dd = 20  即 D(或者BB)

返回 ===> (55.9524 20.0 0.0)

 楼主| 发表于 2009-4-1 08:11:00 | 显示全部楼层

令 spline 为 ee

这里是怎么选取的SPLINE?

另外,如果将程序插入到其他的LISP程序里面会不会删除其他的线?

发表于 2009-4-1 09:21:00 | 显示全部楼层

这里是怎么选取的SPLINE?
若图面单纯的如 C:ex 所绘制
那么可以这样取得 ee
(setq ee (ssname (ssget "X" '((0 . "SPLINE"))) 0))

另外,如果将程序插入到其他的LISP程序里面会不会删除其他的线?

删除其他的什么线? / 这个么直接调试会有答案的

 楼主| 发表于 2009-4-1 09:38:00 | 显示全部楼层

因为我需要插入个程序里面会有很多的SPLINE,所以(setq ee (ssname (ssget "X" '((0 . "SPLINE"))) 0))一定会选择到其他的SPLIEN上吧?

还有就是加载的时候出现了; 错误: no function definition: INTOBJ

如果合适的话,我把我做的前面的LIPS传你看下。。

我把我的邮箱短信给你了

发表于 2009-4-1 10:00:00 | 显示全部楼层

INTOBJ函数在 第3楼
第11楼的图面请转降至AC1018以下
或另给 '有很多的SPLINE' 的调试用图
我们的机子老,跑新版超慢....

发表于 2009-4-1 10:02:00 | 显示全部楼层
mmttzj发表于2009-3-30 19:44:00中间不要用鼠标去选取点的哦。。。最后直接得出曲线上的坐标点。。

不用鼠标选如何得到直线坐标及坐标系的原点?
不用鼠标选择曲线如何求出曲线到直线的距离?
最少也要框选图元才行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-5 23:38 , Processed in 0.201437 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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