明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: start4444

[源码] 如图怎么自动标出p1 p2的距离尺寸,求提示帮助(更新说明等待高手。。。)

[复制链接]
 楼主| 发表于 2013-8-13 11:23 | 显示全部楼层
fl202 发表于 2013-7-23 17:20
你们搞得好复杂。。。

取得直线的端点px和止点py,得到直线的角度ang1, (setq ang1 (angle px py)),  ( ...

谢谢你的回复,这个其实跟直线的角度没关系啊,只是要p1的垂直线与直线的交点的标注,无论直线是什么角度都没关系的,而且如果不选择直线不知道能不能实现,因为要选很多的点
发表于 2013-8-13 17:13 | 显示全部楼层
这个很简单啊,你的意思是通过p1的竖直线,往上走,碰到最近的直线的点和p1点做标注?
那这个不是点和直线的垂线,你之前没有说清楚啦。

可以用ssget自动选择直线,(setq p3 (polar (/ pi 2) 1000000)    (ssget "L" p1 p3 (list (cons 0 "LINE")) )
求得直线的选择集后,求取每根直线的交点,  (setq p2 (inters px py p1 p3 nil))),再求p1到p3的距离:
(setq b1 (cons (setq d1 (distance p1 p2)) b1) 求最小距离,(setq d (car (vo-sort b1 '<)))
(setq p2 (polar  (/ pi 2) d))

然后标注p1和p2的距离即可。

我理解对了没有?
 楼主| 发表于 2013-8-14 14:14 | 显示全部楼层
fl202 发表于 2013-8-13 17:13
这个很简单啊,你的意思是通过p1的竖直线,往上走,碰到最近的直线的点和p1点做标注?
那这个不是点和直线 ...

谢谢提示,我按照你的说明写了下,但是说缺少参数,不知道哪里不对了:
(defun c:fgfg()
  (setvar "CMDECHO" 0)
  (setq os (getvar "OSMODE"))
  (setq        p1        (getpoint "\n请选取点:"))
  (setq p3 (polar (/ pi 2) 1000000))
  (ssget "L" p1 p3 (list (cons 0 "LINE")))
  (setq p2 (inters px py p1 p3 nil))
  (setq b1 (cons (setq d1 (distance p1 p2)) b1))
  (setq d (car (vo-sort b1 '<)))
  (setq p2 (polar  (/ pi 2) d))
  (setvar "osmode" 0)
  (command "_DIMLINEAR" p1 p2 "300" "")
  (setvar "osmode" 16383)
)
发表于 2013-8-15 13:26 | 显示全部楼层
本帖最后由 fl202 于 2013-8-15 13:36 编辑

我真为你捉急。。。

不领你了,我直接给你编写好,调试好,你下载用去吧。


本帖子中包含更多资源

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

x
 楼主| 发表于 2013-8-15 13:45 | 显示全部楼层
fl202 发表于 2013-8-15 13:26
我真为你捉急。。。

不领你了,我直接给你编写好,调试好,你下载用去吧。

谢谢  我试试看
 楼主| 发表于 2013-8-15 14:48 | 显示全部楼层
fl202 发表于 2013-8-15 13:26
我真为你捉急。。。

不领你了,我直接给你编写好,调试好,你下载用去吧。

谢谢你的帮忙,是可以实现这个功能了,但有个小问题就是如果选的点也在一条直线上的时候就标成了0,用什么命令可以排除呢···
发表于 2013-8-15 20:48 | 显示全部楼层
本帖最后由 lht 于 2013-8-15 20:50 编辑

楼主所要的并不是P1垂直直线的最近距离,而是线上与P1同X的点P2到P1的距离,思路:先求已知直线的直线方程,将P1的X代入方程求得P2的Y,P1的Y与P2的Y的差即为P1—P2的距离,或者用(distance P1 P2)求距离。
发表于 2013-8-16 11:48 | 显示全部楼层
start4444 发表于 2013-8-15 14:48
谢谢你的帮忙,是可以实现这个功能了,但有个小问题就是如果选的点也在一条直线上的时候就标成了0,用什么 ...

那很简单啊,加个判断啊!
这种情况你之前没说,我不知道应该怎么办?是不做标注?还是去掉这个p2点,找p1点正上方最近直线距离(但不等于0)的点标注呢?
自己加个判断就行了。
如果是找p1点正上方最近直线距离(但不等于0)的点标注,那么判断d是否=0,如果等于0,取表的第2项为d,再标注即可。

我不给你改程序了。其实你上面的问题都不该问?自己应该都知道怎么解决。
现在我进一步明示了,你能否自己修改程序了呢?
如果不能,我建议你去买本lisp的书,看5遍就知道怎么做了。
 楼主| 发表于 2013-8-16 17:59 | 显示全部楼层
fl202 发表于 2013-8-16 11:48
那很简单啊,加个判断啊!
这种情况你之前没说,我不知道应该怎么办?是不做标注?还是去掉这个p2点,找 ...

好的,谢谢。
发表于 2020-9-16 15:57 | 显示全部楼层

no function definition: ZL-SF-EFF
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 08:21 , Processed in 0.796960 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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