明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1471|回复: 3

[提问] 求助:如何得出多义线直线两端点?

[复制链接]
发表于 2014-6-7 17:29:52 | 显示全部楼层 |阅读模式
(setq pt3 (osnap pt2 "midp"))这个是得出中点
如何得出多义线直线两端点?
  1. (DEFUN C:tt()
  2. (setq nm 0)
  3.          (while   (setq test t)
  4.            (while test
  5.                   (setq ss (entsel "\n请点选矩形:"))
  6.                   (setq test (not ss))
  7.            )
  8. (setvar "cmdecho" 0)
  9. (command "LAYER" "S" (cdr (assoc 8 (entget (car ss)))) "" )
  10. (setq obj (vlax-ename->vla-object (car ss)))
  11. (setq PT2 (vlax-curve-getclosestpointto obj (cadr ss)))
  12. (setq pt3 (osnap pt2 "midp"))
  13. (vla-getboundingbox obj 'minpoint 'maxpoint )
  14. (setq maxpoint (vlax-safearray->list maxpoint)
  15. minpoint (vlax-safearray->list minpoint)
  16. maxpoint (trans maxpoint 0 1)
  17. minpoint (trans minpoint 0 1)
  18. dx (/ (- (car maxpoint) (car minpoint)) 2.0)
  19. dy (/ (- (cadr maxpoint) (cadr minpoint)) 2.0)
  20. mpt1 (list (+ (car minpoint) dx) (+ (cadr minpoint) dy)))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-6-7 19:31:37 | 显示全部楼层
(while (not (setq ss (entsel "\n请点选矩形:"))))
...

偏方:
(setq pta (osnap pt2 "end"))
(setq ptb (mapcar '+ pt3 (mapcar '- pt3 pta)))

请参考 vlax-curve-get*** 函数
发表于 2014-6-7 20:22:00 | 显示全部楼层
(setq pra (vlax-curve-getParamatpoint e (vlax-curve-getClosestPointTo e (trans pt 1 0))))
(setq pt1 (trans (vlax-curve-getPointAtParam e (fix pra)) 0 1))
(setq pt2   (trans (vlax-curve-getPointAtParam e (1+ (fix pra))) 0 1))
pt,pt1,pt2均为UCS坐标
 楼主| 发表于 2014-6-9 08:42:59 | 显示全部楼层
谢谢,非常好.        
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 15:32 , Processed in 0.179234 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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