明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2257|回复: 26

[基础] 鼠标点选P1\P2\P3然后就画图如下图所示的图形。65跟150是固定的。麻烦大神给搞个编码

[复制链接]
发表于 2023-8-14 14:43:12 | 显示全部楼层 |阅读模式
本帖最后由 chq168168 于 2023-8-14 15:11 编辑

鼠标点选P1\P2\P3然后就画图如下图所示的图形。65跟150是固定的。麻烦大神给搞个编码

本帖子中包含更多资源

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

x
发表于 2023-8-14 15:42:29 | 显示全部楼层
  1. (defun c:tt (/ p1 p2 p3 e e1 e11 e2 e22)
  2.   (setq p1 (getpoint "\n指定第一点"))
  3.   (if (not p1)
  4.     (vl-exit-with-value 0)
  5.   )
  6.   (setq p2 (getpoint p1 "\n指定第一点"))
  7.   (if (not p2)
  8.     (vl-exit-with-value 0)
  9.   )
  10.   (setq p3 (getpoint p2 "\n指定第一点"))
  11.   (if (not p3)
  12.     (vl-exit-with-value 0)
  13.   )
  14.   (setq e (Make-LWPOLYLINE (list p1 p2 p3)))
  15.   (vla-Offset (vlax-ename->vla-object e) -65)
  16.   (setq e1 (entlast))
  17.   (vla-Offset (vlax-ename->vla-object e) 65)
  18.   (setq e2 (entlast))
  19.   (if (< (vlax-curve-getDistAtPoint e1 (vlax-curve-getEndPoint e1))
  20.          (vlax-curve-getDistAtPoint e2 (vlax-curve-getEndPoint e2))
  21.       )
  22.     (entdel e2)
  23.     (progn (entdel e1) (setq e1 e2))
  24.   )
  25.   (vla-Offset (vlax-ename->vla-object e) 150)
  26.   (setq e11 (entlast))
  27.   (vla-Offset (vlax-ename->vla-object e) -150)
  28.   (setq e22 (entlast))
  29.   (if (< (vlax-curve-getDistAtPoint e11 (vlax-curve-getEndPoint e11))
  30.          (vlax-curve-getDistAtPoint e22 (vlax-curve-getEndPoint e22))
  31.       )
  32.     (entdel e22)
  33.     (progn (entdel e11) (setq e11 e22))
  34.   )
  35.   (Make-LWPOLYLINE
  36.     (list (vlax-curve-getStartPoint e) (vlax-curve-getStartPoint e11))
  37.   )
  38.   (Make-LWPOLYLINE
  39.     (list (vlax-curve-getEndPoint e) (vlax-curve-getEndPoint e11))
  40.   )
  41. )
  42. ;;167.3 [功能] Entmake点表生成多段线
  43. (defun Make-LWPOLYLINE (lst / PT)
  44.   (entmakeX
  45.     (append
  46.       (list '(0 . "LWPOLYLINE")
  47.             '(100 . "AcDbEntity")
  48.             '(100 . "AcDbPolyline")
  49.             (cons 90 (length lst))
  50.       )
  51.       (mapcar '(lambda (pt) (cons 10 pt)) lst)
  52.     )
  53.   )
  54. )
 楼主| 发表于 2023-8-14 15:49:46 | 显示全部楼层
  1. (setq p1 (getpoint "\n输入沾灰面P1点"))
  2. (setq p2 (getpoint "\n输入沾灰面P2点"))
  3. (setq p3 (getpoint "\n输入沾灰面P3点"))
  4. (setq alf1 (angle p1 p2))
  5. (setq alf2 (angle p3 p2))
  6. (setq pm (polar p1 (+ alf1(* 1.5 pi))65))
  7. (setq p6 (polar p1 (+ alf1(* 1.5 pi))150))
  8. (setq pn (polar p3 (+ alf2(* 0.5 pi))65))
  9. (setq p4 (polar p3 (+ alf2(* 0.5 pi))150))

  10. (setq pp (inters pm (polar pm (angle p1 p2) 1) pn (polar pn (angle p2 p3) 1) nil))
  11. (setq p5 (inters p6 (polar p6 (angle p1 p2) 1) p4 (polar p4 (angle p2 p3) 1) nil))
  12. (command-s "pline" p1 p2 p3 p4 P5  p6 "c")
  13. (command-s "pline" pm  PP pn  "")
  14. (command-S "LINE" P2 P5 "")

liuhe 发表于 2023-8-14 15:42


谢谢大哥,你这个代码能画出来,就是看不懂,我就是初学者,刚开始编写个代码画个图试试,这不遇到了不会求点了。下边是我写的代码,画出来为什么有时候有个边是75,搞不明白。
发表于 2023-8-14 16:01:37 | 显示全部楼层
chq168168 发表于 2023-8-14 15:49
liuhe 发表于 2023-8-14 15:42

(setq p4 (polar p3 (+ alf2(* 0.5 pi))150))
(setq old(getvar 'osmode ))
(setvar 'osmode 0);;;;关闭捕捉
(setq pp (inters pm (polar pm (angle p1 p2) 100) pn (polar pn (angle p2 p3) 100) nil))
(setq p5 (inters p6 (polar p6 (angle p1 p2) 100) p4 (polar p4 (angle p2 p3) 100) nil))
(command-s "pline" p1 p2 p3 p4 P5  p6 "c")
(command-s "pline" pm  PP pn  "")
(command-S "LINE" P2 P5 "")
  (setvar 'osmode old)
发表于 2023-8-14 14:44:24 | 显示全部楼层
神一样的问题。。。
 楼主| 发表于 2023-8-14 14:51:34 | 显示全部楼层
llsheng_73 发表于 2023-8-14 14:44
神一样的问题。。。

大哥有图片的不知道为什么不显示,我又重新传了一个
发表于 2023-8-14 14:54:18 | 显示全部楼层
上源码吧,不知道你要问啥
发表于 2023-8-14 15:04:21 | 显示全部楼层
(setq pp (inters pm (polar pm (angle p1 p2) 1) pn (polar pn (angle p2 p3) 1) nil))
同理求p5
发表于 2023-8-14 15:09:00 | 显示全部楼层
p6p5与p1p2平行,angle可以求出,有polar可以求出p6p5上一点p51;同理可以求出p4p5上一点p52。
于是(inerts p6 p51 p4 p52 nil)求出p5
 楼主| 发表于 2023-8-14 15:13:13 | 显示全部楼层
自贡黄明儒 发表于 2023-8-14 15:09
p6p5与p1p2平行,angle可以求出,有polar可以求出p6p5上一点p51;同理可以求出p4p5上一点p52。
于是(inerts ...

大哥给个碼学习下,自己学着写这个图形的时候开在P5点了

点评

5楼  发表于 2023-8-14 15:16
 楼主| 发表于 2023-8-14 15:29:39 | 显示全部楼层
start4444 发表于 2023-8-14 15:04
(setq pp (inters pm (polar pm (angle p1 p2) 1) pn (polar pn (angle p2 p3) 1) nil))
同理求p5

谢谢大神,搞出来这两个点了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 03:06 , Processed in 0.301638 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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