明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3701|回复: 27

请问怎样以最短的距离连接分布在长方形上的6个点!

  [复制链接]
发表于 2004-10-9 09:19:00 | 显示全部楼层 |阅读模式

请帮帮小弟

怎样用lisp编写一个能解决如下问题的程程序

假设有6个点,任意在一个长方形的4个边上放置,长方形4个角点的坐标已知,6个点的坐标也已知,而且其z坐标相同,想要请问怎样以最短的线延着长方形的边连接这6个点,连线必须是线延着长方形的边布置的,当各点不在同一边上时,要经过一些角点,各点在长方形上的位置是任意摆放的。

这个程序对我来说很重要,麻烦各位大侠费费神,小弟感激不尽!

发表于 2004-10-9 13:20:00 | 显示全部楼层
找到6个点中间隔最大的两点,问题就解决了。
 楼主| 发表于 2004-10-9 13:58:00 | 显示全部楼层
关键是怎么找啊!小弟想了好几天了,都没有想明白啊!谁帮忙编写一个啊!
发表于 2004-10-9 14:02:00 | 显示全部楼层
参考下面函数的用法:


vlax-curve-getDistAtPoint
发表于 2004-10-9 14:04:00 | 显示全部楼层
不明白!这个长方形不就是想要的吗?发个图或图片看看!
发表于 2004-10-9 14:09:00 | 显示全部楼层
我想楼主是想要一个开口的长方形。
 楼主| 发表于 2004-10-9 15:11:00 | 显示全部楼层
6楼的说的很对。
发表于 2004-10-9 15:57:00 | 显示全部楼层
晕,这里又有,希望不要重复发贴,一个问题发一个帖子就够了,不要到处发帖子,
发表于 2004-10-9 16:28:00 | 显示全部楼层
按点顺序直接连起来了,剩下的事情,你自己做做吧
  1. (vl-load-com)
  2. (defun c:test( / ent ptLst i n dist l lMax)
  3.    (setq ent (car (entsel)))
  4.    (repeat 6
  5.        (setq ptLst (append ptLst (list (getpoint "\nPick a point:"))))
  6.    )
  7.    (setq ptLst (mapcar '(lambda(x) (list (vlax-curve-getDistAtPoint ent x) x)) ptLst))
  8.    (setq ptLst (vl-sort ptLst '(lambda (x1 x2) (< (car x1) (car x2)))))
  9.    (setq i 1)
  10.    (repeat 5
  11.        (setq dist (append dist (list (- (car (nth i ptLst)) (car (nth (1- i) ptLst))))))
  12.        (setq i (1+ i))
  13.    )
  14.    (setq lMax (apply 'max dist))
  15.    
  16.    (setq l (+ (caar ptLst) (- (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (car (last ptLst)))))
  17.    (if (> lMax l)
  18.        (progn
  19.            (setq n (vl-position lMax dist))
  20.            (repeat (1+ n)
  21.   (setq ptLst (reverse (cons (car ptLst) (reverse (cdr ptLst)))))
  22.            )
  23.        )
  24.    )
  25.    (command "_.pline")
  26.    (mapcar 'command (mapcar 'cadr ptLst))
  27.    (command "")
  28. )
 楼主| 发表于 2004-10-9 16:55:00 | 显示全部楼层
6个点的坐标是已知的,不需要输入!上面有程序对我来说有点高深了,不太懂!不过不是要谢谢各位朋友的回帖。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 12:20 , Processed in 0.163904 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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