明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3010|回复: 19

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

[复制链接]
发表于 2013-4-27 16:14 | 显示全部楼层 |阅读模式
本帖最后由 start4444 于 2013-8-13 11:29 编辑

更新下说明,期待高手出手,如下图,已知黄色直线n条,用鼠标点选p1、p2、p3,自动标出选点到最近直线的垂直距离 ,求帮助,谢谢。



本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-9-16 15:57 | 显示全部楼层

no function definition: ZL-SF-EFF
发表于 2013-4-27 16:52 | 显示全部楼层
1 作一点竖线
2 沿这条竖线选择到与p2相交的那条线
3 求得交点p2
 楼主| 发表于 2013-4-27 17:01 | 显示全部楼层
自贡黄明儒 发表于 2013-4-27 16:52
1 作一点竖线
2 沿这条竖线选择到与p2相交的那条线
3 求得交点p2

谢谢,但是过程没有选中已知的直线的,不知道怎么求得那个p2点
发表于 2013-4-27 20:52 | 显示全部楼层
那就選中那條直線.!! 選屏幕對角內的圖元物件.來取得直線.!!
 楼主| 发表于 2013-4-28 12:48 | 显示全部楼层
shenhung 发表于 2013-4-27 20:52
那就選中那條直線.!! 選屏幕對角內的圖元物件.來取得直線.!!

能不能直接用最近直线的指令,就像延伸命令两次空格那种,望高手出手
 楼主| 发表于 2013-4-28 21:30 | 显示全部楼层
没人帮忙啊  ··· 继续求助
发表于 2013-4-29 00:37 来自手机 | 显示全部楼层
我的思路 由p1和线段起终点求面积 以线段的正投影为高 即可求p1p2长 再作图
发表于 2013-4-29 07:46 | 显示全部楼层
  1. (vl-load-com)
  2. ;;;=================================================================*
  3. ;;;功能:计算曲线对象上指定x值的坐标                                *
  4. ;;;参数:EN -----线条对象图元名称。                                 *
  5. ;;;       X -----预查找点位的x值。                                  *
  6. ;;;返回:如果成功,返回坐标值;否则返回nil                          *
  7. ;;;思路:使用二分法                                                 *
  8. ;;;注意:线对象如果有多点符合条件,函数只返回一个。                 *
  9. (defun zl-en-getpoint-atx (en x / fun01 DIST_TMP LEN OBJ X)
  10.     ;;定义函数(变量为曲线上距起点的长度)
  11.     (defun fun01 (dist_tmp)
  12.         (- x
  13.            (car (vlax-curve-getPointAtDist obj dist_tmp))
  14.         )
  15.     )
  16.     ;;转换对象类型
  17.     (setq obj (vlax-ename->vla-object en))
  18.     ;;总长度
  19.     (setq len (vlax-curve-getDistAtParam
  20.                   obj
  21.                   (vlax-curve-getEndParam obj)
  22.               )
  23.     )
  24.     ;;如果找到,则返回坐标
  25.     (if        (setq dist_tmp (zl-sf-eff 'fun01 0.0 len 1e-4))
  26.         (vlax-curve-getPointAtDist obj dist_tmp)
  27.     )
  28. )
  29. ;;;=================================================================*
  30. ;|;;
  31. ;;;测试
  32. (defun c:tt ()
  33.     (if        (and (setq ss (entsel "\n点取多段线: "))
  34.              (setq pt (getpoint "\n点取查询的x位置: "))
  35.              (setq pt1 (zl-en-getpoint-atx (car ss) (car pt)))
  36.         )
  37.         (progn
  38.             (command "_.line" "non" pt "non" pt1 "")
  39.         )
  40.     )
  41. )
  42. ;;|;
  43. ;;;=================================================================*
  44. ;|;;
  45. (DEFUN XTP1 (S1 S2 X / ZH1 Y Z)
  46.     (SETQ ZH1 (VLA-ADDLINE
  47.                   (VLA-GET-MODELSPACE
  48.                       (VLA-GET-ACTIVEDOCUMENT
  49.                           (VLAX-GET-ACAD-OBJECT)
  50.                       )
  51.                   )
  52.                   (VLAX-3D-POINT (TRANS (LIST X 0 0) 1 0))
  53.                   (VLAX-3D-POINT (TRANS (LIST X 1 0) 1 0))
  54.               )
  55.     )
  56.     (SETQ Y (XTZ S1 ZH1)
  57.           Z (XTZ S2 ZH1)
  58.     )
  59.     (VLA-DELETE ZH1)
  60.     (- Y Z)
  61. )
  62. (DEFUN XTZ (S1 S2 / SD1 SDZ)
  63.     (SETQ SD1 (VLAX-VARIANT-VALUE
  64.                   (VLA-INTERSECTWITH
  65.                       S1
  66.                       S2
  67.                       ACEXTENDOTHERENTITY
  68.                   )
  69.               )
  70.     )
  71.     (IF        (>= (VLAX-SAFEARRAY-GET-U-BOUND SD1 1) 2)
  72.         (PROGN
  73.             (SETQ SDZ (LIST (VLAX-SAFEARRAY-GET-ELEMENT SD1 0)
  74.                             (VLAX-SAFEARRAY-GET-ELEMENT SD1 1)
  75.                             (VLAX-SAFEARRAY-GET-ELEMENT SD1 2)
  76.                       )
  77.             )
  78.             (CADR (TRANS SDZ 0 1))
  79.         )
  80.     )
  81. )
  82. ;;|;
发表于 2013-4-29 08:28 | 显示全部楼层
这个也用不着编个程,画条直线上去就好了
发表于 2013-7-23 17:20 | 显示全部楼层
你们搞得好复杂。。。

取得直线的端点px和止点py,得到直线的角度ang1, (setq ang1 (angle px py)),  (setq p3 (polar p1 (+ ang1 (* 0.5 pi ) ) 100 )
inters 求px、py 与 p1、 p3 的交点就是p2了。 (setq p2 (inters px py p1 p3 nil)))

求出p2的坐标后。。。

用铅笔和尺在电脑显示器上绘制1条直线,然后用铅笔绘制个标注,然后再cad中输入标注命令,然后用橡皮把铅笔绘制的线擦掉。然后对着电脑高喊一声:保存!

ok。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 06:48 , Processed in 0.225152 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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