明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 955|回复: 3

请教获取第三点计算优化

[复制链接]
发表于 2022-2-16 19:30:36 | 显示全部楼层 |阅读模式
指定第1,2点后,自动计算生成第三点,以下是比较繁琐的计算表达,请高手指点下如何精简(defun c:tt ()
  (setq p1 (getpoint "\n指定第一点:"))
  (setq p3 (getpoint p1 "\n指定第二点:"))
  (setq x1 (car p1))
  (setq y1 (cadr p1))
  (setq x3 (car p3))
  (setq y3 (cadr p3))
  (setq p2 (list x3 y1))
  (setq p4 (list x1 y3))
  (setq x5 (+ x1 (* 0.15 (- x3 x1))))
  (setq y5 (+ y1 (* 0.85 (- y3 y1))))
  (setq p5 (list x5 y5));;得到第三点
  (command "pline" p1 "w" "0" "0" p5 p3 "")


)
发表于 2022-2-17 13:08:52 | 显示全部楼层
来个复杂的
  1. (setq p5(mapcar '+ p1 (mapcar '* (mapcar '- p3 p1) '(0.15 0.85))))
发表于 2022-2-17 13:14:53 | 显示全部楼层
  1. (defun c:tt (/ p1 p3 p5)
  2.   (setq p1 (getpoint "\n指定第一点:"))
  3.   (setq p3 (getcorner p1 "\n指定对角点:"))
  4.   (setq p5(mapcar '+ p1 (mapcar '* (mapcar '- p3 p1) '(0.15 0.85))))
  5.   (command "pline" "non" p1 "w" "0" "0" "non" p5 "non" p3 "")
  6.   (princ)
  7. )
发表于 2022-2-18 15:42:48 | 显示全部楼层
本帖最后由 e2002 于 2022-2-18 15:45 编辑

看这代码,估计是要画一个表示开洞口的线吧?
矩形:(p1,p2,p3,p4);
开洞标示线:(p1,p5,p3);

既然p5的位置算法: 015* dx(p1,p3),0.85*dy(p1,p3) ,仅仅与 p1,p3相关,那么不需要计算p2,p4。
另外还要考虑到 Z 坐标,如果 p1 , p3 并不是同一个UCS_Z, 上面代码的结果估计不是你想要的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 13:51 , Processed in 0.186464 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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