明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: huayingjie

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

  [复制链接]
发表于 2004-10-9 17:06:00 | 显示全部楼层
你把ptLst 换成(setq ptLst (list pt1 pt2 pt3 pt4 pt5 pt6));pt1-pt6就是你的6个点 把这句去掉 (repeat 6
(setq ptLst (append ptLst (list (getpoint "\nPick a point:"))))
)
 楼主| 发表于 2004-10-9 17:20:00 | 显示全部楼层
我试着运行了一下出现以下错误提示:错误: 无法获取 ObjectID,不知道这是怎么回事!
发表于 2004-10-9 17:31:00 | 显示全部楼层
你是什么版本的CAD?不应该出现这样的错误啊...


你把改过的你的程序贴出来看看
 楼主| 发表于 2004-10-9 18:27:00 | 显示全部楼层
我的cad是2002,以下是我改过的程序,其实这程序我有点看不太懂! (vl-load-com)
(defun c:test( / ent ptLst i n dist l lMax)
(setq ent (car (entsel)))
(setq ptLst (list pt1 pt2 pt3 pt4 pt5 pt6))
(setq ptLst (mapcar '(lambda(x) (list (vlax-curve-getDistAtPoint ent x) x)) ptLst))
(setq ptLst (vl-sort ptLst '(lambda (x1 x2) (< (car x1) (car x2)))))
(setq i 1)
(repeat 5
(setq dist (append dist (list (- (car (nth i ptLst)) (car (nth (1- i) ptLst))))))
(setq i (1+ i))
)
(setq lMax (apply 'max dist))

(setq l (+ (caar ptLst) (- (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (car (last ptLst)))))
(if (> lMax l)
(progn
(setq n (vl-position lMax dist))
(repeat (1+ n)
(setq ptLst (reverse (cons (car ptLst) (reverse (cdr ptLst)))))
)
)
)
(command "_.pline")
(mapcar 'command (mapcar 'cadr ptLst))
(command "")
)
发表于 2004-10-10 08:17:00 | 显示全部楼层
pt1-pt6要赋值才可以使用,


你的错误是没有选择对象,我程序开始会要你选择一个对象,你却没选择,当然出错了.


这个对象是你的已知4个角点组成的PLINE的矩形对象
 楼主| 发表于 2004-10-11 12:57:00 | 显示全部楼层
PLINE的矩形对象是用rectang 命令绘制的行不行啊!还得必须用pline命令绘制啊?
发表于 2004-10-11 13:27:00 | 显示全部楼层
可以
 楼主| 发表于 2004-10-11 15:17:00 | 显示全部楼层
我刚才运行了一下,看到了在空间的连线,但我的意思是这些线的连接不能走中间,只能延着长方形的边走。麻烦看看有没有办法。谢谢!
发表于 2004-10-11 15:27:00 | 显示全部楼层
看看我9楼的那句话......
 楼主| 发表于 2004-10-11 16:05:00 | 显示全部楼层
难道真是没有办法可想吗!我把我用你程序连的CAD图发到你信箱去了,麻烦你再看一下吧。!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 13:54 , Processed in 0.174179 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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